NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Apache Dubbo Roadmap 2019

  • 2019-09-22
  • 本文字数:4336 字

    阅读完需:约 14 分钟

Apache Dubbo Roadmap 2019


Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案。它是 Apache 第五个国人主导的顶级项目,到 2019 年 5 月初,Dubbo 在 Github 上有 26683 个星,处于领先的位置,今年 5 月,Apache 软件基金会宣布 Dubbo 正式毕业,成为 Apache 的顶级项目,Dubbo 从 2017 年 7 月开始重新维护到现在 22 个月以来,发布了 17 个版本,最大的变化是修复了之前积攒的 bug,同时加入了很多新特性,第三个变化是重新成立了技术社区,贡献者的数量从原先的 41 到现在的 201,引入了 200 多个贡献者,Commiter 所在公司的数量从 4 家扩展到了 18 家,这些人代表了 Dubbo 社区的声音。



接下来介绍下 Dubbo Star 数的增长趋势,从图中可以看出 Dubbo 和其它的框架相比,自 2017 年 7 月阿里重启 Dubbo 开源,到目前为止 Github Star 数,Contributor 数都有了非常大的提升,Dubbo 增长速度很快,处于领先的位置,这主要是由于 Dubbo 整体的功能比较完善并且社区发展的比较红火。



接下来介绍下 Dubbo 的功能体系和生态体系。从功能体系来看目前微服务关注的点 Dubbo 基本都有涉及,图中蓝色的方块代表的是 Dubbo 重新维护之前就有的功能,绿色的方块代表的是 Dubbo 重新维护之后规划去做的,Dubbo 从它的核心的 Api,注册中心,集群的策略,再到它支持的协议和支持的序列化格式和传输,以及它的路由和负载均衡相关的策略都比较完善,之前是有一些功能,但是因为过了几年相比现在的流行的框架比较滞后,当时的设想就是把这些缺的功能给补全,甚至把阿里内部比较前沿的一些技术也融合进去,使 Dubbo 处于一种比较前沿的位置。


Dubbo 从一开始的定位就是一种典型的 RPC 的扩展,它不光支持各种 RPC 协议,比如两个系统之间的 RPC 通信你使用 Hessian 或者 Http 协议,同时你可以把这些对外暴露的服务注册到注册中心,指定协议调用时使用的序列化的格式,使用哪种格式的传输,如果有多台机器做集群,通过什么样的策略来选择哪些机器符合服务调用的条件,最终哪台机器会被负载均衡选中,来提供服务,这一整套的流程,Dubbo 提供了一个完备的框架,这些早在 10 年前就被设计 Dubbo 的程序员架构师考虑到,重新启动以后,我们将 Dubbo 和 Spring Boot 和 Spring Cloud 进行了深度的融合,把 Sping Cloud 里面一些极佳的特性和好的工具也会融合到 Dubbo 里,另外一个方面就是响应式编程,Dubbo 重启以后对之前支持的不好的异步化的 Api 进行重新梳理和设计,我们就可以使用异步化的 Api 来处理生产和消费的问题,同时在进一步的基础上我们积极拥抱了 RSocket,通过 RScocket 可以很自然地做到响应式的编程模型,性能高效,这会是 3.0 里比较大的一个特性,最后一个方面是 FluentApi,这个主要是考虑到易用性。Dubbo 在注册方面加了很多功能,拥抱 K8s,这是目前微服务鼓励原生做 Service Mesh 方面的基础设施去做的工作。集群方面,不仅支持常规方面的路由,也支持打 Tag 的方式,对集群内部的机器打标签来进行灰度,同时也支持柔性和反压的特性,集群的机器可以根据自身的负载能力动态做出反馈,实现流量权重的动态分配,集群会更具有弹性和柔性,在这个基础上,我们做了更多集群高可用和稳定性相关的工作。协议方面重启以后,除了支持 Rest 协议,同时也包含了 JsonRpc 协议,它可以看做是类似 WebSerivce 的 Rpc 调用,具有简单和跨平台的优点,RSocket 会在 3.0,在序列化方面,加入了 FST,它比较精简,序列化以后的数据量减小到原来的 1/10,还有一个配置协议,是谷歌 2016 年提出来的,底层基于 UDP,但是在 UDP 的基础上封装了可靠性和安全性,这个协议我们觉得未来有很大的发展趋势,这些是目前的扩展和当时规划的事情。



从图中可以看到,当时规划的事情,黑白框表示的是都已经完成的,剩下的是目正在做的,以上是目前的一个时间点看到的 Dubbo 的一些功能组件。



接下来我们看一下 Dubbo 目前的一个生态,生态这方面最主要的讲的是 Dubbo 方面的多语言支持,Dubbo 和 Sping Cloud 原生的 Rest 协议相比,差异化在于大家一直认为 Dubbo 只支持 Java,而 Sping Cloud 基于 Rest 可以在不同的异构的系统里使用,所以 Dubbo 为了适配 Spring Cloud 的这个功能,为了后面更好的拥抱云原生,Service Mesh 这一层,做了多语言的接入,为了支持跨语言 Go,Js 主要是 Node Js,Python 等的接入,这些协议都可以通过代理或者 SideCar 的方式来进行接入调用 Dubbo 的服务,然后服务发现和其它的管理相对应的基础设施在整套的核心体系的外围提供基础的支持。



实际上今天为止,Js 和 Go 的已经比较完善了,各种外围的配套工具,像服务的发现和配置,新的管理控制平台,各种测试的支持和 Trace 跟踪是由 Spring Cloud 团队的的一个同事做的适配,这是 Dubbo 目前整体的一个生态,可以看出 Dubbo 在微服务里配套还是比较齐全的。其实对微服务来说最大的问题不是技术问题,因为技术的问题发展的已经很完善了,我们知道把一个系统引入微服务以后,拆成粒度比较小的系统有很多好处,比如每个系统的开发和维护成本会变低,因为系统变得简单了,但是更大的问题也出现了,比如说把一个很复杂的业务系统拆成 20 个小系统,这 20 个小系统都需要单独的做测试,部署,维护,当系统出了问题,需要对 20 个系统去排查问题,这些对自动化测试,自动化运维,全链路跟踪,监控做提出了非常高的要求,这就对整个研发团队的技术成熟度提出了一定要求,只有当测试,运维,业务方面的监控,自动化的 Trace 做的比较完善时,容器化的改造完成以后,再去做服务化会比较合理。微服务和单体在软件设计里面有两条曲线,叫成熟度的曲线,当你的团队规模很小的时候,单体的成本要比微服务的成本低很多,但是随着你的团队规模的增大,微服务的成本虽然起点很高,但是它的复杂度是比较平稳的,不会增加很多,比如你有 50 个开发人员和 500 个开发人员,你使用微服务的方式在保持业务的复杂度和质量的情况下是可以往前扩展的,但是单体的复杂度和成本会随着业务的复杂度逐渐递增,中间有个交叉点,这个交叉点和团队规模,业务复杂度和你的技术成熟度这几个选项有关系,超过这个交叉点就需要进行微服务改造,超不过这个点业也许单体是更好的选择。



再看一下整个 Dubbo 在 2019 年需要做哪些事情,在 5 月中旬 Apache 已经毕业了,6 月份发布了 2.6.7 的版本,再往下基本上每个月发布一个版本,3.0 的版本计划在 2020 年 2 月份推出,目前维护的主流的版本是 2.7,现在 Dubbo 为了维护社群的生态,每个月会在一个城市举办技术沙龙。



Dubbo 2.7 是维护的主流的版本,特别是新注册的机制和与 k8s 的配合都会在陆续的两个月推出来,同时计划在 Q3 的时候会进一步把 k8s 完善掉,把 Dubbo 的 Go 语言的版本发布出来,现在这一块很多公司已经在用,但是没有合并大 Dubbo 的主干分支上,还在单独的一个分支上,但是已经比较成熟,Q4 的时候主要去支持下 Service Mesh,包括在 2020 年的 Q1 的时候主要去拥抱下云原生和 Service Mesh 的浪潮。



Dubbo 3.0 的路线图更加明确,一方面会继续拥抱云原生,同时会把响应式和异步化做好,把对 Rx 的支持做好, 同时我们一直在设想,做另外一件事情,响应式微服务这个概念非常火,我们知道微服务架构不管外部系统还是内部系统都走的 Rest,对外提供 Rest 是因为容易接入好管理,但是我们知道走 Rest,Http,Json 不是一种效率很高的调用方式,所以在内部应该会有更易用,更高效的方式去管理,去调用,所以这个是现在提响应式微服务架构在思考和尝试的事情。比如说我们也尝试另外一套技术栈,叫 Vert.X,Vert.X 对外提供 Rest 服务,它对外提供 Rest 调用,内部是一种 EventBus,内部所有的节点通讯是不走 RPC 调用的,类似 actor 模型,一个节点可以直接通过地址向另一个节点发消息,只要在内部一个大的集群内,这样一种方式要远远比走 RPC 调用更高效,而且这种异步的处理方式可以使系统不管存储量还是延迟降低很多,这是后面我们需要考虑的重点因素,好多的东西都会围绕这个来做。



最后两块我们看下整个的部署模式的改造,一块是和 Spring Cloud 结合,另一块是和 Service Mesh 相结合,从当前的部署模式可以看到,Dubbo 的 Client 和 Server 分别去注册和订阅它的注册中心,然后调用的时候通过一个代理和 Dubbo 的 Server 去通讯,然后非 Dubbo 的情况下,会不走 Dubbo 的注册和发现机制,但是一样是可以调用的,希望在未来可以和 Sping Cloud 的技术栈打通,所有的调用都是直连的。



另外一个方面主要是与 Service Mesh 的结合,主要是利用 K8s 的基础的元数据的管理能力和服务发现能力,所有的 Service Mesh 其实就是,不管是使用 Dubbo 还是 Spring Cloud 就会发现我们在我们的程序中会有很多控制路由,控制我们网络流量的流控,比如做我们线程调用的管控和调用速度的管控,和系统 load 负载的管控,这些和业务都没有关系,我们用的中间件可以把这些从业务复杂度中抽离出来,下沉,但是现在负责业务处理的和负责策略处理的在一个进程里,Servie Mesh 的想法是把这些策略的东西向下沉,沉到更下一部的基础设施层,就跟我们业务本身的进程没有关系,业务的进程只需要处理业务本身就可以了,这样的话,下面处理这些策略限流,流控管理,跟踪,服务发现,元数据,把这些东西抽象出来,就是 Service Mesh ,它贯穿在提供服务能力的各个节点上,相互之间可以通讯,这样的话就组成网格,所以就叫做 Mesh,如果 Service Mesh 的东西发展的非常好,我们微服务业务层就会做的很薄,开发人员只需要专注于自己的业务,提供自己的服务,消费自己的服务,而不用关心自己的服务在哪里,下沉的 Mesh 层都帮忙给处理掉了。



最后是 Dubbo 在 ISTIO 上的部署,除了部署在 K8s 上,还可以部署在 ISTIO 上,其实都是类似的方式,这些都是 Dubbo 未来要做的事情。


作者介绍


秦金卫 ( KimmKing ) ,现火币集团研发中心高级技术总监、Apache Dubbo PMC ,前阿里架构师/某商业银行北京研发中心负责人,阿里云 MVP 、TGO 鲲鹏会会员。关注于互联网,电商,金融,支付,区块链等领域,熟悉海量并发低延迟交易系统的设计实现,10 多年研发管理和架构经验,对于中间件、SOA 、微服务,热爱各种开源技术和分享布道,活跃于 Dubbo、Fastjson、ActiveMQ 等多个开源社区。《 微服务架构实战:基于 Dubbo、Spring Cloud 和 Service Mesh 》作者之一。


个人博客:


http://kimmking.github.io


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247493496&idx=2&sn=b746895ce8f0cc971ef254e5047b2ff3&chksm=fbd75514cca0dc0215e66ce5eb506c18ce5194234387fac69353f985ca1041f6159b504fb840&scene=27#wechat_redirect


2019-09-22 08:002795

评论

发布
暂无评论
发现更多内容

高效运维|AIRIOT智慧电力运维解决方案

AIRIOT

数据分析 物联网平台 电力 智慧电力 智能控制

程序员 MAC 电脑上的必装软件

这我可不懂

MappedByteBuffer VS FileChannel:从内核层面对比两者的性能差异

bin的技术小屋

jdk Linux Kenel FileChannel mmap内存映射

Dynamic Wallpaper for Mac(Mac动态壁纸桌面)v17.6中文版

影影绰绰一往直前

Clipboard Manager for mac(mac剪贴板管理软件)v2.6.0激活版

影影绰绰一往直前

MarkMyWords for mac(高级Markdown编辑器)v2.10.0激活版

影影绰绰一往直前

2024上海国际智能楼宇技术与安防产品展览会

吹吹晚风

如何构建一台机器学习服务器

EquatorCoco

机器学习 数据库 服务器

MCtalk·CEO对话×e签宝丨如何修好SaaS生态建设这门CEO必修课?

ToB行业头条

《自动机理论、语言和计算导论》阅读笔记:p49-p67

codists

编译原理

2024 BOE(京东方)全球供应商合作伙伴大会举行 开启全球显示产业融合共生新篇章

爱极客侠

IPQ9574 vs. IPQ8074: A comparison and selection guide between the two chips

wifi6-yiyi

IPQ8074 ipq9574

ViWizard Audio Capture for Mac(多功能录音工具)v2.1.0激活版

影影绰绰一往直前

对话 Mines of Dalarnia: Web3 游戏创新,社区驱动与公链共建

Footprint Analytics

gamefi #Web3

软件测试学习笔记丨软件测试基础概念

测试人

软件测试

2024运维堡垒机品牌排名看这里!

行云管家

运维 堡垒机 IT运维 运维堡垒机 网咯安全

文心千帆:从PPT制作到数字人主播,ERNIE-Bot|BLOOMZ大模型调优与RLHF训练全攻略

百度开发者中心

大模型 千帆

人大金仓助力吉林省属国企核心财务系统批量上线

科技热闻

ERC314协议的背后,可能存在权限作恶的风险

加密先生

BOE(京东方)国内首条第8.6代AMOLED生产线奠基 推动中国OLED显示产业再飞跃

爱极客侠

Cookie for Mac(浏览器缓存清理工具)v7.2.7免激活版

影影绰绰一往直前

独立站如何做好移动端的优化处理呢?

技术冰糖葫芦

API 接口

OmniReader Pro for mac(专业电子书阅读器)v2.9.0激活版

影影绰绰一往直前

Password Repository for Mac(适用于macOS的密码管理器)v4.3.2激活版

影影绰绰一往直前

2024陕西省等级保护测评机构一览表【新】

行云管家

等保 等保测评

黑盒Prompt优化:提升大模型反馈效果的新思路

百度开发者中心

大模型 Prompt

听完这期音视频发展史,才更清楚元宇宙到底还行不行|编码人声

声网

Tabby for mac(现代化终端模拟器)v1.0.207免费版

影影绰绰一往直前

TunesKit Audio Capture for Mac(音频录制和音乐嗅探软件)v3.2.0激活版

影影绰绰一往直前

咸鱼翻身啦!咸鱼之王完美内购版架设教程

echeverra

咸鱼之王

Microsoft Outlook 2021 LTSC for Macv16.82Beta/v16.83.2中文正式版

影影绰绰一往直前

Apache Dubbo Roadmap 2019_文化 & 方法_DataFunTalk_InfoQ精选文章