Dubbo 2.7.0 發佈,分佈式 RPC 服務框架

Dubbo 2.7.0 發佈。Dubbo 是阿里巴巴公司開源的一個高性能優秀的服務框架,使得應用可通過高性能的 RPC 實現服務的輸出和輸入功能,可以和 Spring 框架無縫集成。

據開源中國對 Dubbo 的項目負責人北緯的採訪Dubbo 重啓維護一年多,現在還活着嗎?,新版本的更新亮點有:

Dubbo 2.7.0 添加了社區呼聲很高的異步化支持、以及註冊中心與配置中心分離這兩個特性。

與 2.6 及以前的版本相比,異步化支持不再侷限於基於 Future 接口的異步,也不再僅僅侷限於只能在客戶端異步。具體來說,Dubbo 2.7.0 版本全面擁抱 JDK8,在客戶端開始支持基於 CompletableFuture 的異步編程範式,在服務端支持基於 AsyncContext 的異步模型。

2.6 及以前的版本,元數據全部存儲在 URL 上,配置信息和註冊信息只能存儲在註冊中心上,註冊中心的容量和擴展成爲瓶頸。這個限制在使用 ZooKeeper 作爲註冊中心的大規模 Dubbo 應用場景下尤爲突出。

在 2.7.0 中,通過對 URL 的改造,將註冊中心拆分成了三個中心,分別是註冊中心、配置中心和元數據中心,三者各司其責,不僅有效地解決了上述容量問題,而且很好地適應了微服務的技術架構,用戶可以開始自由選擇適合自己場景的註冊中心和配置中心。

2.7.0 將內建支持 ZooKeeper、Nacos 和 Apollo 等第三方註冊和配置中心,在後續的版本中,還會進一步提供對 Consul 和 etcd 的支持。另外,通過引入一個全新的元數據中心,將與註冊配置無關的服務信息單獨存儲,除了減輕配置中心與註冊中心的工作壓力之外,還爲將來更豐富的服務治理打下基礎。未來,Dubbo 會基於元數據中心提供服務測試、服務 Mock 以及服務 API 管理等特性。

針對三個中心的分離,Dubbo 還會配套發佈全新設計的 Dubbo Ops 控制檯

另外,2.7.x 會是 Dubbo 在 Apache 軟件基金會畢業的版本,安裝包包名正式切換到了 org.apache.dubbo,爲了保證向前的兼容性,我們還在這個版本中提供了 com.alibaba.dubbo 的兼容包。

Dubbo 2.7.0 具體更新內容 如下:

(環境要求:需要Java 8及以上版本支持)

New Features

  • 服務治理規則增強。
  • 更豐富的服務治理規則,新增應用級別條件路由、Tag路由等
  • 治理規則與註冊中心解耦,增加對Apollo等第三方專業配置中心的支持,更易於擴展
  • 新增應用級別的動態配置規則
  • 規則體使用更易讀、易用YAML格式
  • 外部化配置。支持讀取託管在遠程的集中式配置中心的dubbo.properties,實現應用配置的集中式管控。
  • 更精煉的註冊中心URL,進一步減輕註冊中心存儲和同步壓力,初步實現地址和配置的職責分離。
  • 新增服務元數據中心,負責存儲包括服務靜態化配置、服務定義(如方法簽名)等數據,默認提供Zookeeper, Redis支持。此功能也是OPS實現服務測試、Mock等治理能力的基礎。
  • 異步編程模式增強(限定於Dubbo協議)
  • 原生CompletableFuture簽名接口支持
  • 服務端異步支持
  • 異步Filter鏈
  • 新增Protobuf序列化協議擴展
  • 新增ExpiringCache緩存策略擴展

Enhancements / Bugfixes

  • 負載均衡策略優化,包括ConsitentHash(#2190) 、LeastActive(#2171)、Random(#2597) 、RoundRobin(#2586) (#2650)
  • 升級第三方依賴:默認通信框架爲netty 4、默認ZK客戶端爲Curator、Jetty 9k
  • 增加地址讀取時對IPV6的支持(#2079)
  • 性能優化,鏈接關閉的情況下使得Consumer快速返回 (#2185)
  • 修復Jdk原生類型在kryo中的序列化問題 (#2178)
  • 修復Provider端反序列化失敗後,沒有及早通知Consumer端的問題 (#1903)

升級與兼容性

此次版本發佈我們遵循了保持和老版本兼容的原則,尤其是在一些可能會破壞2.7版本與低版本互操作性的問題上,我們增加了一些兼容性代碼,典型如服務治理規則、Package重命名、註冊URL簡化等。

  1. Package重命名

com.alibaba.dubbo -> org.apache.dubbo

  1. 註冊URL簡化
  2. 服務治理規則
  3. 配置
相關文章