zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    ES6学习笔记(11)----Proxy
    ES6学习笔记(10)----Set和Map数据结构
    ES6学习笔记(9)----Symbol
    ES6学习笔记(8)----对象的扩展
    ES6学习笔记(6)----函数的扩展
    ES6学习笔记(5)----数值的扩展
    struts2学习之基础笔记1
    前端面试---常见的web安全及防护原理
    前端面试整理笔记一
    id选择器
  • 原文地址:https://www.cnblogs.com/jinyu20180311/p/10458699.html
Copyright © 2011-2022 走看看