《深入淺出Dubbo》由會員分享,可在線閱讀,更多相關《深入淺出Dubbo(27頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、1 湖南智博旭諾科技有限公司版權所有 深入淺出DubboSmart Chow 2 湖南智博旭諾科技有限公司版權所有 AgendaDubbo簡介Dubbo快速入門Dubbo架構設計淺析Dubbo常用配置介紹Dubbo管理工具介紹項目實戰(zhàn)經(jīng)驗 3 湖南智博旭諾科技有限公司版權所有 Dubbo簡介Dubbo是什么?Dubbo是一個分布式服務框架,致力于提供高性能和透明化的RPC遠程服務調(diào)用方案,以及SOA服務治理方案。Dubbo有何特點?遠程通訊:基于長連接的NIO框架抽象封裝集群容錯:提供多協(xié)議支持,以及軟負載均衡,失敗容錯,地址路由,動態(tài)配置等集群支持。 自動發(fā)現(xiàn):基于注冊中心目錄服務,使服務消
2、費方能動態(tài)的查找服務提供方,支持平滑減少或增加機器 4 湖南智博旭諾科技有限公司版權所有 為什么要使用Dubbo?作為產(chǎn)品經(jīng)理,我希望我們的組件高內(nèi)聚,低耦合,產(chǎn)品具有較高的擴展性。能夠像搭積木一樣將組件組裝成一個個項目。作為開發(fā)人員,當我調(diào)用其他的組件服務時,我只需要了解它的API,至于具體實現(xiàn),干我屁事!作為實施人員,我希望有個統(tǒng)一的平臺能夠?qū)ξ覀儼l(fā)布的服務進行監(jiān)控、治理與性能調(diào)優(yōu),不然出了問題我找誰呀?。 5 湖南智博旭諾科技有限公司版權所有 為什么要使用Dubbo?剪掉服務調(diào)用的“蜘蛛網(wǎng)” 6 湖南智博旭諾科技有限公司版權所有 Dubbo Quick Start理論上Dubbo不依賴任
3、何第三方包,基于性能與穩(wěn)定性考慮,缺省依賴以下jar包log4j.jar和commons-logging.jar日志輸出包。javassist.jar 字節(jié)碼生成。spring.jar 配置解析。netty.jar 網(wǎng)絡傳輸。 7 湖南智博旭諾科技有限公司版權所有 Dubbo Quick Start(第一步)定義服務接口: (該接口需單獨打包,在服務提供方和消費方共享)在服務提供方實現(xiàn)接口:(對服務消費方隱藏實現(xiàn)) 8 湖南智博旭諾科技有限公司版權所有 Dubbo Quick Start(第二步)配置服務提供者 9 湖南智博旭諾科技有限公司版權所有 Dubbo Quick Start(第三步)
4、配置服務消費者 10 湖南智博旭諾科技有限公司版權所有 Dubbo架構淺析節(jié)點角色說明Provider: 暴露服務的服務提供方。Consumer: 調(diào)用遠程服務的服務消費方。Registry: 服務注冊與發(fā)現(xiàn)的注冊中心。Container: 服務運行容器。(e.g.)SpringMonitor: 統(tǒng)計服務的調(diào)用次調(diào)和調(diào)用時間的監(jiān)控中心。特性 連通性健壯性伸縮性升級性 11 湖南智博旭諾科技有限公司版權所有 Dubbo架構Overview 12 湖南智博旭諾科技有限公司版權所有 Dubbo常用配置介紹(Overview) 服務配置,用于暴露服務。 引用配置,用于創(chuàng)建一個遠程服務代理 協(xié)議配置,用
5、于配置提供服務的協(xié)議信息,協(xié)議由提供方指定,消費方被動接受。 應用配置,用于配置當前應用信息,不管該應用是提供者還是消費者。 模塊配置,用于配置當前模塊信息,可選。 注冊中心配置,用于配置連接注冊中心相關信息。 監(jiān)控中心配置,用于配置連接監(jiān)控中心相關信息,可選。 提供方的缺省值,當ProtocolConfig和ServiceConfig某屬性沒有配置時,采用此缺省值,可選。 消費方缺省配置,當ReferenceConfig某屬性沒有配置時,采用此缺省值,可選。 方法配置,用于ServiceConfig和ReferenceConfig指定方法級的配置信息。 用于指定方法參數(shù)配置。 13 湖南智博
6、旭諾科技有限公司版權所有 Dubbo常用配置介紹(配置優(yōu)先級)以timeout為例,顯示了配置的查找順序方法級優(yōu)先,接口級次之,全局配置最小如果級別一樣,則消費方優(yōu)先,提供方次之提供方的配置通過URL經(jīng)由注冊中心傳遞給消費方建議服務提供方設置超時 14 湖南智博旭諾科技有限公司版權所有 Dubbo常用配置介紹(服務提供者)配置應用程序名稱配置注冊中心地址(重要) 注冊中心支持以下4種類型 Zookeeper (目前在生產(chǎn)環(huán)境使用,需要安裝zookeeper注冊中心服務)Redis (可用于生產(chǎn))Multicast (缺省配置,只適合測試環(huán)境,不能跨網(wǎng)段)Simple (Only for Tes
7、t) 15 湖南智博旭諾科技有限公司版權所有 Dubbo常用配置介紹(服務提供者)配置通訊協(xié)議(重要) name協(xié)議名稱:默認為dubbo,支持rmi,hessian2,http,ws,thrift,memcached,redisport:暴露服務的端口號。(如何為-1表示隨機產(chǎn)生端口號)serialization :支持dubbo,hessian2,java,json默認為hessian2register:該協(xié)議的服務是否注冊到注冊中心,默認為true Threads服務線程池大小server:協(xié)議的服務端實現(xiàn)類型client:協(xié)議的客戶端實現(xiàn)類型. 16 湖南智博旭諾科技有限公司版權所有
8、Dubbo常用配置介紹(服務提供者)配置需要暴露的服務接口 (重要) 常用可選項有:retries: 默認為2,如果不需要設置重試設為0timeout:超時設置executes:服務器端并發(fā)執(zhí)行(或占用線程數(shù))不超過設置個數(shù)actives: 每客戶端并發(fā)執(zhí)行(或占連接的請求數(shù))不超過設置個數(shù) deprecated:默認為false,如果需要設置服務過時,設置為true,消費者調(diào)用時會打印警告日志。provider:指定provider,值為的id屬性 17 湖南智博旭諾科技有限公司版權所有 Dubbo常用配置介紹(服務消費者)配置應用程序名稱配置注冊中心(重要) 配置遠程服務代理 18 湖南智
9、博旭諾科技有限公司版權所有 Dubbo管理工具-zookeeper介紹Zookeeper為新華現(xiàn)場使用的注冊中心實現(xiàn)下載壓縮包后直接解壓即可,常用的配置如下($root/conf/zoo.cfg): dataDir:zookeeper數(shù)據(jù)文件存放地址。默認在c:/tmp下,需要定時清理。 clientPort:端口號,這個在dubbo注冊中心配置中需要用到 maxClientCnxns:連接到 ZooKeeper 的客戶端的數(shù)量 參考資料http:/ 19 湖南智博旭諾科技有限公司版權所有 Dubbo管理控制臺管理控制臺安裝手冊 http:/ 開發(fā)環(huán)境管理控制臺地址:http:/192.168
10、.1.41:8202 20 湖南智博旭諾科技有限公司版權所有 Dubbo簡易監(jiān)控中心簡易監(jiān)控中心安裝手冊http:/ 開發(fā)環(huán)境監(jiān)控中心地址: http:/192.168.66.65:8080/ 21 湖南智博旭諾科技有限公司版權所有 Dubbo項目實戰(zhàn)總結(jié)問題一: 對象序列化問題,Cpoe中由于歷史原因domain中存在父類與子類都存在同一屬性的情況,導致默認的hessian2序列化無法設值成功。 解決方案: 將序列化方式改為dubbo。Java也可以,不過性能差點。 問題二:患者查詢中存在一個方法的入?yún)镸ap,map里面放置的是復雜數(shù)據(jù)類型。導致無法調(diào)用成功。 解決方案: 將序列化方式改為
11、java。 22 湖南智博旭諾科技有限公司版權所有 Dubbo項目實戰(zhàn)總結(jié)問題三: jboss7 不支持按順序啟動,導致后臺服務中提供者和消費者的啟動順序得不到保障,因此報錯。 解決方案: 問題四:Jboss7 熱部署后臺服務時,不會把暴露的端口號給注銷掉,會導致出現(xiàn)端口號被占用的錯誤。 臨時解決方案: 將端口改為-1。 23 湖南智博旭諾科技有限公司版權所有 Dubbo項目實戰(zhàn)總結(jié)問題五: 引入dubbo機制后,很多服務是拋的Framework BusinessException(該異常是運行時異常),dubbo遠程調(diào)用時會在原來異常上再包裝一層,導致原來給用戶的提示信息變成了500錯誤。
12、臨時解決方案:在接口方法上聲明需要拋出的異常。 終極解決方案:采用SPI方式擴展Dubbo異常處理過濾器,(參考git192.168.66.28:earth/earth-dubbo-extension.git) 另外需要添加以下配置 Dubbo擴展參考資料Java spi 機制淺談 24 湖南智博旭諾科技有限公司版權所有 Dubbo項目實戰(zhàn)總結(jié)問題六: 為方便開發(fā)測試,經(jīng)常會在線下共用一個所有服務可用的注冊中心,這時,如果一個正在開發(fā)中的服務提供者注冊,可能會影響消費者不能正常運行。 解決方案:可以讓服務提供者開發(fā)方,只訂閱服務(開發(fā)的服務可能依賴其它服務),而不注冊正在開發(fā)的服務,通過直連測試正在開發(fā)的服務。 實現(xiàn)步驟: 1. 2. 25 湖南智博旭諾科技有限公司版權所有 Dubbo項目實戰(zhàn)總結(jié)問題七: Q:如何標識服務? A:通過group,interface,version三個屬性來標識是否為同一服務擴展應用 服務分組:當一個接口有多種實現(xiàn)時,可以用group區(qū)分。 多版本:當一個接口實現(xiàn),出現(xiàn)不兼容升級時,可以用版本號過渡,版本號不同的服務相互間不引用。 26 湖南智博旭諾科技有限公司版權所有 Any Question? 27 湖南智博旭諾科技有限公司版權所有 課后作業(yè)搭建管理控制臺搭建簡易監(jiān)控中心搭建基于zookeeper注冊中心的集群環(huán)境