分布式框架Doubbo(入门级)
1、什么是Doubbo
Dubbo是一個分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。簡單的說,dubbo就是個服務(wù)框架,如果沒有分布式的需求,其實是不需要用的,只有在分布式的時候,才有dubbo這樣的分布式服務(wù)框架的需求,并且本質(zhì)上是個服務(wù)調(diào)用的東東,說白了就是個遠(yuǎn)程服務(wù)調(diào)用的分布式框架(告別Web Service模式中的WSdl,以服務(wù)者與消費者的方式在dubbo上注冊)
Apache Dubbo |?d?b??| 提供了六大核心能力:面向接口代理的高性能RPC調(diào)用,智能容錯和負(fù)載均衡,服務(wù)自動注冊和發(fā)現(xiàn),高度可擴(kuò)展能力,運行期流量調(diào)度,可視化的服務(wù)治理與運維。
Dubbo 架構(gòu)
節(jié)點角色說明
| Provider | 暴露服務(wù)的服務(wù)提供方 |
| Consumer | 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費方 |
| Registry | 服務(wù)注冊與發(fā)現(xiàn)的注冊中心 |
| Monitor | 統(tǒng)計服務(wù)的調(diào)用次數(shù)和調(diào)用時間的監(jiān)控中心 |
| Container | 服務(wù)運行容器 |
調(diào)用關(guān)系說明
- 0:服務(wù)容器負(fù)責(zé)啟動,加載,運行服務(wù)提供者。
- 1:服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù)。
- 2:服務(wù)消費者在啟動時,向注冊中心訂閱自己所需的服務(wù)。
- 3:注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。
- 4:服務(wù)消費者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。
- 5:服務(wù)消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。
2、Dubbo 架構(gòu)具有以下幾個特點,分別是連通性、健壯性、伸縮性、以及向未來架構(gòu)的升級性
連通性
- 注冊中心負(fù)責(zé)服務(wù)地址的注冊與查找,相當(dāng)于目錄服務(wù),服務(wù)提供者和消費者只在啟動時與注冊中心交互,注冊中心不轉(zhuǎn)發(fā)請求,壓力較小
- 監(jiān)控中心負(fù)責(zé)統(tǒng)計各服務(wù)調(diào)用次數(shù),調(diào)用時間等,統(tǒng)計先在內(nèi)存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務(wù)器,并以報表展示
- 服務(wù)提供者向注冊中心注冊其提供的服務(wù),并匯報調(diào)用時間到監(jiān)控中心,此時間不包含網(wǎng)絡(luò)開銷
- 服務(wù)消費者向注冊中心獲取服務(wù)提供者地址列表,并根據(jù)負(fù)載算法直接調(diào)用提供者,同時匯報調(diào)用時間到監(jiān)控中心,此時間包含網(wǎng)絡(luò)開銷
- 注冊中心,服務(wù)提供者,服務(wù)消費者三者之間均為長連接,監(jiān)控中心除外
- 注冊中心通過長連接感知服務(wù)提供者的存在,服務(wù)提供者宕機(jī),注冊中心將立即推送事件通知消費者
- 注冊中心和監(jiān)控中心全部宕機(jī),不影響已運行的提供者和消費者,消費者在本地緩存了提供者列表
- 注冊中心和監(jiān)控中心都是可選的,服務(wù)消費者可以直連服務(wù)提供者
健壯性
- 監(jiān)控中心宕掉不影響使用,只是丟失部分采樣數(shù)據(jù)
- 數(shù)據(jù)庫宕掉后,注冊中心仍能通過緩存提供服務(wù)列表查詢,但不能注冊新服務(wù)
- 注冊中心對等集群,任意一臺宕掉后,將自動切換到另一臺
- 注冊中心全部宕掉后,服務(wù)提供者和服務(wù)消費者仍能通過本地緩存通訊
- 服務(wù)提供者無狀態(tài),任意一臺宕掉后,不影響使用
- 服務(wù)提供者全部宕掉后,服務(wù)消費者應(yīng)用將無法使用,并無限次重連等待服務(wù)提供者恢復(fù)
伸縮性
- 注冊中心為對等集群,可動態(tài)增加機(jī)器部署實例,所有客戶端將自動發(fā)現(xiàn)新的注冊中心
- 服務(wù)提供者無狀態(tài),可動態(tài)增加機(jī)器部署實例,注冊中心將推送新的服務(wù)提供者信息給消費者
升級性
當(dāng)服務(wù)集群規(guī)模進(jìn)一步擴(kuò)大,帶動IT治理結(jié)構(gòu)進(jìn)一步升級,需要實現(xiàn)動態(tài)部署,進(jìn)行流動計算,現(xiàn)有分布式服務(wù)架構(gòu)不會帶來阻力。下圖是未來可能的一種架構(gòu):
節(jié)點角色說明
| Deployer | 自動部署服務(wù)的本地代理 |
| Repository | 倉庫用于存儲服務(wù)應(yīng)用發(fā)布包 |
| Scheduler | 調(diào)度中心基于訪問壓力自動增減服務(wù)提供者 |
| Admin | 統(tǒng)一管理控制臺 |
| Registry | 服務(wù)注冊與發(fā)現(xiàn)的注冊中心 |
| Monitor | 統(tǒng)計服務(wù)的調(diào)用次數(shù)和調(diào)用時間的監(jiān)控中心 |
兩道經(jīng)典面試題
Dubbo 和 Spring Cloud 有什么區(qū)別
兩個沒關(guān)聯(lián),如果硬要說區(qū)別,有以下幾點。
1)通信方式不同
Dubbo 使用的是 RPC 通信,而 Spring Cloud 使用的是 HTTP RESTFul 方式。
2)組成部分不同
Dubbo默認(rèn)使用什么注冊中心,還有別的選擇嗎?
推薦使用 Zookeeper 作為注冊中心,還有 Redis、Multicast、Simple 注冊中心,但不推薦。
Dubbo有哪幾種配置方式?
1)Spring 配置方式
2)Java API 配置方式
總結(jié)
以上是生活随笔為你收集整理的分布式框架Doubbo(入门级)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众号手机端PC端多客服系统
- 下一篇: 2020高压电工考试题库及高压电工模拟考