Dubbo3 新版本特性速覽

2022-04-24 16:30 更新

Dubbo3 相比 2.7 版本進(jìn)行了全面的升級,以下是新增的一些核心特性

全新服務(wù)發(fā)現(xiàn)模型

相比于 2.x 版本中的基于接口粒度的服務(wù)發(fā)現(xiàn)機(jī)制,3.x 引入了全新的基于應(yīng)用粒度的服務(wù)發(fā)現(xiàn)機(jī)制, 新模型帶來兩方面的巨大優(yōu)勢:

  • 進(jìn)一步提升了 Dubbo3 在大規(guī)模集群實踐中的性能與穩(wěn)定性。新模型可大幅提高系統(tǒng)資源利用率,降低 Dubbo 地址的單機(jī)內(nèi)存消耗(50%),降低注冊中心集群的存儲與推送壓力(90%), Dubbo 可支持集群規(guī)模步入百萬實例層次。
  • 打通與其他異構(gòu)微服務(wù)體系的地址互發(fā)現(xiàn)障礙。新模型使得 Dubbo3 能實現(xiàn)與異構(gòu)微服務(wù)體系如Spring Cloud、Kubernetes Service、gRPC 等,在地址發(fā)現(xiàn)層面的互通, 為連通 Dubbo 與其他微服務(wù)體系提供可行方案。

在 Dubbo3 前期版本將會同時提供對兩套地址發(fā)現(xiàn)模型的支持,以最大程度保證業(yè)務(wù)升級的兼容性。

下一代 RPC 通信協(xié)議

定義了全新的 RPC 通信協(xié)議 – Triple,一句話概括 Triple:它是基于 HTTP/2 上構(gòu)建的 RPC 協(xié)議,完全兼容 gRPC,并在此基礎(chǔ)上擴(kuò)展出了更豐富的語義。 使用 Triple 協(xié)議,用戶將獲得以下能力

  • 更容易到適配網(wǎng)關(guān)、Mesh架構(gòu),Triple 協(xié)議讓 Dubbo 更方便的與各種網(wǎng)關(guān)、Sidecar 組件配合工作。
  • 多語言友好,推薦配合 Protobuf 使用 Triple 協(xié)議,使用 IDL 定義服務(wù),使用 Protobuf 編碼業(yè)務(wù)數(shù)據(jù)。
  • 流式通信支持。Triple 協(xié)議支持 Request Stream、Response Stream、Bi-direction Stream

云原生

Dubbo3 構(gòu)建的業(yè)務(wù)應(yīng)用可直接部署在 VM、Container、Kubernetes 等平臺,Dubbo3 很好的解決了 Dubbo 服務(wù)與調(diào)度平臺之間的生命周期對齊,Dubbo 服務(wù)發(fā)現(xiàn)地址 與容器平臺綁定的問題。

在服務(wù)發(fā)現(xiàn)層面,Dubbo3 支持與 Kubernetes Native Service 的融合,目前限于 Headless Service。

Dubbo3 規(guī)劃了兩種形態(tài)的 Service Mesh 方案,在不同的業(yè)務(wù)場景、不同的遷移階段、不同的基礎(chǔ)設(shè)施保障情況下,Dubbo 都會有 Mesh 方案可供選擇, 而這進(jìn)一步的都可以通過統(tǒng)一的控制面進(jìn)行治理。

  • 經(jīng)典的基于 Sidecar 的 Service Mesh
  • 無 Sidecar 的 Proxyless Mesh

用戶在 Dubbo2 中熟知的路由規(guī)則,在 3.x 中將被一套統(tǒng)一的流量治理規(guī)則取代,這套統(tǒng)一流量規(guī)則將覆蓋未來 Dubbo3 的 Service Mesh、SDK 等多種部署形態(tài), 實現(xiàn)對整套微服務(wù)體系的治理。

擴(kuò)展點分離

Dubbo3 的 maven 也發(fā)生了一些變化,?org.apache.dubbo:dubbo:3.0.0? 將不再是包含所有資源的 all-in-one 包,一些可選的依賴已經(jīng)作為獨立組件單獨發(fā)布, 因此如果用戶使用了不在 ?dubbo ?核心依賴包中的獨立組件,如 registry-etcd、rpc-hessian 等,需要為這些組件在 pom.xml 中單獨增加依賴包。

Zookeeper 擴(kuò)展實現(xiàn)仍在核心依賴包中,依賴保持不變

<properties>
    <dubbo.version>3.0.0</dubbo.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>${dubbo.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-dependencies-zookeeper</artifactId>
        <version>${dubbo.version}</version>
        <type>pom</type>
    </dependency>
</dependencies>

Redis 擴(kuò)展實現(xiàn)已經(jīng)不在核心依賴包中,如啟用了 Redis 相關(guān)功能,需單獨增加依賴包

<properties>
    <dubbo.version>3.0.0</dubbo.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>${dubbo.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-dependencies-zookeeper</artifactId>
        <version>${dubbo.version}</version>
        <type>pom</type>
    </dependency>

    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-registry-redis</artifactId>
        <version>${dubbo.version}</version>
    </dependency>
</dependencies>
詳情請參見擴(kuò)展點實現(xiàn)列表

服務(wù)柔性

尚未發(fā)布

Dubbo3.0 的柔性增強(qiáng)以面向失敗設(shè)計為理念,提供包括精準(zhǔn)容量評估、自適應(yīng)限流、自適應(yīng)負(fù)載均衡的支持,自底向上的分步構(gòu)建大規(guī)??煽繎?yīng)用。 從單一服務(wù)的視角看,服務(wù)是壓不垮的,穩(wěn)定的。從分布式視角看,復(fù)雜的拓?fù)洳粫硇阅艿南陆?,分布式?fù)載均衡能夠以最優(yōu)的方式動態(tài)分配流量,保證異構(gòu)系統(tǒng)能夠根據(jù)運(yùn)行時的準(zhǔn)確服務(wù)容量合理分配請求,從而達(dá)到性能最優(yōu)。

全面的性能提升

對比 2.x 版本,Dubbo3 版本

  • 服務(wù)發(fā)現(xiàn)資源利用率顯著提升。
    • 對比接口級服務(wù)發(fā)現(xiàn),單機(jī)常駐內(nèi)存下降 50%,地址變更期 GC 消耗下降一個數(shù)量級 (百次 -> 十次)
    • 對比應(yīng)用級服務(wù)發(fā)現(xiàn),單機(jī)常駐內(nèi)存下降 75%,GC 次數(shù)趨零
  • Dubbo 協(xié)議性能持平,Triple 協(xié)議在網(wǎng)關(guān)、Stream吞吐量方面更具優(yōu)勢。
    • Dubbo協(xié)議 (3.0 vs 2.x),3.0 實現(xiàn)較 2.x 總體 qps rt 持平,略有提升
    • Triple協(xié)議 vs Dubbo協(xié)議,直連調(diào)用場景 Triple 性能并無優(yōu)勢,其優(yōu)勢在網(wǎng)關(guān)、Stream調(diào)用場景。

詳情請參考Benchmark

Native Image

詳情請參考使用 GraavlVM 構(gòu)建 Dubbo Native Image



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號