Dubbo 3.0.0 来了!还学得动吗?

前言

你们好,今天给你们分享 — Dubbo 3.0.0 相关简介。首先给你们说声抱歉!由于 Dubbo 3.0.0 已经在 6月14日已经发布了最新的 release 版本,因为在作一些《Dubbo高阶教程》前期准备工做全部一直没有时间进行更新。之后若是 Dubbo 有重要的新版本发布做者会在第一时间进行相关的分享。下面就开始咱们今天的内容吧!git

1. Dubbo 3.0.0 简介

首先咱们先来看看 DubboGithub 发布的新特性: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

2. 元数据对比

如下是应用级别服务注册与接口级服务注册元数据对比图读者能够自行对比下:async

Dubbo3与老版本注册数据

3. 版本升级

在官方 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

4. 拓展说明

在官方 GitHub 上面已经明确说明对第三方 SDK 的拓展在 Dubbo 的核心发布版本将再也不支持,可是咱们能够经过dubbo-spi-extensions项目来对频繁使用的拓展进行支持。如下是当前支持的拓展:性能

  • Zookeeper 做为注册中心、配置中心、元数据中心
  • Nacos 做为注册中心、配置中心、元数据中心
  • Kubernetes 做为注册中心
  • Redis 做为元数据中心
  • Apollo 做为配置中心
  • Hessian2Jdk 做为默认支持的序列化方式
  • ProtobufTriple 协议支持

5. 小结

在本小节中咱们主要了解了 Dubbo 3.0.0 中新的相关特性。咱们能够了解到 Dubbo 3.0.0 不只仅增长了新的特性,同时也在性能上作了很大的提高(后面有时间作性能测试),支持新的 Triple RPC 协议,其中最为重要的是在对云原生服务的相关支持。目前我的认为 Dubbo 3.0.0 仍是一个新的产物在社区还未获得大规模的应用,虽然 Dubbo 官方已经在兼容性方面作了很是多工做,可是我以为目前这个版本能够做为技术调研,用在生产环境还需等待更多的验证。测试

相关文章
相关标签/搜索