你们好,今天给你们分享 — 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
官方已经在兼容性方面作了很是多工做,可是我以为目前这个版本能够做为技术调研,用在生产环境还需等待更多的验证。测试