1. Dubbo是什么牌柄?
????????Dubbo是一個分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案侧甫,以及SOA服務(wù)治理方案珊佣。
????????簡單的說,dubbo就是個服務(wù)框架披粟,如果沒有分布式的需求咒锻,其實(shí)是不需要用的,只有在分布式的時候守屉,才有dubbo這樣的分布式服務(wù)框架的需求惑艇,并且本質(zhì)上是個服務(wù)調(diào)用的東東,說白了就是個遠(yuǎn)程服務(wù)調(diào)用的分布式框架(告別Web Service模式中的WSdl拇泛,以服務(wù)者與消費(fèi)者的方式在dubbo上注冊)
其核心部分包含:
????????1. 遠(yuǎn)程通訊: 提供對多種基于長連接的NIO框架抽象封裝滨巴,包括多種線程模型,序列化俺叭,以及“請求-響應(yīng)”模式的信息交換方式恭取。
????????2. 集群容錯: 提供基于接口方法的透明遠(yuǎn)程過程調(diào)用,包括多協(xié)議支持熄守,以及軟負(fù)載均衡秽荤,失敗容錯,地址路由柠横,動態(tài)配置等集群支持窃款。
????????3. 自動發(fā)現(xiàn): 基于注冊中心目錄服務(wù),使服務(wù)消費(fèi)方能動態(tài)的查找服務(wù)提供方牍氛,使地址透明晨继,使服務(wù)提供方可以平滑增加或減少機(jī)器。
2. Dubbo能做什么搬俊?
????????1.透明化的遠(yuǎn)程方法調(diào)用紊扬,就像調(diào)用本地方法一樣調(diào)用遠(yuǎn)程方法,只需簡單配置唉擂,沒有任何API侵入餐屎。
????????2.軟負(fù)載均衡及容錯機(jī)制,可在內(nèi)網(wǎng)替代F5等硬件負(fù)載均衡器玩祟,降低成本腹缩,減少單點(diǎn)。
????????3. 服務(wù)自動注冊與發(fā)現(xiàn),不再需要寫死服務(wù)提供方地址藏鹊,注冊中心基于接口名查詢服務(wù)提供者的IP地址润讥,并且能夠平滑添加或刪除服務(wù)提供者。
Dubbo采用全spring配置方式盘寡,透明化接入應(yīng)用楚殿,對應(yīng)用沒有任何API侵入,只需用Spring加載Dubbo的配置即可竿痰,Dubbo基于Spring的Schema擴(kuò)展進(jìn)行加載脆粥。
3. dubbo的架構(gòu)
節(jié)點(diǎn)角色說明:
?????? Provider:?暴露服務(wù)的服務(wù)提供方。
?????? Consumer:?調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方影涉。
?????? Registry:?服務(wù)注冊與發(fā)現(xiàn)的注冊中心变隔。
?????? Monitor:?統(tǒng)計(jì)服務(wù)的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心。
Container:?服務(wù)運(yùn)行容器
這點(diǎn)我覺得非常好常潮,角色分明,可以根據(jù)每個節(jié)點(diǎn)角色的狀態(tài)來確定該服務(wù)是否正常楷力。
調(diào)用關(guān)系說明:
????????0 服務(wù)容器負(fù)責(zé)啟動喊式,加載,運(yùn)行服務(wù)提供者萧朝。
????????1. 服務(wù)提供者在啟動時岔留,向注冊中心注冊自己提供的服務(wù)。
????????2. 服務(wù)消費(fèi)者在啟動時检柬,向注冊中心訂閱自己所需的服務(wù)献联。
????????3. 注冊中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更何址,注冊中心將基于長連接推送變更數(shù)據(jù)給消費(fèi)者里逆。
????????4. 服務(wù)消費(fèi)者,從提供者地址列表中用爪,基于軟負(fù)載均衡算法原押,選一臺提供者進(jìn)行調(diào)用,如果調(diào)用失敗偎血,再選另一臺調(diào)用诸衔。
????????5. 服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時間颇玷,定時每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心笨农。