c# Hash一致算法项目升级

其实就是我最近写的一个项目,采用Hash一致满足负载均衡。Hash一致环带虚拟节点。

在前面的博文中说明了我采用的方法,MurmurHash+红黑树(底层其实是sortedlist).经过多次测试结合的。

但是最近2天研究测试,发现是我没有理解红黑树(其实最慢的是返回当前Key右侧最近的节点)。我的方法实现有问题,造成了整个方法慢。现在找到了方法能够快速返回,并且查找也快。

所以对红黑树扩展了方法TialNode方法来满足Hash一致负载均衡。(该方法是建立在红黑树的特点上)。所以移除了底层的sortedlist.重新恢复使用红黑树。

也就是说现在的Hash一致负载均衡完全使用MurmurHash+红黑树。

另外一个问题,我提供了TailMap方法,返回所有大于Key的节点。现在的方法是先搜索到一个节点大于Key,然后以此节点为基础,遍历后面的所有字节点,开辟2个线程,分别遍历左侧和右侧。但是遗憾的是速度慢,至少我是不满意的。

   所以我希望有理解红黑树的网友能够帮我优化TailMap方法,找到更加合适的。

当前项目已经更新了。我的笔记本测试,100个真实节点,每个节点160个虚拟节点,10万次测试速度不到1秒。百万次测试速度在4秒左右完成。项目中有测试代码可以直接跑。

项目地址:

https://github.com/jinyuttt/LoadBalanceHash.git
---------------------
作者:jason成都
来源:CSDN
原文:https://blog.csdn.net/jinyuttt/article/details/85161088
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自www.cnblogs.com/jinyu20180311/p/10159540.html