一致性哈希算法(consistent hashing)例子+测试。 .
我们有两台设备,computer1和computer2,第一次初始化要构建一个2的32次方的环,并往上面放设备。这个环由改进的FNV算法实现。位置也由hash算法确定。
但我们只有两台设备,很明显在环上会分布不均匀(这个就不解释了,网上很多资料)。于是我们每台设备增加10个虚拟设备。
最后分布如下:
-2147483648到2147483647之间是不是比较均匀,这是java的,如果是c#的就是0~2的32次方。我们hash计算出KEY值为2049553054,然后顺时针找到最近的位置,即为
2051863688=Hash.Cache@10f11b8结果我们定位到了COMPUTER1
最好我们要看看平衡性如何:取消上面注释的代码,循环20次,得到结果如下:
COMPUTER1
COMPUTER2
COMPUTER1
COMPUTER2
COMPUTER1
COMPUTER2
COMPUTER1
COMPUTER1
COMPUTER1
COMPUTER2
COMPUTER2
COMPUTER2
COMPUTER1
COMPUTER2
COMPUTER1
COMPUTER1
COMPUTER1
COMPUTER2
COMPUTER1
COMPUTER2
大家可以自己取试试,
FNV哈希算法是一种高离散性的哈希算法,特别适用于哈希非常相似的字符串,例如:URL,IP,主机名,文件名等。
以下服务使用了FNV:
1、calc
2、DNS
3、mdbm key/value查询函数
4、数据库索引hash
5、主流web查询/索引引擎
6、高性能email服务
7、基于消息ID查询函数
8、auti-spam反垃圾邮件过滤器
9、NFS实现(比如freebsd 4.3, linux NFS v4)
10、Cohesia MASS project
11、Ada 95的spellchecker
12、开源x86汇编器:flatassembler user-defined symbol hashtree
13、PowerBASIC
14、PS2、XBOX上的文本资源
15、非加密图形文件指纹
16、FRET
17、Symbian DASM
18、VC++ 2005的hash_map实现
19、memcache中的libketama
20、 PHP 5.x
21、twitter中用于改进cache碎片
22、BSD IDE project
23、deliantra game server
24、 Leprechaun
25、IPv6流标签
Java实现一致性哈希算法,并搭建环境测试其负载均衡特性(二) 实现负载均衡是后端领域一个重要的话题,一致性哈希算法是实现服务器负载均衡的方法之一,你很可能已在一些远程服务框架中使用过它。下面我们尝试一下自己实现一致性哈希算法。
相关文章
- 算法系列15天速成——第九天 队列
- Java实现蓝桥杯VIP算法训练 数组逆序排列
- Java实现 蓝桥杯VIP 算法提高 师座操作系统
- Java实现 蓝桥杯 算法提高 上帝造题五分钟
- 【转载】网络编程中 Nagle 算法和 Delayed ACK 的测试
- 一步步教你轻松学关联规则Apriori算法
- (算法)变成1需要的最小步数
- CV之NS之CycleGAN:基于apple2orange数据集利用TF框架的CycleGAN算法实现图像风格迁移/图像转换—训练&测试过程图文教程全记录
- ML之回归预测之Lasso:利用Lasso算法对对红酒品质wine数据集解决回归(实数值评分预测)问题—采用10折交叉验证(测试集error)来评估LassoCV模型
- DL之RNN:人工智能为你写代码——基于TF利用RNN算法实现生成编程语言代码(C++语言)、训练&测试过程全记录
- Interview:算法岗位面试—上海某公司算法岗位(偏机器学习,互联网金融行业)技术面试考点之数据结构相关考察点—斐波那契数列、八皇后问题、两种LCS问题
- Interview之AI:深度学习算法工程师面试之常见专业知识考点(参数初始化策略(Lecun、Xavier/Glorot、Kaiming、基于BN的随机的参数初始化)、图像算法基础(ROI)
- ML之RL:基于MovieLens电影评分数据集利用强化学习算法(多臂老虎机+EpsilonGreedy策略)实现对用户进行Top电影推荐案例
- TF:利用是Softmax回归+GD算法实现MNIST手写数字图片识别(10000张图片测试得到的准确率为92%)
- 信道估计算法误码率仿真,对比不同导频长度,对比不同信道估计算法包括CS-OMP,LS,MMSE
- m低信噪比下GPS信号的捕获算法研究,使用matlab算法进行仿真
- 基于麻雀算法的投影寻踪模型 - 附代码
- 具备自纠正和逐维学习能力的粒子群算法-附代码
- 剑指 Offer 46. 把数字翻译成字符串-dfs力扣最快算法
- 重拾算法(5)——最小生成树的两种算法及其对比测试
- 基于TF-IDF+KMeans聚类算法构建中文文本分类模型(附案例实战)
- (3)YOLOV5算法一之Windows10下yolov5安装测试并训练自己的数据集