最近,开源社区发生了一件大事,那个全国 Java 开发者使用最广的开源服务框架 Dubbo 低调重启维护,并且 3 个月连续发布了 4 个维护版本。
我上次在写放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结这篇文章的时候,就有很多的网友给我留言说,Dubbo 又开始更新了。我当然是清楚的,我也一直在关注着 Dubbo 的走向,在几个月前技术圈里面就有一个消息说是 Dubbo 又开始更新了,大家议论纷纷不知真伪。我还专门跑到 GitHub 上面进行了留言询问,最后在 Dubbo 的 gitter 聊天室里面找到了确信的答案,说是正在组建团队。虽然稍稍有所期待,但也不知道阿里这次拿出了多少的诚意来做这件事,于是我昨天又到 GitHub 逛了一下,发现从 9 月开始,阿里三个月连着发布了四个版本,还是非常有诚意的,值得关注。
Dubbo 是阿里巴巴公司一个开源的高性能服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案,使得应用可通过高性能 RPC 实现服务的输出、输入功能和 Spring 框架无缝集成。Dubbo 包含远程通讯、集群容错和自动发现三个核心部分。
它提供透明化的远程方法调用,实现像调用本地方法一样调用远程方法,只需简单配置,没有任何 API 侵入。同时它具备软负载均衡及容错机制,可在内网替代 F5 等硬件负载均衡器,降低成本,减少单点。它可以实现服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的 IP 地址,并且能够平滑添加或删除服务提供者。
2011 年末,阿里巴巴在 GitHub 上开源了基于 Java 的分布式服务治理框架 Dubbo,之后它成为了国内该类开源项目的佼佼者,许多开发者对其表示青睐。同时,先后有不少公司在实践中基于 Dubbo 进行分布式系统架构。目前在 GitHub 上,它的 fork、star 数均已破万。
Dubbo核心功能:
发展到开源
2008 年底在阿里内部开始规划调用,2009 年初开发 1.0 版本;2010 年 04 月在 1.0 的版本之上进行了重构,发布了 2.0 版本;2011 年 10 月阿里宣布将 Dubbo 开源,开源的第一个版本为版本 dubbo-2.0.7。
开源成长
Dubbo 开源之后,框架发展比较迅速,几乎两三个月会发布一个版本,于 2012 年 3 月 14 号发布版本 dubbo-2.1.0。随后又进入另一个快速发展期,版本发布频繁,几乎每一个月会发布好几次。直到 2013 年 3 月 17 号发布了 dubbo-2.4.10,版本陷入停滞;2014 年 10 月 30 号发布版本 dubbo-2.4.11,修复了一个小 Bug,版本又陷入漫长的停滞到现在。
阿里之外的发展
2014 年的 10 月 20 号,当当网 Fork 了阿里的一个 Dubbo 版本开始维护,并命名为 dubbox-2.8.0。值得注意的是,当当网扩展 Dubbo 服务框架支持 REST 风格远程调用,并且跟随着 ZooKeepe 和 Spring 升级了对应的版本。之后 Dubbox 一直在小版本维护,2015 年 3 月 31 号发布了最后一个版本 dubbox-2.8.4。
Dubbo团队这三个月都做了什么
目前 Dubbo 的主力开发以阿里巴巴中间件团队为主,同时在阿里内部也招募了一些对 Dubbo 感兴趣的同事。大家要知道,Dubbo 距离今年开始维护的上一个版本是什么时间发布的吗?是 2014 年 10 月 30 号,差了整整将近 3 年,Dubbo 所依赖的 Jdk、Spring、Zookeeper、Zkclient 等等不知道都更新了多少个版本。因此阿里恢复更新的第一步就是适配所依赖的各组件版本,让 Dubbo 所依赖的基础环境不要太落伍,另外也 Fixed 掉了一些严重的 Bug。
dubbo-2.5.4/5版本
2017 年 9 月,阿里发布了 dubbo-2.5.4/5 版本,更新内容如下:
依赖升级
依赖 当前版本 目标版本 影响点
spring 3.2.16.RELEASE 4.3.10.RELEASE schema配置解析;Http RPC协议
zookeeper 3.3.3 3.4.9 常用注册中心
zkclient 0.1 0.10 zookeeper 客户端工具
curator 1.1.16 2.12.0 zookeeper客户端工具
commons-logging 1.1.1 1.2 日志实现集成
hessian 4.0.6 4.0.38 hessian RPC协议
jedis 2.1.0 2.9.0 redis注册中心;缓存RPC
httpclient 4.1.2 4.5.3 hessian等用http连接池
validator 1.0.0 1.1.0.Final java validation规范
cxf 2.6.1 3.0.14 webservice
jcache 0.4 1.0.0 jcache规范
这版在升级相关依赖版本的同时,以问题反馈频率和影响面排定优先级,优先解决了几个反馈最多、影响较大的一些缺陷,包括优雅停机、异步调用、动态配置、MonitorFilter 监控统计等问题。
dubbo-2.5.6版本
2017 年 10 月,阿里发布了 dubbo-2.5.6 版本,又 Fixed 掉了一大批严重的 Bug。
发布内容
dubbo-2.5.7版本
2017 年 11 月,也就是 12 天前,阿里发布了 dubbo-2.5.7。这次不但修复了一批主要的 Bug,还做了一处小功能的完善。
发布内容
这次版本发布内容较多,因此还给出了升级建议。
升级请注意
MonitorService初次调用,如遇zk不可达,当前版本会忽略monitor数据上传,以避免阻塞rpc主流程。
重点
在 2.5.7 版本更新的同时还给出了下一步的预告,近期即将提供 dubbo-spring-boot-starter 启动配置模块。
这个提示说明了两个事情:
说明 Spring Boot 的影响力也越来越大,各种牛逼的开源软件纷纷给出了支持,现在也将包括 Dubbo。