Dubbo Roadmap与将来展望

前言

前几每天看了刘军关于《从 2019 到 2020,Apache Dubbo 年度总结与展望》线上直播,打算对此写个观后感。编程

首先介绍一下刘军,他是Apache Dubbo PMC,项目核心维护者,见证了 Dubbo 从重启开源到 Apache 毕业的整个流程。现任职阿里巴巴中间件团队,参与服务框架、微服务相关工做,目前主要在推进 Dubbo 开源的云原生化。安全

整个线上直播大概一个多小时,整体讲了三个方面,分别是:框架

  • Dubbo社区发展回顾
  • 重要功能解析
  • Roadmap与将来展望

重要功能解析主要是关于2.7.x的特性,这部份内容我会将每一块分为一个主题在后续的文章中一一介绍,本文大体介绍一下直播中讲到的将来展望这部份内容。微服务

Roadmap与将来展望

在将来规划里主要分为四个发力点,分别是:性能

  • 微服务相关功能的加强
  • Dubbo 3.0 协议升级
  • 服务自省
  • 云原生

微服务相关功能的加强

目前微服务相关功能正在作的有Dubbo的鉴权功能、内置熔断能力以及 TLS,在2.7.5版本中已经集成来鉴权功能、链路的安全传输。涉及到业务开发的功能,dubbo在后续还会作进一步加强。spa

Dubbo 3.0 协议升级

在将来会针对Dubbo协议作全面升级,该升级主要涉及到如下几个重要的方向:设计

  • Reactive Stream的支持:前面提到的在协议层面对Reactive Stream的支持,以支持消费端的流式请求,服务端的流式响应或者双向的流式通讯。
  • HTTP/2的支持:由于在微服务云原生场景下,基于 HTTP/2 构建的通讯协议具备更好的通用性和穿透性,因此在3.0协议上会对HTTP/2的支持。
  • 跨语言的支持:针对跨语言的支持,更多的是序列化方面发力。
  • 流量控制的支持:好比Reactive编程里面的request (n)或者 HTTP/2 中提供的流控机制等。
  • 协议升级:由于要考虑到老版本协议如何升级到新版本的协议,因此高版本的协议要提供必定的协议协商机制,相似于 HTTP/2 引入的协议协商机制,高版本的协议还要可以对低版本的协议有必定的包容。
  • 可扩展性加强:主要是Header的metadata部分,须要区分协议扩展和RPC方法的扩展,由于dubbo原来的协议中attachments更多的是为了支持方法的扩展,在新版本的协议中须要支持协议的扩展。
  • Mesh:新版本的协议须要对mesh更友好,方便完成跟mesh的协做。
  • 通用性强:协议设计上要兼顾通用性和性能,可在各类设备上运行。

服务自省

dubbo以前都是基于接口粒度,以后会规划增长应用粒度的服务发现、治理以及选址,由于经过增长应用粒度的支持,能够与主流微服务和云原生模型对齐,而且解决接口带来的性能问题。接下来应用粒度有几个方面能够发力:中间件

  • 以应用粒度注册、注册中心只关注地址变动。
  • 元数据服务提供额外信息。接口

    • 接口列表、方法列表、方法签名等;
    • 实例特有配置;
  • 保持RPC编程风格不变生命周期

    • 继续面向接口编程,无需额外改造
    • 仅经过Registry配置,区别新老服务发现模型;

云原生

  • 服务发现:dubbo的服务发现能力做为sdk在之前的基础设施上能够正常工做,将来须要解决在Kubernetes的一些基础设施上该如何工做,将来但愿能够复用这些基础设施,基于容器调度的能力来复用底层的服务发现能力。
  • 云上、云下互通:将来会考虑云上云下dubbo应用到互通。
  • 平滑迁移:将来但愿能将普通运用能够平滑迁移到容器中。
  • Talk to xDS:在mesh场景下,dubbo可能会考虑对具有xDS协议的标准式配置的下发能力的sdk的支持。
  • 生命周期对齐:将来须要考虑的是dubbo的生命周期如何和容器相关的生命周期进行绑定。 服务治理机制适配:在k8s下,对pod的调度有一套本身的调度机制,它的ip是不停的变化,dubbo有不少治理规则都是强绑定ip的,这些并不适合云原生的服务治理,因此在将来须要解决dubbo在服务治理机制上如何适配的问题。

加点代码调调味.png