Dubbo 3.0 预览版解读,支持 Filter 链的异步化

阿里巴巴中间件
 阿里巴巴中间件
发布于 2019年04月19日
收藏 13

自去年 12 月开始,Dubbo 3.0 便已正式进入开发阶段,并备受社区和广大 Dubbo 用户的关注,本文将为您详细解读 3.0 预览版的新特性和新功能。

下面先解答一下两个有意思的与 Dubbo 相关的疑问。

  • 为什么 Dubbo 一开源就是 2.0 版本?之前是否存在 1.0 版本?

    笔者曾做过 Dubbo 协议的适配兼容,Dubbo 确实存在过 1.x 版本,而且从协议设计和模型设计上都与 2.0 的开源版本协议是完全不一样的。下图是关于 Dubbo 的发展路径:

  • 阿里内部正在使用 Dubbo 开源版本吗?

    是的,非常确定,当前开源版本的 Dubbo 在阿里巴巴被广泛使用,而阿里的电商核心部门是用的 HSF2.2 版本,这个版本是兼容了 Dubbo 使用方式和 Remoting 协议。当然,我们现在正在做 HSF2.2 的升级,直接依赖开源版本的 Dubbo 来做内核的统一。所以,Dubbo 是得到大规模线上系统验证的分布式服务框架,这一点毋容置疑。

     

Dubbo 3.0 预览版的要点


Dubbo 3.0 在设计和功能上的新增支持和改进,主要是以下四方面:

  • Dubbo 内核之 Filter 链的异步化

    这里要指出的是,3.0 中规划的异步去阻塞和 2.7 中提供的异步是两个层面的特性。2.7 中的异步是建立在传统 RPC 中 request – response 会话模型上的,而 3.0 中的异步将会从通讯协议层面由下向上构建,关注的是跨进程、全链路的异步问题。通过底层协议开始支持 streaming 方式,不单单可以支持多种会话模型,还可以在协议层面开始支持反压、限流等特性,使得整个分布式体系更具有弹性。综上所述,2.7 关注的异步更局限在点对点的异步(一个 consumer 调用一个 provider),3.0 关注的异步化,宽度上则关注整个调用链上的异步,高度上则向上又可以包装成 Rx 的编程模型。有趣的是,Spring 5.0 发布了对 Flux 的支持,随后开始解决跨进程的异步问题。

  • 功能方面是 reactive(响应式)支持

    最近几年, reactive programming这个词语的热度迅速提升,Wikipedia 上的 reactive programming 解释是 reactive programming is a programming paradigm oriented around data flows and the propagation of change. Dubbo3.0会实现Reactive Stream 的 rx 接口,从而能让用户享受到RP带来的响应性提升,甚至面向 RP 的架构升级。当然,我们希望 reactive 不单单能够带来事件(event)驱动的应用集成方式的升级,也希望在 Load Balance(选择最优的服务节点),fault tolerance(限流降级时最好做到自适应)等方面发挥其积极价值。

  • 云原生/ ServiceMesh 方向的探索

    我们定下的策略是进入 Envoy 社区来实现 Dubbo 融入 mesh 的理念思想,目前 Dubbo 协议已经被 Envoy 支持。当然,Dubbo Mesh 离真正可用还有很长一段距离,其在选址、负载均衡和服务治理方面的工作需要继续在数据面建设,另外,控制面板的建设在社区也没有提上日程。

  • 融合并支持阿里内部

    Dubbo 3.0 定下了内外融合的策略,也就是说 3.0 的核心最终会在阿里巴巴的生产系统中部署,相信通过大流量、大规模的考验,Dubbo 用户可以获得一个性能、稳定、服务治理实践各方面俱佳的核心,用户在生产系统中采用 3.0 也会更加放心。这一点也是 Dubbo 3.0 最重要的使命。

 

当前 Dubbo 3.0 将提供具备当代特性(如响应性编程)的相关支持,同时汲取阿里内部 HSF 的设计长处来实现两者的融合,当前预览版的很多地方还在探讨中,希望大家能够积极反馈,我们都会虚心学习并参考。

 

Dubbo 3.0 sample @GitHub:

https://github.com/apache/incubator-dubbo-samples/tree/3.x

 

本文作者:

覃柳杰(花名:未宇)

Github ID: qinliujie,阿里巴巴中间件开发,Dubbo 开源项目 PMC,参与 HSF2.2和 Dubbo3.0 的设计和开发。

吕仁琦(花名:空冥)

Github ID: jefflv,阿里巴巴中间件开发,Dubbo 开源项目 commiter,参与了内部 HSF2.0 的设计和开发。

刘军(花名:陆龟)

阿里巴巴中间件高级开发工程师,Apache Dubbo (Incubating)PPMC,深度参与 Dubbo 项目开发,主要贡献者之一。

谢育能(花名:思邪)

阿里巴巴中间件开发,Dubbo 3.0 开源项目的响应式模块的负责人,参与了内部 HSF2.2 的设计和开发。

 

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Dubbo 3.0 预览版解读,支持 Filter 链的异步化
加载中

精彩评论

熊猫大侠到此一游
熊猫大侠到此一游
starter给力点啊

最新评论(6

熊猫大侠到此一游
熊猫大侠到此一游
starter给力点啊
蒲池幸子
蒲池幸子
期待
kut
kut

引用来自“Skqing”的评论

这次 咋没人喷了呢?
我来喷。
Skqing
Skqing
这次 咋没人喷了呢?
爱吃土豆了
爱吃土豆了
期待
唐代de豆腐
唐代de豆腐
返回顶部
顶部