用于负载平衡的哈希字符串

mpo*_*ett 0 python string hash load-balancing function

我可以找到大量有关用于混淆或查找表的散列字符串的信息,其中避免冲突是主要问题。我正在尝试组合一个哈希函数以实现负载平衡,其中我希望将一组未知的字符串放入任意少量的具有相对均匀分布的桶中。碰撞是预料之中的(甚至是期望的)。

我的直接用例是应用程序中的负载分配,我希望应用程序的每个实例在半小时的不同时间触发,而不需要有关其他实例的任何状态信息。所以我尝试将字符串哈希为 0 到 29 之间的整数值。但是,一般方法具有更广泛的应用,不同的 int 范围用于不同的目的。

任何人都可以提出建议,或者向我指出涵盖哈希生成这个小角落的文档吗?

我选择的语言是 python,但我可以阅读最常见的语言,所以任何东西都应该适用。

use*_*028 5

您可能会考虑一些简单的东西,例如 adler32() 算法,并且只需对存储桶大小进行 mod 即可。

import zlib

buf = 'arbitrary and unknown string'

bucket = zlib.adler32(buf) % 30

# at this point bucket is in the range 0 - 29
Run Code Online (Sandbox Code Playgroud)