dubbo系列準備寫一個對 duubo 官網的一個總結(也是友善快速複習~)
dubbo新官網:http://dubbo.apache.org/zh-cn/
dubbo舊官網:http://dubbo.jacarrichan.com
dubbo源碼:https://github.com/alibaba/dubbo
dubbo源碼及文檔:https://github.com/dangdangdotcom/dubbox
Dubbo是什麼?
- 一款分布式服務架構
- 高性能和透明化的RPC遠端服務調用方案
- SOA服務治理方案
簡單的說,dubbo就是個服務架構,如果沒有分布式的需求,其實是不需要用的,隻有在分布式的時候,才有dubbo這樣的分布式服務架構的需求
并且本質上是個遠端服務調用的分布式架構(告别Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上注冊)
其核心部分包含:
架構:
- 遠端通訊: 提供對多種基于長連接配接的NIO架構抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的資訊交換方式。
- 叢集容錯: 提供基于接口方法的透明遠端過程調用,包括多協定支援,以及軟負載均衡,失敗容錯,位址路由,動态配置等叢集支援。
- 自動發現: 基于注冊中心目錄服務,使服務消費方能動态的查找服務提供方,使位址透明,使服務提供方可以平滑增加或減少機器。
節點角色說明
節點 角色說明
Provider
暴露服務的服務提供方
Consumer
調用遠端服務的服務消費方
Registry
服務注冊與發現的注冊中心
Monitor
統計服務的調用次數和調用時間的監控中心
Container
服務運作容器 Dubbo架構特點
連通性
- 注冊中心負責服務位址的注冊與查找,相當于目錄服務,服務提供者和消費者隻在啟動時與注冊中心互動,注冊中心不轉發請求,壓力較小
- 監控中心負責統計各服務調用次數,調用時間等,統計先在記憶體彙總後每分鐘一次發送到監控中心伺服器,并以報表展示
- 服務提供者向注冊中心注冊其提供的服務,并彙報調用時間到監控中心,此時間不包含網絡開銷
- 服務消費者向注冊中心擷取服務提供者位址清單,并根據負載算法直接調用提供者,同時彙報調用時間到監控中心,此時間包含網絡開銷
- 注冊中心,服務提供者,服務消費者三者之間均為長連接配接,監控中心除外
- 注冊中心通過長連接配接感覺服務提供者的存在,服務提供者當機,注冊中心将立即推送事件通知消費者
- 注冊中心和監控中心全部當機,不影響已運作的提供者和消費者,消費者在本地緩存了提供者清單
- 注冊中心和監控中心都是可選的,服務消費者可以直連服務提供者
健壯性
- 監控中心宕掉不影響使用,隻是丢失部分采樣資料
- 資料庫宕掉後,注冊中心仍能通過緩存提供服務清單查詢,但不能注冊新服務
- 注冊中心對等叢集,任意一台宕掉後,将自動切換到另一台
- 注冊中心全部宕掉後,服務提供者和服務消費者仍能通過本地緩存通訊
- 服務提供者無狀态,任意一台宕掉後,不影響使用
- 服務提供者全部宕掉後,服務消費者應用将無法使用,并無限次重連等待服務提供者恢複
伸縮性
- 注冊中心為對等叢集,可動态增加機器部署執行個體,所有用戶端将自動發現新的注冊中心
- 服務提供者無狀态,可動态增加機器部署執行個體,注冊中心将推送新的服務提供者資訊給消費者
更新性 當服務叢集規模進一步擴大,帶動IT治理結構進一步更新,需要實作動态部署,進行流動計算,現有分布式服務架構不會帶來阻力。下圖是未來可能的一種架構: 節點角色說明
節點 角色說明
Deployer
自動部署服務的本地代理
Repository
倉庫用于存儲服務應用釋出包
Scheduler
排程中心基于通路壓力自動增減服務提供者
Admin
統一管理控制台
Registry
服務注冊與發現的注冊中心
Monitor
統計服務的調用次數和調用時間的監控中心
Dubbo能做什麼?
啟動時檢查 http://dubbo.apache.org/zh-cn/docs/user/demos/preflight-check.html 叢集容錯 http://dubbo.apache.org/zh-cn/docs/user/demos/fault-tolerent-strategy.html 負載均衡 http://dubbo.apache.org/zh-cn/docs/user/demos/loadbalance.html 線程模型 http://dubbo.apache.org/zh-cn/docs/user/demos/thread-model.html 直連提供者 http://dubbo.apache.org/zh-cn/docs/user/demos/explicit-target.html 隻訂閱 http://dubbo.apache.org/zh-cn/docs/user/demos/subscribe-only.html 隻注冊 http://dubbo.apache.org/zh-cn/docs/user/demos/registry-only.html 靜态服務 http://dubbo.apache.org/zh-cn/docs/user/demos/static-service.html 多協定 http://dubbo.apache.org/zh-cn/docs/user/demos/multi-protocols.html 多注冊中心 http://dubbo.apache.org/zh-cn/docs/user/demos/multi-registry.html 服務分組 http://dubbo.apache.org/zh-cn/docs/user/demos/service-group.html 多版本 http://dubbo.apache.org/zh-cn/docs/user/demos/multi-versions.html 分組聚合 http://dubbo.apache.org/zh-cn/docs/user/demos/group-merger.html 參數驗證 http://dubbo.apache.org/zh-cn/docs/user/demos/parameter-validation.html 結果緩存 http://dubbo.apache.org/zh-cn/docs/user/demos/result-cache.html 泛化引用 http://dubbo.apache.org/zh-cn/docs/user/demos/generic-reference.html 泛化實作 http://dubbo.apache.org/zh-cn/docs/user/demos/generic-service.html 回聲測試 http://dubbo.apache.org/zh-cn/docs/user/demos/echo-service.html 上下文資訊 http://dubbo.apache.org/zh-cn/docs/user/demos/context.html 隐式參數 http://dubbo.apache.org/zh-cn/docs/user/demos/attachment.html Consumer異步調用 http://dubbo.apache.org/zh-cn/docs/user/demos/async-call.html Provider異步執行 http://dubbo.apache.org/zh-cn/docs/user/demos/async-execute-on-provider.html 本地調用 http://dubbo.apache.org/zh-cn/docs/user/demos/local-call.html 參數回調 http://dubbo.apache.org/zh-cn/docs/user/demos/callback-parameter.html 事件通知 http://dubbo.apache.org/zh-cn/docs/user/demos/events-notify.html 本地存根 http://dubbo.apache.org/zh-cn/docs/user/demos/local-stub.html 本地僞裝 http://dubbo.apache.org/zh-cn/docs/user/demos/local-mock.html 延遲暴露 http://dubbo.apache.org/zh-cn/docs/user/demos/delay-publish.html 并發控制 http://dubbo.apache.org/zh-cn/docs/user/demos/concurrency-control.html 連接配接控制 http://dubbo.apache.org/zh-cn/docs/user/demos/config-connections.html 延遲連接配接 http://dubbo.apache.org/zh-cn/docs/user/demos/lazy-connect.html 粘滞連接配接 http://dubbo.apache.org/zh-cn/docs/user/demos/stickiness.html 令牌驗證 http://dubbo.apache.org/zh-cn/docs/user/demos/token-authorization.html 路由規則 http://dubbo.apache.org/zh-cn/docs/user/demos/routing-rule.html 配置規則 http://dubbo.apache.org/zh-cn/docs/user/demos/config-rule.html 服務降級 http://dubbo.apache.org/zh-cn/docs/user/demos/service-downgrade.html 優雅停機 http://dubbo.apache.org/zh-cn/docs/user/demos/graceful-shutdown.html 主機綁定 http://dubbo.apache.org/zh-cn/docs/user/demos/hostname-binding.html 日志适配 http://dubbo.apache.org/zh-cn/docs/user/demos/logger-strategy.html 通路日志 http://dubbo.apache.org/zh-cn/docs/user/demos/accesslog.html 服務容器 http://dubbo.apache.org/zh-cn/docs/user/demos/service-container.html Reference Config緩存 http://dubbo.apache.org/zh-cn/docs/user/demos/reference-config-cache.html 分布式事務 http://dubbo.apache.org/zh-cn/docs/user/demos/distributed-transaction.html 線程棧自動 dump http://dubbo.apache.org/zh-cn/docs/user/demos/dump.html Netty4 http://dubbo.apache.org/zh-cn/docs/user/demos/netty4.html Kryo和FST序列化 http://dubbo.apache.org/zh-cn/docs/user/demos/serialization.html 簡化注冊中心URL http://dubbo.apache.org/zh-cn/docs/user/demos/simplify-registry-data.html
Dubbo如何使用?
因個人喜好原因隻提供以下Demo:
XML配置方式
注解配置方式