摘要:
Dubbo是一個分布式服務框架锋拖,致力于提供高性能和透明化的RPC遠程服務調(diào)用方案韩肝,以及SOA服務治理方案触菜。簡單的說,dubbo就是個服務框架伞梯,如果沒有分布式的需求玫氢,其實是不需要用的帚屉,只有在分布式的時候谜诫,才有dubbo這樣的分布式服務框架的需求,并且本質上是個服務調(diào)用的東東攻旦,說白了就是個遠程服務調(diào)用的分布式框架(告別Web
Service模式中的WSdl喻旷,以服務者與消費者的方式在dubbo上注冊)
1. Dubbo是什么?
Dubbo是一個分布式服務框架牢屋,致力于提供高性能和透明化的RPC遠程服務調(diào)用方案且预,以及SOA服務治理方案。簡單的說烙无,dubbo就是個服務框架锋谐,如果沒有分布式的需求,其實是不需要用的截酷,只有在分布式的時候涮拗,才有dubbo這樣的分布式服務框架的需求,并且本質上是個服務調(diào)用的東東迂苛,說白了就是個遠程服務調(diào)用的分布式框架(告別Web Service模式中的WSdl三热,以服務者與消費者的方式在dubbo上注冊)
其核心部分包含:
1. 遠程通訊: 提供對多種基于長連接的NIO框架抽象封裝,包括多種線程模型三幻,序列化就漾,以及“請求-響應”模式的信息交換方式。
2. 集群容錯: 提供基于接口方法的透明遠程過程調(diào)用念搬,包括多協(xié)議支持抑堡,以及軟負載均衡摆出,失敗容錯,地址路由首妖,動態(tài)配置等集群支持懊蒸。
3. 自動發(fā)現(xiàn): 基于注冊中心目錄服務,使服務消費方能動態(tài)的查找服務提供方悯搔,使地址透明骑丸,使服務提供方可以平滑增加或減少機器。
2. Dubbo能做什么妒貌?
1.透明化的遠程方法調(diào)用通危,就像調(diào)用本地方法一樣調(diào)用遠程方法,只需簡單配置灌曙,沒有任何API侵入菊碟。
2.軟負載均衡及容錯機制,可在內(nèi)網(wǎng)替代F5等硬件負載均衡器在刺,降低成本逆害,減少單點。
3. 服務自動注冊與發(fā)現(xiàn)蚣驼,不再需要寫死服務提供方地址魄幕,注冊中心基于接口名查詢服務提供者的IP地址,并且能夠平滑添加或刪除服務提供者颖杏。
Dubbo采用全Spring配置方式纯陨,透明化接入應用,對應用沒有任何API侵入留储,只需用Spring加載Dubbo的配置即可翼抠,Dubbo基于Spring的Schema擴展進行加載。
3. dubbo的架構
dubbo架構圖如下所示:
節(jié)點角色說明:
Provider:?暴露服務的服務提供方获讳。
Consumer:?調(diào)用遠程服務的服務消費方阴颖。
Registry:?服務注冊與發(fā)現(xiàn)的注冊中心。
Monitor:?統(tǒng)計服務的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心丐膝。
Container:?服務運行容器量愧。
這點我覺得非常好,角色分明尤误,可以根據(jù)每個節(jié)點角色的狀態(tài)來確定該服務是否正常侠畔。
調(diào)用關系說明:
0 服務容器負責啟動,加載损晤,運行服務提供者软棺。
1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務尤勋。
2. 服務消費者在啟動時喘落,向注冊中心訂閱自己所需的服務茵宪。
3. 注冊中心返回服務提供者地址列表給消費者,如果有變更瘦棋,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者稀火。
4. 服務消費者,從提供者地址列表中赌朋,基于軟負載均衡算法凰狞,選一臺提供者進行調(diào)用,如果調(diào)用失敗沛慢,再選另一臺調(diào)用掂铐。
5. 服務消費者和提供者子库,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間骇窍,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心祥诽。
dubbo的容錯性顯而易見,性能方面還沒有還得及測躺苦,我們系統(tǒng)某頁面需要掉5次接口身腻,本來想建議做個緩存,但業(yè)務關系不能采納匹厘,還需要研究下dubbo的性能調(diào)優(yōu)問題...
4. dubbo使用方法嘀趟。
Dubbo采用全Spring配置方式,透明化接入應用集乔,對應用沒有任何API侵入去件,只需用Spring加載Dubbo的配置即可坡椒,Dubbo基于Spring的Schema擴展進行加載扰路。如果不想使用Spring配置,而希望通過API的方式進行調(diào)用(不推薦)
下面我們一步一步的來剖解dubbo如何使用
請各位持續(xù)關注《跟我學習dubbo-ZooKeeper注冊中心安裝(2)》
核心技術:Maven,Springmvc mybatis shiro, Druid, Restful, Dubbo, ZooKeeper,Redis,FastDFS,ActiveMQ,Nginx
1.? ? 項目核心代碼結構截圖
愿意了解框架技術或者源碼的朋友直接求求交流分享技術:2042849237
分布式的一些解決方案倔叼,有愿意了解的朋友可以找我們團隊探討
更多詳細源碼參考來源:http://minglisoft.cn/technology