java基础---一致性hash算法
是一种分布式系统中的数据分布方式。
将数据散落到一个闭环上,然后将服务器节点均匀放置到这个闭环上,那么每个服务器节点就能够处理它所在范围内的数据点。
考虑数据分布方式的好坏主要考虑三个点:
1. 扩容是否方便
2. 是否存在哈希倾斜
3. 元数据管理起来是否容易。
扩容方面:
一致性hash算法在扩容性上有很好的性能,新增一台服务器的时候不需要重新计算数据点的hash值,新的服务器只要管理它范围内的节点就行了。
哈希倾斜方面:
通过使用虚节点,也就是虚拟的服务器节点,将数据分部切分的更加均匀,这样尽量减少hash倾斜的可能。