1

前言

前几天看了刘军关于《从 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在后续还会做进一步增强。

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


加点代码调调味
438 声望1k 粉丝

把热爱的事情做到极致,便成了价值。