天天看點

Dubbo是什麼?能做什麼?如何使用?Dubbo是什麼?Dubbo能做什麼?Dubbo如何使用?

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上注冊)

其核心部分包含:

  1. 遠端通訊: 提供對多種基于長連接配接的NIO架構抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的資訊交換方式。
  2. 叢集容錯: 提供基于接口方法的透明遠端過程調用,包括多協定支援,以及軟負載均衡,失敗容錯,位址路由,動态配置等叢集支援。
  3. 自動發現: 基于注冊中心目錄服務,使服務消費方能動态的查找服務提供方,使位址透明,使服務提供方可以平滑增加或減少機器。
架構:
Dubbo是什麼?能做什麼?如何使用?Dubbo是什麼?Dubbo能做什麼?Dubbo如何使用?
節點角色說明
節點 角色說明

Provider

暴露服務的服務提供方

Consumer

調用遠端服務的服務消費方

Registry

服務注冊與發現的注冊中心

Monitor

統計服務的調用次數和調用時間的監控中心

Container

服務運作容器
Dubbo架構特點
連通性
  • 注冊中心負責服務位址的注冊與查找,相當于目錄服務,服務提供者和消費者隻在啟動時與注冊中心互動,注冊中心不轉發請求,壓力較小
  • 監控中心負責統計各服務調用次數,調用時間等,統計先在記憶體彙總後每分鐘一次發送到監控中心伺服器,并以報表展示
  • 服務提供者向注冊中心注冊其提供的服務,并彙報調用時間到監控中心,此時間不包含網絡開銷
  • 服務消費者向注冊中心擷取服務提供者位址清單,并根據負載算法直接調用提供者,同時彙報調用時間到監控中心,此時間包含網絡開銷
  • 注冊中心,服務提供者,服務消費者三者之間均為長連接配接,監控中心除外
  • 注冊中心通過長連接配接感覺服務提供者的存在,服務提供者當機,注冊中心将立即推送事件通知消費者
  • 注冊中心和監控中心全部當機,不影響已運作的提供者和消費者,消費者在本地緩存了提供者清單
  • 注冊中心和監控中心都是可選的,服務消費者可以直連服務提供者
健壯性
  • 監控中心宕掉不影響使用,隻是丢失部分采樣資料
  • 資料庫宕掉後,注冊中心仍能通過緩存提供服務清單查詢,但不能注冊新服務
  • 注冊中心對等叢集,任意一台宕掉後,将自動切換到另一台
  • 注冊中心全部宕掉後,服務提供者和服務消費者仍能通過本地緩存通訊
  • 服務提供者無狀态,任意一台宕掉後,不影響使用
  • 服務提供者全部宕掉後,服務消費者應用将無法使用,并無限次重連等待服務提供者恢複
伸縮性
  • 注冊中心為對等叢集,可動态增加機器部署執行個體,所有用戶端将自動發現新的注冊中心
  • 服務提供者無狀态,可動态增加機器部署執行個體,注冊中心将推送新的服務提供者資訊給消費者
更新性 當服務叢集規模進一步擴大,帶動IT治理結構進一步更新,需要實作動态部署,進行流動計算,現有分布式服務架構不會帶來阻力。下圖是未來可能的一種架構:
Dubbo是什麼?能做什麼?如何使用?Dubbo是什麼?Dubbo能做什麼?Dubbo如何使用?
節點角色說明
節點 角色說明

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配置方式

注解配置方式