基礎理論
1、什麼是分散式系統
分散式系統是若干計算機的集合,這些計算機對使用者而言就像單個相關係統 -- 《分散式系統原理與範型》
分散式系統是建立在網路之上的系統
2、架構發展演變
隨著網際網路發展,應用規模不斷增長,架構也隨著演變。從單一應用架構,垂直應用拆分架構,逐漸演變為分散式應用架構。
3、RPC
RPC是指遠端過程呼叫,是一種程式間通訊方式。它允許呼叫另一個地址空間(通常指網路上的某臺機器)的過程或函式。使用方式與本地呼叫方法一致。
原理:
(1)client以本地呼叫方式(即介面方式)呼叫服務(2)client代理接收到呼叫後,負責將介面、引數等序列化為二進位制
(3)通過socket將訊息發往服務端
(4)server代理將二進位制訊息反序列化
(5)server呼叫本地方法
(6)將執行結果返回給server代理
(7)代理將返回結果序列化
(8)通過socker將返回結果發往客戶端
(9)返回結果反序列化
(10)client得到最終結果
不同的RPC框架核心
- 通訊(快速建立連線)
- 序列化 (效率)
現有的業界RPC框架:dubbo、gRPC、Thrift、pigeon
4、dubbo
dubbo架構:
dubbo特性:
-
面向介面代理的高效能RPC呼叫
- 提供高效能的基於代理的遠端呼叫能力,服務以介面為粒度,為開發者遮蔽遠端呼叫底層細節。
-
智慧負載均衡
- 內建多種負載均衡策略,智慧感知下游節點健康狀況,顯著減少呼叫延遲,提高系統吞吐量。
-
服務自動註冊與發現
- 支援多種註冊中心服務,服務例項上下線實時感知。
-
高度可擴充套件能力
- 遵循微核心+外掛的設計原則,所有核心能力如Protocol、Transport、Serialization被設計為擴充套件點,平等對待內建實現和第三方實現。
-
執行期流量排程
- 內建條件、指令碼等路由策略,通過配置不同的路由規則,輕鬆實現灰度釋出,同機房優先等功能。
-
視覺化的服務治理與運維
- 提供豐富服務治理、運維工具:隨時查詢服務後設資料、服務健康狀態及呼叫統計,實時下發路由策略、調整配置引數。