




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、湖南滿天星軟件科技有限公司 Dubbo框架,周運祿 2015.07.27,01,02,03,我們期望解決哪些關鍵問題?,Dubbo的基本介紹?,我們?nèi)绾问褂肈ubbo?,目 錄,目錄,我們期望解決哪些關鍵問題?,將服務抽離單獨的服務層 應用層和服務層同時支持集群,應用層和服務層可隨時增加節(jié)點 NIO的服務調(diào)用方式,解決性能問題 監(jiān)控,以應對大并發(fā)阻塞,解決方案的尋覓之路,搜服務調(diào)用,mina,netty,DUBBO,DUBBO是一個分布式服務框架,致力于提供高性能和透明化的RPC遠程服務調(diào)用方案,是阿里巴巴SOA服務化治理方案的核心框架,每天為2,000+個服務提供3,000,000,000+
2、次訪問量支持,并被廣泛應用于阿里巴巴集團的各成員站點。,類似的解決方案,淘寶:HSF (資料不體系,有若干微博) 亞馬遜:Coral (資料不容易找到) 阿里: dubbo (資料也不多,但夠用了) 訪問url:dubbo.io 用戶指南 開發(fā)者指南 管理員指南 培訓文檔,01,02,03,我們期望解決哪些關鍵問題?,Dubbo的基本介紹,我們?nèi)绾问褂肈ubbo?,目 錄,目錄,Dubbo的出現(xiàn)背景,單一應用架構(gòu) (改善增刪改查,ORM 是關鍵) 垂直應用架構(gòu) (加速前端頁面開發(fā),MVC是關鍵) 分布式服務架構(gòu) (分布式服務框架,RPC是關鍵) 流動計算架構(gòu) (提高集群利用率,SOA是關鍵),
3、Dubbo的出現(xiàn)背景,分布式服務架構(gòu)以及流動計算架構(gòu)勢在必行 亟需一個治理系統(tǒng)確保架構(gòu)有條不紊的演進,Dubbo具體解決哪些問題?,當服務越來越多時,服務URL配置管理變得非常困難,F(xiàn)5硬件負載均衡器的單點壓力也越來越大。-動態(tài)注冊與發(fā)現(xiàn)服務,實現(xiàn)軟負載均衡, 服務間依賴關系變得錯蹤復雜,甚至分不清哪個應用要在哪個應用之前啟動,架構(gòu)師都不能完整的描述應用的架構(gòu)關系。-自動勾畫依賴關系,自動加載 服務的調(diào)用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什么時候該加機器?-a,統(tǒng)計調(diào)用量,響應時間。b,動態(tài)調(diào)整權(quán)重,感受一下Dubbo,啟動ZooKeeper(注冊中心) 部署Pr
4、ovider,啟動服務方 部署Consumer,查看調(diào)用方調(diào)用代碼,運行 運行監(jiān)控中心,思考一下?,應用Dubbo的業(yè)務代碼應該分為哪幾個部署包?,DUBBO 的架構(gòu),Dubbo的架構(gòu),節(jié)點角色說明: Provider: 暴露服務的服務提供方。 Consumer: 調(diào)用遠程服務的服務消費方。 Registry: 服務注冊與發(fā)現(xiàn)的注冊中心。 Monitor: 統(tǒng)計服務的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心。 Container: 服務運行容器。,調(diào)用關系說明: 0. 服務容器負責啟動,加載,運行服務提供者。 1. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。 2. 服務消費者在啟動時,向注冊中心訂
5、閱自己所需的服務。 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模塊分包,dubbo-common 公共邏輯模塊,包括Util類和通用模型。 dubbo-remoting 遠程通訊模塊,相當于Dubbo協(xié)議的實現(xiàn),如果RPC用RMI協(xié)議則不需要使用此包。 dubbo-rpc 遠程調(diào)用模塊,抽象各種協(xié)議,以及動態(tài)代理,只包
6、含一對一的調(diào)用,不關心集群的管理。 dubbo-cluster 集群模塊,將多個服務提供方偽裝為一個提供方,包括:負載均衡, 容錯,路由等,集群的地址列表可以是靜態(tài)配置的,也可以是由注冊中心下發(fā)。,dubbo-registry 注冊中心模塊,基于注冊中心下發(fā)地址的集群方式,以及對各種注冊中心的抽象。 dubbo-monitor 監(jiān)控模塊,統(tǒng)計服務調(diào)用次數(shù),調(diào)用時間的,調(diào)用鏈跟蹤的服務。 dubbo-config 配置模塊,是Dubbo對外的API,用戶通過Config使用Dubbo,隱藏Dubbo所有細節(jié)。 dubbo-container 容器模塊,是一個Standlone的容器,以簡單的Ma
7、in加載Spring啟動,因為服務通常不需要Tomcat/JBoss等Web容器的特性,沒必要用Web容器去加載服務。,Dubbo的架構(gòu)特性,(1) 連通性: 注冊中心負責服務地址的注冊與查找,相當于目錄服務,服務提供者和消費者只在啟動時與注冊中心交互,注冊中心不轉(zhuǎn)發(fā)請求,壓力較小。 監(jiān)控中心負責統(tǒng)計各服務調(diào)用次數(shù),調(diào)用時間等,統(tǒng)計先在內(nèi)存匯總后每分鐘一次發(fā)送到監(jiān)控中心服務器,并以報表展示 服務提供者向注冊中心注冊其提供的服務,并匯報調(diào)用時間到監(jiān)控中心,此時間不包含網(wǎng)絡開銷 服務消費者向注冊中心獲取服務提供者地址列表,并根據(jù)負載算法直接調(diào)用提供者,同時匯報調(diào)用時間到監(jiān)控中心,此時間包含網(wǎng)絡開銷
8、 注冊中心,服務提供者,服務消費者三者之間均為長連接,監(jiān)控中心除外 注冊中心通過長連接感知服務提供者的存在,服務提供者宕機,注冊中心將立即推送事件通知消費者 注冊中心和監(jiān)控中心全部宕機,不影響已運行的提供者和消費者,消費者在本地緩存了提供者列表 注冊中心和監(jiān)控中心都是可選的,服務消費者可以直連服務提供者,Dubbo的架構(gòu)特性,(2) 健狀性: 監(jiān)控中心宕掉不影響使用,只是丟失部分采樣數(shù)據(jù) 數(shù)據(jù)庫宕掉后,注冊中心仍能通過緩存提供服務列表查詢,但不能注冊新服務 注冊中心對等集群,任意一臺宕掉后,將自動切換到另一臺 注冊中心全部宕掉后,服務提供者和服務消費者仍能通過本地緩存通訊 服務提供者無狀態(tài),任
9、意一臺宕掉后,不影響使用 服務提供者全部宕掉后,服務消費者應用將無法使用,并無限次重連等待服務提供者恢復,Dubbo的架構(gòu)特性,(3) 伸縮性: 注冊中心為對等集群,可動態(tài)增加機器部署實例,所有客戶端將自動發(fā)現(xiàn)新的注冊中心 服務提供者無狀態(tài),可動態(tài)增加機器部署實例,注冊中心將推送新的服務提供者信息給消費者 (4) 升級性: 當服務集群規(guī)模進一步擴大,帶動IT治理結(jié)構(gòu)進一步升級,需要實現(xiàn)動態(tài)部署,進行流動計算,現(xiàn)有分布式服務架構(gòu)不會帶來阻力,未來Dubbo的架構(gòu)展望,DUBBO 的特性,Dubbo 有哪些特性?,Dubbo采用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需
10、用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴展進行加載。 理論上Dubbo可以只依賴JDK,不依賴于任何三方庫運行(默認依賴:log4j.jar,commons-logging.jar,javassist.jar,spring.jar,netty.jar),Dubbo功能特性,Dubbo的策略特性,注冊中心可配置,監(jiān)控中心,Dubbo的策略特性,通信協(xié)議可配置,NIO 可配置,Dubbo的策略特性,序列化特性,字節(jié)碼操作,Dubbo的策略特性,故障轉(zhuǎn)移機制,負載均衡機制,Dubbo的策略特性,條件路由配置,容器Container可配置,DUBBO 的配置,
11、詳細說明網(wǎng)址:http:/dubbo.io/User+Guide-zh.htm#UserGuide-zh-%E9%85%8D%E7%BD%AE%E5%8F%82%E8%80%83%E6%89%8B%E5%86%8C,配置項按用途分類,服務發(fā)現(xiàn):表示該配置項用于服務的注冊與發(fā)現(xiàn),目的是讓消費方找到提供方。(匹配條件:group,interface,version) 服務治理:表示該配置項用于治理服務間的關系,或為開發(fā)測試提供便利條件。 性能調(diào)優(yōu):表示該配置項用于調(diào)優(yōu)性能,不同的選項對性能會產(chǎn)生影響。,Dubbo配置說明, 服務配置,用于暴露一個服務,定義服務的元信息,一個服務可以用多個協(xié)議暴露,
12、一個服務也可以注冊到多個注冊中心。, 引用配置,用于創(chuàng)建一個遠程服務代理,一個引用可以指向多個注冊中心。, 協(xié)議配置,用于配置提供服務的協(xié)議信息,協(xié)議由提供方指定,消費方被動接受。, 應用配置,用于配置當前應用信息,不管該應用是提供者還是消費者。, 模塊配置,用于配置當前模塊信息,可選。, 模塊配置,用于配置當前模塊信息,可選。, 注冊中心配置,用于配置連接注冊中心相關信息。, 監(jiān)控中心配置,用于配置連接監(jiān)控中心相關信息,可選。, 提供方的缺省值,當ProtocolConfig和ServiceConfig某屬性沒有配置時,采用此缺省值,可選。, 消費方缺省配置,當ReferenceConfig
13、某屬性沒有配置時,采用此缺省值,可選。, 方法配置,用于ServiceConfig和ReferenceConfig指定方法級的配置信息。 用于指定方法參數(shù)配置。,Dubbo配置說明匯總, 服務配置,用于暴露一個服務,定義服務的元信息,一個服務可以用多個協(xié)議暴露,一個服務也可以注冊到多個注冊中心。 引用配置,用于創(chuàng)建一個遠程服務代理,一個引用可以指向多個注冊中心。 協(xié)議配置,用于配置提供服務的協(xié)議信息,協(xié)議由提供方指定,消費方被動接受。 應用配置,用于配置當前應用信息,不管該應用是提供者還是消費者。 模塊配置,用于配置當前模塊信息,可選。 注冊中心配置,用于配置連接注冊中心相關信息。 監(jiān)控中心配
14、置,用于配置連接監(jiān)控中心相關信息,可選。 提供方的缺省值,當ProtocolConfig和ServiceConfig某屬性沒有配置時,采用此缺省值,可選。 消費方缺省配置,當ReferenceConfig某屬性沒有配置時,采用此缺省值,可選。 方法配置,用于ServiceConfig和ReferenceConfig指定方法級的配置信息。 用于指定方法參數(shù)配置。,配置項覆蓋方式,方法級優(yōu)先, 接口級次之, 全局配置再次之。,如果級別一樣,則消費方優(yōu)先,提供方次之。,注解方式配置,注解方式配置,API配置,DUBBO 部分特性詳解,集群容錯,各節(jié)點關系: 這里的Invoker是Provider的一
15、個可調(diào)用Service的抽象,Invoker封裝了Provider地址及Service接口信息。 Directory代表多個Invoker,可以把它看成List,但與List不同的是,它的值可能是動態(tài)變化的,比如注冊中心推送變更。 Cluster將Directory中的多個Invoker偽裝成一個Invoker,對上層透明,偽裝過程包含了容錯邏輯,調(diào)用失敗后,重試另一個。 Router負責從多個Invoker中按路由規(guī)則選出子集,比如讀寫分離,應用隔離等。 LoadBalance負責從多個Invoker中選出具體的一個用于本次調(diào)用,選的過程包含了負載均衡算法,調(diào)用失敗后,需要重選。,集群容錯策
16、略,可以自行擴展集群容錯策略,負載均衡,可以自行擴展負載均衡策略,線程模型,多協(xié)議,不同服務不同協(xié)議 不同服務在性能上適用不同協(xié)議進行傳輸,比如大數(shù)據(jù)用短連接協(xié)議,小數(shù)據(jù)大并發(fā)用長連接協(xié)議。 多協(xié)議暴露服務,可以自行擴展協(xié)議,多注冊中心,(1) 多注冊中心注冊 比如:中文站有些服務來不及在青島部署,只在杭州部署,而青島的其它應用需要引用此服務,就可以將服務同時注冊到兩個注冊中心。 (2) 不同服務使用不同注冊中心 比如:CRM有些服務是專門為國際站設計的,有些服務是專門為中文站設計的。 (3) 多注冊中心引用 比如:CRM需同時調(diào)用中文站和國際站的PC2服務,PC2在中文站和國際站均有部署,接口及版本號都一樣,但連的數(shù)據(jù)庫不一樣。,可以自行擴展注冊中心,服務分組,多版本,思考一下,如何實現(xiàn)不停機升級?,在低壓力時間段,先升級一半提供者為新版本 再將所有消費者升級為新版本 然后將剩下的一半提供者升級為新版本,分組聚合,合并器及合并方法可擴展,參數(shù)驗證,參數(shù)驗證,參數(shù)驗證,結(jié)果緩存,lru 基于最近最少使用原則刪除多余緩存,保持最熱的數(shù)據(jù)被緩存。 threadlocal 當前線程緩存,比如一個頁面渲染,用到很多portal,每個portal都要去查用戶信息,通過線程緩存,可以減少這種多余訪問。 jcache 與JSR107集成,可以橋接各
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 納稅評估工作總結(jié)13篇
- 老年科護理課件教學
- 老年護理就業(yè)前景
- 老年中醫(yī)課件
- 企業(yè)并購中的稅收影響分析與優(yōu)化方案合同
- 廠房股權(quán)轉(zhuǎn)讓與產(chǎn)業(yè)升級改造項目合作協(xié)議
- 成都市房管局監(jiān)證下的住宅產(chǎn)權(quán)交易合同
- 保險責任界定不清風險合同
- 倉庫安全管理員安全生產(chǎn)責任及安全管理培訓合同
- 老人與健康課件
- 2022水庫生態(tài)養(yǎng)魚技術規(guī)范
- 社會醫(yī)學與衛(wèi)生事業(yè)管理測試題(附答案)
- 湖南省2024年普通高校招生本科提前批(藝術類平行組)第一次投檔分數(shù)線
- 基于AR技術的寵物產(chǎn)品設計創(chuàng)新
- 食品安全管理制度示范文本
- 在線處方管理制度
- 中學食堂內(nèi)控制度
- 教師職業(yè)理想信念教育
- T∕CITS 146-2024 尿液有形成分名稱與結(jié)果報告規(guī)范化指南
- 農(nóng)藥經(jīng)營考試題及答案
- 2025年中考安徽物理試題及答案
評論
0/150
提交評論