Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于负载平衡的哈希字符串_Python_String_Function_Hash_Load Balancing - Fatal编程技术网

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

Python 用于负载平衡的哈希字符串,python,string,function,hash,load-balancing,Python,String,Function,Hash,Load Balancing,我可以找到大量关于模糊处理或查找表的哈希字符串的信息,其中冲突避免是一个主要问题。为了负载平衡,我试图组合一个散列函数,其中我想将一组未知字符串放入任意数量的桶中,桶的分布相对均匀。碰撞是预期的(期望的,偶数) 我的直接用例是应用程序中的负载分布,我希望应用程序的每个实例在半小时内的不同时间启动,而不需要关于其他实例的任何状态信息。所以我尝试将字符串散列成0到29之间的整数值。然而,一般方法有更广泛的应用,不同的int范围用于不同的目的 有谁能给我提些建议,或者给我指一些文档,这些文档将涵盖散列

我可以找到大量关于模糊处理或查找表的哈希字符串的信息,其中冲突避免是一个主要问题。为了负载平衡,我试图组合一个散列函数,其中我想将一组未知字符串放入任意数量的桶中,桶的分布相对均匀。碰撞是预期的(期望的,偶数)

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

有谁能给我提些建议,或者给我指一些文档,这些文档将涵盖散列生成的这个小角落


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

你可以考虑一些简单的东西,比如AdLeR32()ALGO,只是用于桶大小的mod。< /P>

import zlib

buf = 'arbitrary and unknown string'

bucket = zlib.adler32(buf) % 30

# at this point bucket is in the range 0 - 29

你可能会考虑一些简单的东西,比如AdLeR32()ALGO,只是桶大小的MOD。

import zlib

buf = 'arbitrary and unknown string'

bucket = zlib.adler32(buf) % 30

# at this point bucket is in the range 0 - 29

只取任意散列函数的模。取任意旧散列函数的模对于均匀分布不是很好。与查找表的哈希非常相似,在某些散列函数中,生成偶数分布比在其他散列函数中效果更好。我很确定我可以提供一个数学证明,除非你对输入有一些额外的了解,否则你不可能比取一个看起来足够随机的散列函数的模做得更好,而输入的统计分布不是足够的额外知识。如果你不能让一个中央服务器处理负载平衡,你可能只想让实例生成随机数来触发次数。这样,恶意构造的输入就不会产生负载尖峰。对古腾堡项目(ProjectGutenberg)的一本书的随机部分进行的一些测试表明,SLaks的想法确实使用Python内置的
散列产生了相当均匀的分布。使用
集合检查它。计数器
。只需取任何哈希函数的模。取任何旧哈希函数的模对于均匀分布都不太有效。与查找表的哈希非常相似,在某些散列函数中,生成偶数分布比在其他散列函数中效果更好。我很确定我可以提供一个数学证明,除非你对输入有一些额外的了解,否则你不可能比取一个看起来足够随机的散列函数的模做得更好,而输入的统计分布不是足够的额外知识。如果你不能让一个中央服务器处理负载平衡,你可能只想让实例生成随机数来触发次数。这样,恶意构造的输入就不会产生负载尖峰。对古腾堡项目(ProjectGutenberg)的一本书的随机部分进行的一些测试表明,SLaks的想法确实使用Python内置的
散列产生了相当均匀的分布。使用
集合计数器查看它。