天天看點

Dubbo3詳解-五大新特性

Dubbo3在原有架構上進行了全面更新,包括Service Mesh方案等環節,下面我就來全面詳解Dubbo3.0

Dubbo3詳解-五大新特性

Dubbo簡介

Apache Dubbo是一款強大的微服務開發架構,它提供了RPC通信和微服務治理兩大核心能力,旨在為開發者提供高性能、透明化的遠端服務調用方案。

使用Dubbo開發的微服務,可以輕松實作遠端服務之間的通信和發現,同時利用Dubbo提供的豐富服務治理能力,如服務發現、負載均衡、流量排程等,來滿足各種服務治理需求。此外,Dubbo還具有高度可擴充性,使用者可以在幾乎任何功能點上定制自己的實作,以改變架構的預設行為來滿足自己的業務需求。

Dubbo功能

Dubbo核心功能,主要提供了:遠端方法調用、智能容錯和負載均衡、提供服務自動注冊、自動發現等高效服務治理功能。

Dubbo元件

Dubbo3詳解-五大新特性

1)服務提供者(Server)

負責向外提供服務并将自己的服務資訊注冊到注冊中心。服務提供者使用Dubbo架構提供的服務暴露功能,将服務釋出到注冊中心,等待消費者調用。

2)注冊中心(Registry)

用于維護服務提供者和服務消費者之間的聯系。Dubbo支援使用開源架構如Zookeeper、Eureka、Consul、Etcd等來實作注冊中心。

比如,阿裡的Dubbo就是采用Zookeeper作為注冊中心,将服務提供者的位址和資訊注冊到Zookeeper中,同時允許消費者從Zookeeper中擷取服務提供者的位址和資訊,以便發起遠端調用。

3)服務消費者(Client)

從注冊中心擷取遠端服務的注冊資訊,然後進行遠端過程調用。消費者使用Dubbo架構提供的服務引用功能,從注冊中心擷取服務提供者的位址和資訊,然後通過RPC方式調用服務。

4)監控(Monitor)

Dubbo引入了監控中心,以便更好地調試和發現問題。監控中心可以對消費者和提供者進行管理,幫助使用者快速定位和解決問題。Dubbo的監控中心可以記錄和展示服務的調用次數、調用時間、調用成功率等資料,進而幫助使用者監控和優化系統的運作狀況。

Dubbo3詳解-五大新特性

Dubbo調用流程

Dubbo調用流程,大緻分為如下11步:

Dubbo3詳解-五大新特性

Dubbo發展曆程

dubbo的發展曆程,經曆過如下階段:

Dubbo3詳解-五大新特性

大緻總結為3段:

1.誕生阿裡

Dubbo最初于2008年在阿裡内部誕生,是阿裡在處理大規模分布式服務問題時開發的一種RPC架構。2011年Dubbo開源,随後迅速獲得了廣泛的認可和應用。2012年釋出了2.5.3版本後,Dubbo架構停止了更新。

2.進入apache頂級項目

2017年,阿裡重新開機了Dubbo項目,并且開始着手開發新的版本。2018年,Dubbo進入Apache孵化器,并于2019年成為Apache頂級項目。Apache頂級項目是Apache軟體基金會下屬的最進階别項目,代表了該項目的技術水準和社群活躍程度已經達到了非常高的水準。

3.dubbo3.o

2020年,Dubbo釋出了3.0版本,這是一個往雲原生項目發展的戰略計劃。Dubbo 3.0在雲原生應用場景下進行了全面更新和優化,包括新增了對Spring Boot 2.x的支援、完善了服務注冊中心、提升了性能和穩定性等。Dubbo 3.0還引入了Kubernetes原生的服務發現與注冊模型,以支援更多雲原生應用場景。

Dubbo3 新特性

Dubbo 3延續了2.x版本的經典架構,主要職責仍然是解決微服務程序間通信,同時通過豐富的服務治理能力來更好地管控微服務叢集。

Dubbo 3對原有架構進行了全面更新,幾乎每個核心特性都得到了優化,包括穩定性、性能、伸縮性和易用性。更新後,Dubbo 3在性能方面有了大幅提升,特别是在大規模叢集的場景下表現更加優異。同時,Dubbo 3提供了更完善的服務治理能力,例如服務注冊中心、流量控制、降級處理、叢集容錯等,可以更好地支援微服務架構的需求。此外,Dubbo 3還對外提供了更友好的API和更豐富的擴充點,讓開發者更容易地使用和擴充Dubbo。

1.全面的性能提升

Dubbo3 版本在服務發現方面顯著提高了資源使用率。在接口級别服務發現下,單機常駐記憶體下降了50%。在應用級别服務發現下,單機常駐記憶體下降了75%,GC 次數幾乎降為零。

2.下一代 RPC 通信協定

Dubbo3 提出了基于 HTTP2 的開放協定 Triple,可以原生相容 gRPC 協定,并且在此基礎上擴充出更豐富的語義。相比于原有 Dubbo2 協定,Triple 具有更好的網關、代理穿透性,支援原生的 Stream 通信語義,并且可以更友善地與各種網關、Mesh 架構配合工作。

3.Kubernetes

Dubbo3 應用可以原生部署到 Kubernetes 平台,并且已經對接了原生的 Kubernetes Service 體系。這意味着,Dubbo3 可以更加友善地在 Kubernetes 環境中部署和管理。

4.Service Mesh

Service Mesh,是一個形象化的詞語表達:Service(服務)和Mesh(網格),它描述了服務間的依賴形态,就像下面這張網一樣。

Dubbo3詳解-五大新特性

深色的是我們平時工作中接觸最多的業務微服務,旁邊藍色的被稱為邊車Sidecar服務。

Sidecar的微服務,用于處理與其他業務微服務之間的非功能需求,如網絡通信、安全、監控、流量控制等。多個Sidecar之間的連接配接和互動組成了網格(Mesh)。

Dubbo3 提供了基于自身架構的 Dubbo Mesh 解決方案,既支援經典的基于 Sidecar 的 Service Mesh,也支援無 Sidecar 的 Proxyless Mesh。在 Dubbo Mesh 中,邊車Sidecar作為業務微服務的“代理”,負責處理與其他業務微服務的通信,而Dubbo Mesh控制平面則負責監控、安全等其他的服務治理功能。

5.異構體系互通

典型的微服務架構如 Dubbo、Spring Cloud、gRPC 等都有着異構微服務體系互通的需求。Dubbo3 借助于全新的服務發現模型和可擴充的 RPC 協定,可以成為 Dubbo3 未來的發展目标,支援更廣泛的微服務生态系統。

繼續閱讀