- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一致性哈希应用于负载均衡的一致性哈希及java实现
应用于负载均衡的一致性哈希及java实现这几天看了几遍一致性哈希的文章,但是都没有比较完整的实现,因此试着实现了一下,这里我就不讲一致性哈希的原理了,网上很多,以一致性哈希用在负载均衡的实例来说,一致性哈希就是先把主机ip从小大到全部放到一个环内,然后客户端ip来连接的时候,把客户端ip连接到大小最接近客户端ip且大于客户端ip的主机。当然,这里的ip一般都是要先hash一下的。我的程序运行结果如下:? ??添加客户端,一开始有4个主机,分别为s1,s2,s3,s4,每个主机有100个虚拟主机:101客户端(hash:-3872430075274208315)连接到主机-s2-102客户端(hash:-6461488502093916753)连接到主机-s1-103客户端(hash:-3272337528088901176)连接到主机-s3-104客户端(hash:7274050343425899995)连接到主机-s2-105客户端(hash:6218187750346216421)连接到主机-s1-106客户端(hash:-8497989778066313989)连接到主机-s2-107客户端(hash:2219601794372203979)连接到主机-s3-108客户端(hash:1903054837754071260)连接到主机-s3-109客户端(hash:-2425484502654523425)连接到主机-s1-删除主机s2-的变化:hash(-8497989778066313989)改变到-s4-hash(7274050343425899995)改变到-s2-hash(-3872430075274208315)改变到-s4-hash(7274050343425899995)改变到-s1-增加主机s5-的变化:hash(1903054837754071260)改变到-s5-hash(1903054837754071260)改变到-s5-hash(-3272337528088901176)改变到-s5-最后的客户端到主机的映射为:hash(-8497989778066313989)连接到主机-s4-hash(-6461488502093916753)连接到主机-s1-hash(-3872430075274208315)连接到主机-s4-hash(-3272337528088901176)连接到主机-s5-hash(-2425484502654523425)连接到主机-s1-hash(1903054837754071260)连接到主机-s5-hash(2219601794372203979)连接到主机-s3-hash(6218187750346216421)连接到主机-s1-hash(7274050343425899995)连接到主机-s1-看结果可知:一开始添加到9个客户端,连接到主机s1,s2,s3,s4的客户端分别有3,3,3,0个,经过删除主机s2,添加主机s5,最后9个客户端分别连接到主机s1,s2,s3,s4,s5的个数为4,0,1,2,2.这里要说明一下删除主机s2的情况,hash尾号为9995的客户端先连接到s2,再连接到s1,为什么会出现这种情况呢?因为每一个真实主机有n个虚拟主机,删除s2却打印“hash(7274050343425899995)改变到-s2-”是因为删除了s2的其中一个虚拟主机,跳转到另一个虚拟主机,但还是在s2上,当然,这里是打印中间情况,以便了解,真实的环境是删除了s2后,所有他的虚拟节点都会马上被删除,虚拟节点上的连接也会重新连接到另一个主机的虚拟节点,不会存在这种中间情况。以下给出所有的实现代码,大家共同学习:public class ShardNode { // S类封装了机器节点的信息,如name、password、ip、port等static private TreeMapLong, Node nodes; // 虚拟节点到真实节点的映射static private TreeMapLong,Node treeKey; //key到真实节点的映射static private ListNode shards = new ArrayListNode(); // 真实机器节点private final int NODE_NUM = 100; // 每个机器节点关联的虚拟节点个数boolean flag = false;public Shard(ListNode shards) {super();this.shards = shards;init();}public static void main(String[] args) {//System.out.println(
您可能关注的文档
最近下载
- 创业管理第五章组建创业团队.ppt VIP
- 临床护理实践指南.docx
- Day 29【词汇拓展+练习】-35天全面突破高考英语3500考纲核心高频词.docx VIP
- 会计高水平专业群建设方案.docx VIP
- [唐山]动物园景观规划设计方案PPT(完整版).pptx VIP
- 2024第六届(2024年)“信用电力”知识竞赛活动总试题库资料-上(单选题汇总).pdf
- Day 26【词汇拓展+练习】-35天全面突破高考英语3500考纲核心高频词.docx VIP
- 生活垃圾卫生填埋场运行管理方法.docx
- 外研版英语(三起点)四年级上册 Module1 大单元学历案教案 教学设计附作业设计(基于新课标教学评一体化).docx
- [广西]2024年广西遥感中心招聘工作人员笔试历年典型考题及考点剖析附答案详解.docx
文档评论(0)