
??【Dubbo3入門到精通】總體技術(shù)體系介紹及技術(shù)指南(目錄)??
本系列專題是關(guān)于 Dubbo 的簡單介紹,涵蓋Dubbo的核心概念、基本使用方式以及Dubbo3核心功能。
Dubbo3 是在云原生背景下誕生的,使用 Dubbo 構(gòu)建的微服務(wù)遵循云原生思想,能更好的復(fù)用底層云原生基礎(chǔ)設(shè)施、貼合云原生微服務(wù)架構(gòu)。這體現(xiàn)在:
(資料圖)
點對點的服務(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 的啟動速度與資源消耗等。容器調(diào)度平臺(Kubernetes)
Service MeshKubernetesDubbo 微服務(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 在業(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è)施 負載均衡