Dubbo |?d?b??| 是阿里下的一個分布式、高性能、透明化的RPC服務(wù)框架,提供服務(wù)自動注冊、自動發(fā)現(xiàn)等高效服務(wù)治理方案的開源框架。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計,高密網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:高密等地區(qū)。高密做網(wǎng)站價格咨詢:189820811081.1.?RPC需要解決的問題
1.1.1.?通訊問題
主要是通過在客戶端和服務(wù)器之間建立TCP連接,遠(yuǎn)程過程調(diào)用的所有交換的數(shù)據(jù)都在這個連接里傳輸。連接可以是按需連接,調(diào)用結(jié)束后就斷掉,也可以是長連接,多個遠(yuǎn)程過程調(diào)用共享同一個連接。
1.1.2.?尋址問題
A服務(wù)器上的應(yīng)用怎么告訴底層的RPC框架,如何連接到B服務(wù)器(如主機(jī)或IP地址)以及特定的端口,方法的名稱是什么,這樣才能完成調(diào)用。比如基于Web服務(wù)協(xié)議棧的RPC,就要提供一個endpoint URI,或者是從UDDI服務(wù)上查找。如果是RMI調(diào)用的話,還需要一個RMI Registry來注冊服務(wù)的地址。
1.1.3.?序列化與反序列化
當(dāng)A服務(wù)器上的應(yīng)用發(fā)起遠(yuǎn)程過程調(diào)用時,方法的參數(shù)需要通過底層的網(wǎng)絡(luò)協(xié)議如TCP傳遞到B服務(wù)器,由于網(wǎng)絡(luò)協(xié)議是基于二進(jìn)制的,內(nèi)存中的參數(shù)的值要序列化成二進(jìn)制的形式,也就是序列化(Serialize)或編組(marshal),通過尋址和傳輸將序列化的二進(jìn)制發(fā)送給B服務(wù)器。
同理,B服務(wù)器接收參數(shù)要將參數(shù)反序列化。B服務(wù)器應(yīng)用調(diào)用自己的方法處理后返回的結(jié)果也要序列化給A服務(wù)器,A服務(wù)器接收也要經(jīng)過反序列化的過程。
2.2.?Dubbo注冊中心
? Multicast注冊中心
??Zookeeper注冊中心
? Redis注冊中心
? Simple注冊中心
2.3.?協(xié)議
Dubbo缺省協(xié)議采用單一長連接和NIO異步通訊,適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用,以及服務(wù)消費(fèi)者機(jī)器數(shù)遠(yuǎn)大于服務(wù)提供者機(jī)器數(shù)的情況。
URL格式:
dubbo://username:password@host:port/path?key=value&key=value
? 透明化的遠(yuǎn)程方法調(diào)用,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置,沒有任何API侵入。
? 軟負(fù)載均衡及容錯機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器,降低成本,減少單點(diǎn)。
? 服務(wù)自動注冊與發(fā)現(xiàn),不再需要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,并且能夠平滑添加或刪除服務(wù)提供者。
? 服務(wù)接口監(jiān)控與治理
Dubbo-admin與Dubbo-monitor提供了完善的服務(wù)接口管理與監(jiān)控功能,針對不同應(yīng)用的不同接口,可以進(jìn)行 多版本,多協(xié)議,多注冊中心管理。
4.1.?在Provider上盡量多配置Consumer端屬性
? timeout 方法調(diào)用超時
? retries 失敗重試次數(shù),缺省是2(表示加上第一次調(diào)用,會調(diào)用3次)
? loadbalance 負(fù)載均衡算法(有多個Provider時,如何挑選Provider調(diào)用),缺省是隨機(jī)(random)。還可以有輪詢(roundrobin)、最不活躍優(yōu)先(leastactive,指從Consumer端并發(fā)調(diào)用最好的Provider,可以減少的反應(yīng)慢的Provider的調(diào)用,因為反應(yīng)更容易累積并發(fā)的調(diào)用)
? actives 消費(fèi)者端,大并發(fā)調(diào)用限制,即當(dāng)Consumer對一個服務(wù)的并發(fā)調(diào)用到上限后,新調(diào)用會Wait直到超時。 在方法上配置(dubbo:method)則并發(fā)限制針對方法,在接口上配置(dubbo:service),則并發(fā)限制針對服務(wù)。
4.2.?Provider上配置合理的Provider端屬性
? threads 服務(wù)線程池大小
? executes 一個服務(wù)提供者并行執(zhí)行請求上限,即當(dāng)Provider對一個服務(wù)的并發(fā)調(diào)用到上限后,新調(diào)用會Wait(Consumer可能到超時)。在方法上配置(dubbo:method )則并發(fā)限制針對方法,在接口上配置(dubbo:service),則并發(fā)限制針對服務(wù)。
4.3.?配置上Dubbo緩存文件
提供者列表緩存文件
4.4.?配置優(yōu)先級
? 方法級優(yōu)先,接口級次之,全局配置再次之。
? 如果級別一樣,則消費(fèi)方優(yōu)先,提供方次之。
4.5.?推薦XML配置
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
1、接口盡可能大粒度,接口中的方法不要以業(yè)務(wù)流程來,這個流程盡量在方法邏輯中調(diào)用,接口應(yīng)代表一個完整的功能對外提供;
2、接口應(yīng)以業(yè)務(wù)為單位,業(yè)務(wù)相近的進(jìn)行抽象,避免接口數(shù)量爆炸
3、參數(shù)先做校驗,在傳入接口。
4、要做到在設(shè)計接口時,已經(jīng)確定這個接口職責(zé)、預(yù)測調(diào)用頻率
1、啟動檢查
在啟動某服務(wù)時,先檢查該服務(wù)所依賴的服務(wù)是否可用,不可用則拋出異常,以便上線時,能及早發(fā)現(xiàn)問題,默認(rèn)check=“true”;
2、負(fù)載均衡
針對某一方法在db管控臺進(jìn)行配置
負(fù)載算法:隨機(jī)(Random LoadBalance)、輪循(RoundRobin)、最少活躍調(diào)用數(shù)(LeastActive ,越活躍接收請求的概率越大)、一致性hash(ConsistentHash )
3、線程模型:threadpool threads
大線程數(shù)計算方式 ulimit -u命令計算服務(wù)器可執(zhí)行大線程數(shù)
4、只訂閱
只訂閱服務(wù),自己不注冊,例如該服務(wù)正在測試,先不能向zk中注冊避免其他服務(wù)調(diào)用它報錯
5、只注冊
只注冊服務(wù),不訂閱;應(yīng)用在集群中該服務(wù)器上無該服務(wù)需要調(diào)用的服務(wù),就讓他只注冊,指定調(diào)用其它服務(wù)器上的可用服務(wù)
讀者福利
加微信:haolagui521備注51CTO領(lǐng)取附送學(xué)習(xí)進(jìn)階架構(gòu)資料、PDF書籍文檔、面試資料
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。