sofa-rpc負載均衡之一致性Hash算法分析(ConsistentHash)

一致性Hash和有權重的輪詢是較爲複雜的。不只sofa-rpc中有,dubbo中也有,不過dubbo中實現的更復雜。算法

一致性Hash的目的與輪詢是不同的:一致性Hash指望一樣的參數,則調用同一個服務提供者,即便在服務提供者們有變更(某些服務提供者掛了或者是動態的新增了服務提供者)的狀況,波動也很小,因此實現時要考慮虛擬節點;輪詢是循環調用服務提供者。ide

 

                    圖1 sofa-rpc中的一致性Hash實現類ConsistentHashLoadBalancer的類繼承圖繼承

    說明:sofa-rpc中ConsistentHashLocadBalancer的doSelect(SofaRequest,List<ProviderInfo>)是算法實現的關鍵rpc

                        圖2 Dubbo中一致性Hash實現類ConsistentHashLoadBalancer的類繼承圖io

    說明:Dubbo中ConsistentHashLoadBalance的doSelect(List<Invoker<T>>,URL,Invocation)是算法實現的核心List

相關文章
相關標籤/搜索