1. 程式人生 > >c# Hash一致演算法專案升級

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
版權宣告:本文為博主原創文章,轉載請附上博文連結!