焦點速訊:【Dubbo3入門到精通】「序章介紹說明」Dubbo3新特性概覽的介紹說明

2022-12-13 14:10:33 來源:51CTO博客

Dubbo3的微服務(wù)框架系列

??【Dubbo3入門到精通】總體技術(shù)體系介紹及技術(shù)指南(目錄)??

本系列專題是關(guān)于 Dubbo 的簡單介紹,涵蓋Dubbo的核心概念、基本使用方式以及Dubbo3核心功能。

Dubbo的基本介紹

Apache Dubbo 是一款微服務(wù)開發(fā)框架,它提供了 RPC通信 與 微服務(wù)治理 兩大關(guān)鍵能力。使用 Dubbo 開發(fā)的微服務(wù),將具備相互之間的遠程發(fā)現(xiàn)與通信能力, 同時利用 Dubbo 提供的豐富服務(wù)治理能力,可以實現(xiàn)諸如服務(wù)發(fā)現(xiàn)、負載均衡、流量調(diào)度等服務(wù)治理訴求。同時 Dubbo 是高度可擴展的,用戶幾乎可以在任意功能點去定制自己的實現(xiàn),以改變框架的默認行為來滿足自己的業(yè)務(wù)需求。

Dubbo3的升級發(fā)展

Dubbo3基于Dubbo2演進而來,在保持原有核心功能特性的同時, Dubbo3在易用性、超大規(guī)模微服務(wù)實踐、云原生基礎(chǔ)設(shè)施適配等幾大方向上進行了全面升級,以下文檔都將基于Dubbo3展開。Dubbo提供了構(gòu)建云原生微服務(wù)業(yè)務(wù)的一站式解決方案,可以使用 Dubbo 快速定義并發(fā)布微服務(wù)組件,同時基于Dubbo開箱即用的豐富特性及超強的擴展能力,構(gòu)建運維整個微服務(wù)體系所需的各項服務(wù)治理能力,如 Tracing、Transaction 等
Dubbo3提供的基礎(chǔ)能力包括:
服務(wù)發(fā)現(xiàn)流式通信負載均衡流量治理
Dubbo3的語言的層面范圍
Dubbo計劃提供豐富的多語言客戶端實現(xiàn),其中 Java、Golang 版本是當前穩(wěn)定性、活躍度最好的版本,其他多語言客戶端[]正在持續(xù)建設(shè)中。Dubbo3 是站在巨人肩膀上的下一代產(chǎn)品,它汲取了上一代的優(yōu)點并針對已知問題做了大量優(yōu)化,因此,Dubbo 在解決業(yè)務(wù)落地與規(guī)模化實踐方面有著無可比擬的優(yōu)勢
開箱即用
易用性高,如 Java 版本的面向接口代理特性能實現(xiàn)本地透明調(diào)用功能豐富,基于原生庫或輕量擴展即可實現(xiàn)絕大多數(shù)的微服務(wù)治理能力超大規(guī)模微服務(wù)集群實踐高性能的跨進程通信協(xié)議地址發(fā)現(xiàn)、流量治理層面,輕松支持百萬規(guī)模集群實例
企業(yè)級微服務(wù)治理能力

Dubbo3 是在云原生背景下誕生的,使用 Dubbo 構(gòu)建的微服務(wù)遵循云原生思想,能更好的復(fù)用底層云原生基礎(chǔ)設(shè)施、貼合云原生微服務(wù)架構(gòu)。這體現(xiàn)在:


(資料圖)

服務(wù)支持部署在容器、Kubernetes平臺,服務(wù)生命周期可實現(xiàn)與平臺調(diào)度周期對齊;支持經(jīng)典Service Mesh微服務(wù)架構(gòu),引入了 Proxyless Mesh 架構(gòu),進一步簡化 Mesh 的落地與遷移成本,提供更靈活的選擇;Dubbo作為橋接層,支持與 SpringCloud、gRPC 等異構(gòu)微服務(wù)體系的互調(diào)互通
一站式微服務(wù)解決方案
Dubbo 提供了從服務(wù)定義、服務(wù)發(fā)現(xiàn)、服務(wù)通信到流量管控等幾乎所有的服務(wù)治理能力,并且嘗試從使用上對用戶屏蔽底層細節(jié),以提供更好的易用性。定義服務(wù)在Dubbo中非常簡單與直觀,可以選擇使用與某種語言綁定的方式(如 Java 中可直接定義 Interface),也可以使用 Protobuf IDL 語言中立的方式。無論選擇哪種方式,站在服務(wù)消費方的視角,都可以通過 Dubbo 提供的透明代理直接編碼。Dubbo 中,我們提到服務(wù)時,通常是指 RPC 粒度的、提供某個具體業(yè)務(wù)增刪改功能的接口或方法,與一些微服務(wù)概念書籍中泛指的服務(wù)并不是一個概念。

點對點的服務(wù)通信是 Dubbo 提供的另一項基本能力,Dubbo 以 RPC 的方式將請求數(shù)據(jù)(Request)發(fā)送給后端服務(wù),并接收服務(wù)端返回的計算結(jié)果(Response)。

RPC 通信對用戶來說是完全透明的,使用者無需關(guān)心請求是如何發(fā)出去的、發(fā)到了哪里,每次調(diào)用只需要拿到正確的調(diào)用結(jié)果就行。同步的 Request-Response 是默認的通信模型,它最簡單但卻不能覆蓋所有的場景,因此,Dubbo 提供更豐富的通信模型:

消費端異步請求(Client Side Asynchronous Request-Response)提供端異步執(zhí)行(Server Side Asynchronous Request-Response)消費端請求流(Request Streaming)提供端響應(yīng)流(Response Streaming)雙向流式通信(Bidirectional Streaming)

Dubbo 的服務(wù)發(fā)現(xiàn)機制,讓微服務(wù)組件之間可以獨立演進并任意部署,消費端可以在無需感知對端部署位置與 IP 地址的情況下完成通信。Dubbo 提供的是 Client-Based 的服務(wù)發(fā)現(xiàn)機制,使用者可以有多種方式啟用服務(wù)發(fā)現(xiàn):

使用獨立的注冊中心組件,如 Nacos、Zookeeper、Consul、Etcd 等。將服務(wù)的組織與注冊交給底層容器平臺,如 Kubernetes,這被理解是一種更云原生的方式透明地址發(fā)現(xiàn)讓 Dubbo 請求可以被發(fā)送到任意 IP 實例上,這個過程中流量被隨機分配。當需要對流量進行更豐富、更細粒度的管控時,就可以用到 Dubbo 的流量管控策略,Dubbo 提供了包括負載均衡、流量路由、請求超時、流量降級、重試等策略,基于這些基礎(chǔ)能力可以輕松的實現(xiàn)更多場景化的路由方案,包括金絲雀發(fā)布、A/B測試、權(quán)重路由、同區(qū)域優(yōu)先等,更酷的是,Dubbo 支持流控策略在運行態(tài)動態(tài)生效,無需重新部署。

Dubbo 強大的服務(wù)治理能力不僅體現(xiàn)在核心框架上,還包括其優(yōu)秀的擴展能力以及周邊配套設(shè)施的支持。通過 Filter、Router、Protocol 等幾乎存在于每一個關(guān)鍵流程上的擴展點定義,我們可以豐富 Dubbo 的功能或?qū)崿F(xiàn)與其他微服務(wù)配套系統(tǒng)的對接,包括 Transaction、Tracing 目前都有通過 SPI 擴展的實現(xiàn)方案,具體可以參見 Dubbo 擴展性的詳情,也可以在 apache/dubbo-spi-extensions 項目中發(fā)現(xiàn)與更多的擴展實現(xiàn)。

云原生友好

Dubbo 從設(shè)計上是完全遵循云原生微服務(wù)開發(fā)理念的,這體現(xiàn)在多個方面,首先是對云原生基礎(chǔ)設(shè)施與部署架構(gòu)的支持,包括 Kubernetes、Service Mesh 等

Dubbo 眾多核心組件都已面向云原生升級,包括Triple 協(xié)議、統(tǒng)一路由規(guī)則、對多語言支持。值得一提的是,如何使用 Dubbo 支持彈性伸縮的服務(wù)如 Serverless 也在未來計劃之中,這包括利用 Native Image 提高 Dubbo 的啟動速度與資源消耗等。
主要從以下兩點展開 Dubbo 的云原生特性

容器調(diào)度平臺(Kubernetes)

Service MeshKubernetes

Dubbo 微服務(wù)要支持 Kubernetes 平臺調(diào)度,最基礎(chǔ)的就是實現(xiàn) dubbo 服務(wù)生命周期與容器生命周期的對齊,這包括 Dubbo 的啟動、銷毀、服務(wù)注冊等生命周期事件。相比于以往 Dubbo 自行定義生命周期事件,并要求開發(fā)人員在運維實踐過程中遵守約定,Kubernetes 底層基礎(chǔ)設(shè)施定義了嚴格的組件生命周期事件(probe),轉(zhuǎn)而要求 Dubbo 去按約定適配。

Kubernetes Service 是另一個層面的適配,這體現(xiàn)了服務(wù)定義與注冊向云原生底層基礎(chǔ)設(shè)施下沉的趨勢。在這種模式下,用戶不再需要搭建額外的注冊中心組件,Dubbo 消費端節(jié)點能自動對接到 Kubernetes(API-Server 或 DNS),根據(jù)服務(wù)名(Kubernetes Service Name) 查詢到實例列表(Kubernetes endpoints)。 此時服務(wù)是通過標準的 Kubernetes Service API 定義,并被調(diào)度到各個節(jié)點。

Service Mesh

Service Mesh 在業(yè)界得到了廣泛的傳播與認可,并被認為是下一代的微服務(wù)架構(gòu),這主要是因為它解決了很多棘手的問題,包括透明升級、多語言、依賴沖突、流量治理等。Service Mesh 的典型架構(gòu)是通過部署獨立的 Sidecar 組件來攔截所有的出口與入口流量,并在 Sidecar 中集成豐富的流量治理策略如負載均衡、路由等,除此之外,Service Mesh 還需要一個控制面(Control Plane)來實現(xiàn)對 Sidecar 流量的管控,即各種策略下發(fā)。我們在這里稱這種架構(gòu)為經(jīng)典 Mesh。

標簽: 生命周期 基礎(chǔ)設(shè)施 負載均衡

上一篇:如何為 Longhorn 擴展對象存儲能力
下一篇:最資訊丨問題解決系列:io.grpc.netty.shaded.io.netty.handler.ssl.NotSslRecordException_ not an SSL_TLS record