一、Dubbo是什么?
Dubbo是:
一款分布式服務框架
高性能和透明化的RPC遠程服務調用方案
SOA服務治理方案
簡單來說,dubbo是一個服務框架,如果沒有分布式的需求,就不需要使用。當有在分布式需求時,需要dubbo這樣的分布式服務框架來實現服務遠程調用。
二、Dubbo能做什么?
1.透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。
2.軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。
- 服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基于接口名查詢服務提供者的IP地址,并且能夠平滑添加或刪除服務提供者。
Dubbo采用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置即可,Dubbo基于Spring的Schema擴展進行加載。
三、Dubbo如何工作?
dubbo架構圖如下所示:
image.png
節點角色說明:
Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務注冊與發現的注冊中心。
Monitor: 統計服務的調用次調和調用時間的監控中心。
Container: 服務運行容器。
服務調用關系說明:
0.服務容器負責啟動,加載,運行服務提供者。
1.服務提供者在啟動時,向注冊中心注冊自己提供的服務。
2.服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
3.注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。
4.服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
5.服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心
四、Dubbo優點和缺點?
1、優點:
透明化的遠程方法調用
- 像調用本地方法一樣調用遠程方法;只需簡單配置,沒有任何API侵入。
軟負載均衡及容錯機制
可在內網替代nginx lvs等硬件負載均衡器。
服務注冊中心自動注冊 & 配置管理
-不需要寫死服務提供者地址,注冊中心基于接口名自動查詢提供者ip。
使用類似zookeeper等分布式協調服務作為服務注冊中心,可以將絕大部分項目配置移入zookeeper集群。
服務接口監控與治理
-Dubbo-admin與Dubbo-monitor提供了完善的服務接口管理與監控功能,針對不同應用的不同接口,可以進行 多版本,多協議,多注冊中心管理。
2、缺點:
只支持JAVA語言
五、Dubbo 如何使用?
請參見文章
Dubbo 使用入門