博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
试了一下一致性哈希(consistent hashing)
阅读量:6262 次
发布时间:2019-06-22

本文共 606 字,大约阅读时间需要 2 分钟。

普通的一致性哈希(consistent hashing)是这样,在哈希环上为client顺时针选取最近一个server:

 

普通一致性哈希

 

 

 

在某个paper上看到一种变形,具体哪个paper忘了,它是这么做的,就是选取前后两个server,每个client对应两个server,而不是一个:

 

一直哈希变形1

 

 

 

为了写代码方便,最后实现的是这种:

 

最后实现的

 

 

为一个client配两个server,是为了提高可用性,万一连一个连不上,可以连第二个。

 

 

一开始还担心分布不均衡,不过试了一下,最后效果还比较满意,挺均衡的。

 

 

用了之后明显感受到以下好处:

 

  • 多个独立进程可以得到相同的哈希结果。
  • server的CPU负载更轻,因为缓存命中率高了。
  • server对后端存储压力减小,减少很多重复读取。
  • 定位问题更容易,因为可以确定client上的东西 会分布到哪两个server上。

 

 

有一点注意的是,最好不要使用随机生成的ID作为key哈希,而使用相对比较固定的,比如IP,或者IP+端口这些。可以让集群的数据和负载分布保持稳定。不然,随机生成的ID一变,可能就会有比较大的波动,造成负载高或是对后端存储压力高。

文章来源:http://blog.csdn.net/yanghehong/article/details/6171503

转载于:https://www.cnblogs.com/pingping/archive/2011/10/13/2210015.html

你可能感兴趣的文章
Windows下Apache的优化
查看>>
PHP 实现小偷程序
查看>>
【BZOJ4800】 [Ceoi2015]Ice Hockey World Championship
查看>>
第20讲 | 区块链项目详解:比特股BTS
查看>>
Chrome不安装插件实现页面长截图
查看>>
二分模板
查看>>
向txt文件追加异常日志
查看>>
MySql常用函数数学函数、加密函数等(转—收藏)
查看>>
CodeForces 797D Broken BST
查看>>
HDU 4089 Activation
查看>>
对MSRA-USTC 2011的 meng-meng(萌萌) 的team project的学习和评价
查看>>
COM逐步教程
查看>>
数据库改名系列(数据库名,逻辑名,物理文件名)
查看>>
新大陆。。?
查看>>
PING 命令中的TIL值
查看>>
U3D内存优化
查看>>
树的数据生成器
查看>>
Java进阶篇设计模式之二 ----- 工厂模式
查看>>
BZOJ1103 [POI2007]大都市
查看>>
cookies和session区别
查看>>