【Dubbo實戰】基礎學習篇(一)
Dubbo的簡介
是什么?
Dubbo是阿里巴巴SOA服務化治理方案的核心框架,每天為2,000多個服務提供30多億次訪問量支持,并被廣泛應用于阿里巴巴集團的各成員站點。
Dubbo是一個分布式服務框架,致力于提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。
產生背景
(1)當服務越來越多時,服務URL配置管理變得非常困難,F5硬件負載均衡器的單點壓力也越來越大。
此時需要一個服務注冊中心,動態的注冊和發現服務,使服務的位置透明。
并通過在消費方獲取服務提供方地址列表,實現軟負載均衡和Failover,降低對F5硬件負載均衡器的依賴,也能減少部分成本。
(2)當進一步發展,服務間依賴關系變得錯蹤復雜,甚至分不清哪個應用要在哪個應用之前啟動,架構師都不能完整的描述應用的架構關系。
這時,需要自動畫出應用間的依賴關系圖,以幫助架構師理清理關系。
(3)接著,服務的調用量越來越大,服務的容量問題就暴露出來,這個服務需要多少機器支撐?什么時候該加機器?等等…
為了解決這些問題:
第一步,要將服務現在每天的調用量,響應時間,都統計出來,作為容量規劃的參考指標。
其次,要可以動態調整權重,在線上,將某臺機器的權重一直加大,并在加大的過程中記錄響應時間的變化,直到響應時間到達閥值,記錄此時的訪問量,再以此訪問量乘以機器數反推總容量。
核心部分:
遠程通訊:提供對多種基于長連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的信息交換方式。
集群容錯:提供基于接口方法的透明遠程過程調用,包括多協議支持,以及軟負載均衡,失敗容錯,地址路由,動態配置等集群支持。
自動發現:基于注冊中心目錄服務,使服務消費方能動態的查找服務提供方,使地址透明,使服務提供方可以平滑增加或減少機器。
能做什么?
透明化的遠程方法調用,就像調用本地方法一樣調用遠程方法,只需簡單配置,沒有任何API侵入。
軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,降低成本,減少單點。
服務自動注冊與發現,不再需要寫死服務提供方地址,注冊中心基于接口名查詢服務提供者的IP地址,并且能夠平滑添加或刪除服務提供者。
架構圖:
節點角色說明:
Provider: 暴露服務的服務提供方。
Consumer: 調用遠程服務的服務消費方。
Registry: 服務注冊與發現的注冊中心。
Monitor:統計服務的調用次調和調用時間的監控中心。
Container: 服務運行容器。
調用關系說明:
0. 服務容器負責啟動,加載,運行服務提供者。
1.服務提供者在啟動時,向注冊中心注冊自己提供的服務。
2.服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
3.注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數據給消費者。
4.服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調用,如果調用失敗,再選另一臺調用。
5.服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。
結束語:
下篇講解dubbo+zookeeper+spring的整合應用,zookeeper為注冊中心,接下來我們的學習主要結合基于zookeeper的Dubbo注冊中心來學習Dubbo這個分布式系統框架。
注:Dubbo的注冊中心有一下幾種,用戶指南中說明-推薦使用Zookeeper注冊中心
來自: http://blog.csdn.net/hejingyuan6/article/details/47405377