c# Hash一致算法负载均衡(KetamaHash)项目升级

其实就是我最近写的一个项目,采用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/KetamaHash.git

 

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 1 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

jason成都

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值