關於Dubbo原始碼的研究 一 負載均衡

2021-07-30 08:19:48 字數 1256 閱讀 3258

1.dubbo概述

dubbo是阿里巴巴開源出來的乙個分布式服務框架,致力於提供高效能和透明化的rpc遠端服務呼叫方案,以及作為soa服務治理的方案。它的核心功能包括:

#remoting:遠端通訊基礎,提供對多種nio框架抽象封裝,包括「同步轉非同步」和「請求-響應」模式的資訊交換方式。

#cluster: 服務框架核心,提供基於介面方法的遠端過程呼叫,包括多協議支援,並提供軟負載均衡和容錯機制的集群支援。

#registry: 服務註冊中心,使服務消費方能動態的查詢服務提供方,使位址透明,使服務提供方可以平滑增加或減少機器。

2. dubbo-master的目錄結構

3.dubbo-cluster子工程

其中負載均衡功能就在dubbo-cluster工程中,而該工程的結構如圖:

從名字就可以看出來loadbalance介面為負載均衡的功能,齊實現的結構如下圖:

最終的四個實現為dubbo的四種負載均衡的策略,再其中的抽象實現類中實現了權重的獲取:

protected int 

getweight(invoker> invoker, invocation invocation) }}

return weight;

}

當啟動時間小於預熱時間時,需要減少權重;其他則按照預設給定的權重來算。

4.四種負載均衡策略

一)random

在權重不同時按照權重來隨機分配,如果權重相同按照provider的數量進行隨機分配

二)roundrobin

利用int變數++後的值取餘集群數,達到輪詢的效果

三)leastactive

獲取providers的連線數,篩選出最少連線的provide集合

int leastindexs = new int[length]; 

// 相同最小活躍數的下標

如果只有乙個直接返回,大於乙個使用隨機演算法從該陣列中取

四)consistenthash

hash一致性演算法排程,根據引數計算得到乙個provider

關於nodejs原始碼的研究

很幸運,nodejs被創造出來了。nodejs在js的基礎上,使用v8提供的能力,極大地拓展 豐富了js的能力。尤其是網路和檔案。這樣我就不僅可以使用js,還可以使用網路 檔案等功能。這是我逐漸轉向nodejs方向的原因之一。也是我開始研究nodejs原始碼的原因之一。因為nodejs滿足了我喜好和...

讀dubbo原始碼筆記(一)

首先看extension擴充套件,相當於dubbo最底層核心 如開發者所述 dubbo的擴充套件點載入從jdk標準的spi service provider inte ce 擴充套件點發現機制加強而來。基本上與serviceloader類似 童鞋們,可以先看serviceloader原始碼再來看這個...

Dubbo原始碼分析之一 spring整合之xml

關於dubbo與spring 的整合有倆種方式 xml配置檔案,註解。相關 主要集中在dubbo config spring 包中。xml配置檔案方式的處理 spring 在啟動時,找到dubbo命名空間的處理類。meta inf spring.handlers 內容http public clas...