你們好,今天給你們分享 — Dubbo 3.0.0
相關簡介。首先給你們說聲抱歉!由於 Dubbo 3.0.0
已經在 6月14日已經發布了最新的 release
版本,因爲在作一些《Dubbo
高階教程》前期準備工做全部一直沒有時間進行更新。之後若是 Dubbo
有重要的新版本發佈做者會在第一時間進行相關的分享。下面就開始咱們今天的內容吧!git
首先咱們先來看看 Dubbo
在 Github
發佈的新特性:apache
RPC
協議: Triple
Kubernetes
服務集成其中咱們着重瞭解下應用級別服務與Kubernetes
服務集成支持。Dubbo 3.0.0
主要在雲服務能力上作了新的能力提高。爲何這麼說呢?由於做者以前在工做中集成 Kubernetes
時候服務註冊中心這個組件能力就很是的尷尬,由於 Kubernetes
自己就提供了服務註冊與發現能力,可是不能和 Dubbo
完美整合起來。所以在Dubbo 3.0.0
以前咱們的實現方式可能就是在 Kubernetes
部署一個 zookeeper
服務集羣來進行服務註冊與發現。但這樣的實現方式在雲服務應用來講並非太合適,這種服務註冊和發現能力交給基礎服務組件來實現比較合適。同時 Dubbo 3.0.0
改變之前的接口級
服務註冊而是採用應用級
服務註冊,什麼意思呢?好比在3.0.0
版本前全部的服務都是以接口
形式的元數據進行註冊以下元數據:json
dubbo://192.168.101.8:20880/com.example.demo.async.api.BookFacade?anyhost=true&application=demo-provider&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.example.demo.async.api.BookFacade&metadata-type=remote&methods=queryByName,queryAll&pid=53639&release=3.0.0&side=provider×tamp=1624889509797 dubbo://192.168.101.8:20880/com.example.demo.common.api.FoodFacade?anyhost=true&application=demo-provider&deprecated=false&dubbo=2.0.2&dynamic=true&generic=false&interface=com.example.demo.common.api.FoodFacade&metadata-type=remote&methods=findAll&pid=53639&release=3.0.0&side=provider×tamp=1624889510225
咱們能夠看到若是咱們以接口級
進行服務註冊會存在大量的重複數據,這樣就會致使註冊中心數據與接口數量成正比,接口越多註冊的元數據就越多。而若是咱們以應用級
服務註冊會是怎樣的?下面是應用級服務註冊的共享元數據:api
{ "name": "demo-provider", "id": "192.168.101.8:20880", "address": "192.168.101.8", "port": 20880, "sslPort": null, "payload": { "@class": "org.apache.dubbo.registry.zookeeper.ZookeeperInstance", "id": null, "name": "demo-provider", "metadata": { "anyhost": "true", "application": "demo-provider", "deprecated": "false", "dubbo": "2.0.2", "dubbo.endpoints": "[{\"port\":20880,\"protocol\":\"dubbo\"}]", "dubbo.metadata-service.url-params": "{\"version\":\"1.0.0\",\"dubbo\":\"2.0.2\",\"release\":\"3.0.0\",\"port\":\"20880\",\"protocol\":\"dubbo\"}", "dubbo.metadata.revision": "525892dddd25ea459ee539d0734b2f1a", "dubbo.metadata.storage-type": "remote", "dynamic": "true", "generic": "false", "interface": "com.example.demo.async.api.BookFacade",//多個服務接口只保存一個 "metadata-type": "remote", "methods": "queryByName,queryAll", "pid": "63941", "release": "3.0.0", "side": "provider", "timestamp": "1624891074206" } }, "registrationTimeUTC": 1624891075236, "serviceType": "DYNAMIC", "uriSpec": null }
從這些共享元數據能夠看出應用級註冊減小了大量重複的元數據,能最大幅度的減輕註冊中心的存儲、推送壓力,進而減小 Dubbo
消費端的地址計算壓力。集羣規模也開始變得可預測、可評估(與 RPC 接口數量無關,只與實例部署規模相關)。app
如下是應用級
別服務註冊與接口級
服務註冊元數據對比圖讀者能夠自行對比下:async
在官方 GitHub
上面是這樣描述的Compatible with almost all the same behavior as version 2.7.
從字面意思咱們能夠認爲 Dubbo 3.0.0
是全面兼容 Dubbo2.7.x
全部的功能。所以若是咱們但願升級到 Dubbo 3.0.0
那咱們最好是先升級到 Dubbo 2.7.x
而後再進行 Dubbo 3.0.0
升級。固然Dubbo 2.7.x
-> Dubbo 3.0.0
升級 Dubbo
官方也給出了一些升級指南能夠參考 Dubbo
官方手冊進行升級。ide
在官方 GitHub
上面已經明確說明對第三方 SDK
的拓展在 Dubbo
的核心發佈版本將再也不支持,可是咱們能夠經過dubbo-spi-extensions
項目來對頻繁使用的拓展進行支持。如下是當前支持的拓展:性能
Zookeeper
做爲註冊中心、配置中心、元數據中心Nacos
做爲註冊中心、配置中心、元數據中心Kubernetes
做爲註冊中心Redis
做爲元數據中心Apollo
做爲配置中心Hessian2
與 Jdk
做爲默認支持的序列化方式Protobuf
對 Triple
協議支持在本小節中咱們主要了解了 Dubbo 3.0.0
中新的相關特性。咱們能夠了解到 Dubbo 3.0.0
不只僅增長了新的特性,同時也在性能上作了很大的提高(後面有時間作性能測試),支持新的 Triple
RPC
協議,其中最爲重要的是在對雲原生服務的相關支持。目前我的認爲 Dubbo 3.0.0
仍是一個新的產物在社區還未獲得大規模的應用,雖然 Dubbo
官方已經在兼容性方面作了很是多工做,可是我以爲目前這個版本能夠做爲技術調研,用在生產環境還需等待更多的驗證。測試