背景介紹
什么是dubbo
Dubbo是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和Spring框架無縫集成。
它最大的特點是按照分層的方式來架構,使用這種方式可以使各個層之間解耦合(或者最大限度地松耦合)
http://dubbo.io/
知識剖析
Provider 暴露服務方稱之為“服務提供者”。
Consumer 調用遠程服務方稱之為“服務消費者”。
Registry 服務注冊與發現的中心目錄服務稱之為“服務注冊中心”。
Monitor 統計服務的調用次數和調用時間的日志服務稱之為“服務監控中心”。
常見問題
1. 服務容器負責啟動,加載,運行服務提供者。
2. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
3. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
4. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。
5. 服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
6. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
配置展示
dubbo控制臺和其配置
擴展思考
如何做service的負載均衡
6.參考文獻
https://www.cnblogs.com/Javame/p/3632473.html
http://shiyanjun.cn/archives/1075.html
http://blog.csdn.net/slipknotm_/article/details/52252673
https://www.zhihu.com/question/25070185
更多討論
dubbo和rmi
1、dubbo協議
Dubbo缺省協議采用單一長連接和NIO異步通訊,適合于小數據量大并發的服務調用,以及服務消費者機器數遠大于服務提供者機器數的情況。
缺省協議,使用基于mina1.1.7+hessian3.2.1的tbremoting交互。
連接個數:單連接
連接方式:長連接
傳輸協議:TCP
傳輸方式:NIO異步傳輸
序列化:Hessian二進制序列化
適用范圍:傳入傳出參數數據包較小(建議小于100K),消費者比提供者個數多,單一消費者無法壓滿提供者,盡量不要用dubbo協議傳輸大文件或超大字符串。
適用場景:常規遠程服務方法調用
2、RMI
RMI協議采用JDK標準的java.rmi.*實現,采用阻塞式短連接和JDK標準序列化方式
Java標準的遠程調用協議。
連接個數:多連接
連接方式:短連接
傳輸協議:TCP
傳輸方式:同步傳輸
序列化:Java標準二進制序列化
適用范圍:傳入傳出參數數據包大小混合,消費者與提供者個數差不多,可傳文件。
適用場景:常規遠程服務方法調用,與原生RMI服務互操作
分享到此結束
歡迎大家討論
問題:
zookeeper作用:
zookeeper實現的是資源的訂閱發布基本原理就是,分布式的環境下服務方實際上是資源,每個服務方把自己的服務的節點信息,注冊在zk上,消費者通過zk獲取到所需要的服務的相關信息,比如url之類。
但是zk有個很重要的功能,會主動通知消費者所訂閱資源的變化信息,比如,同一個服務 某臺機器相關進程關閉后,zk會通知消費者,資源的變化情況,這樣,就實現了服務的動態添加減少。
dubbo的服務提供者會在zookeeper上面創建一個臨時節點,表明自己的IP和端口,當消費者需要使用服務時,會先在zookeeper上面查詢,找到服務提供者,做一些負載的選擇(比如隨機、輪流),然后按照這些信息,訪問服務提供者
PPT:PPT
技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,掌控自己學習的節奏,學習的路上不再迷茫”。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧~