
本文作者 | 于雨
引语
dubbogo 项目已进入第五个年头。
项目发展的前两年,我们把 hessian2 协议库、网络库和整体基础框架搭建一番。从 2018 年项目被 Dubbo 官方接纳开始,依托阿里平台,社区开始形成并快速发展。与社区同学们齐心合力之下,如今全面兼容 Dubbo v2.7.x 的 Dubbo-go v1.5.1 已经发布。
立项
一个项目整体必须提炼出核心目标,指明其存在的意义和价值。有了初心,项目发展过程中产生困惑时,才能明确答复 “我是谁?从哪里来?到哪里去”。
1. dubbogo
dubbogo 项目有其自身的 milestone 要求,大致规划了每个阶段的关键里程碑,在项目发展初期仅仅是实现 Dubbo 的某个功能,但在发展过程中会不断结合当下的技术发展潮流,不断修正其未来发展方向。
其发版计划是通过“开发当前版本、规划新版本、根据反馈修正新版本”的模式定义当前版本的开发内容和下一个版本的发展方向。每次发版后会根据社区使用反馈对下一代的发展目标进行修正。
站在吃瓜人的角度,或许可以说出 “dubbogo 不就是 dubbo 的 Go 语言版本嘛,照着抄就是了” 之类的论调。而参与过 dubbogo 项目跟着社区一路走来的人,就知道 dubbogo 并不简单定位于 Dubbo 项目的 Go 语言版本。
dubbogo 初心不变,不同时间对自身定位均有升级。我认为当前 dubbogo 的定位是:
-
全面兼容 Dubbo; -
一个 Go 语言应用通信框架,充分利用作为云原生时代第一语言---Go 语言的优势,扩展 dubbo 的能力。
2. dubbo-go-proxy
-
做一个具有生产使用意义的网关; -
dubbo-go-proxy 验证 dubbogo 的能力,对 dubbogo 未来的进化指出新方向,共同进化; -
优化 dubbogo 的稳定性和性能。
团队
1. 来源
-
与 MOSN 社区合作实现 Dubbo Mesh; -
与 sentinel 社区合作,在 Dubbo/Dubbo-go 完整接入 sentinel 的降级和限流方案; -
与 Apollo 社区合作,在 Dubbo-go 中实现远程配置下发; -
与 Nacos 社区合作,实现基于 Nacos 的服务发现。
2. 成员的 qualification
管理
1. 需求收集
-
实现 dubbo 某个版本的功能; -
实际使用方的生产需求; -
为紧跟当下最近技术发展方向而进行的技术预演。
-
2019 年 7 月,随着阿里集团和蚂蚁金服在云原生方向的推波助澜,阿里 dubbo 开发团队并未给出可靠的技术方向,dubbogo 社区 core members 也都没有云原生方向的技术积累和相应人才,决定先开发一个基于 kube-apiserver 的注册中心,以进行技术储备; -
2019 年 8 月, 调研 dubbo 的 K8s 注册中心方案后,dubbogo 社区决定抛开它独立实现一个,争取以最低代价把 dubbo 应用迁移到 K8s 环境中运行起来,同时决定未来的发展方向是 dubbogo operator; -
2019 年 11 月,社区的王翔同学给出了初步实现,在 2020 年 1 月随 dubbogo v1.2 版本发布; -
2020 年 4 月,有用户要求在 K8s 环境中 consumer 可跨 namespace 访问 provider,相应实现在 2020 年 7 月随着 dubbogo v1.5 版本发布; -
2020 年 5 月,dubbogo 社区和 mosn 社区合作实现了 dubbo mesh; -
2020 年 6 月,社区意识到 kube-apiserver 是系统的运维态 IaaS 层的核心组件,不应该跨过 PaaS 层直接暴露给应用层,否则应用层使用不当或者框架自身的流量方面的 bug 把 kube-apiserver 打垮后将造成整个系统的 P0 级故障,dubbogo v1.6 应当给出 dubbogo operator 的具体实现; -
2020 年 7 月,dubbogo v1.5 发布后,社区已经知道完全可以把目前的 kube-apiserver 注册中心的实现独立成为一个 dubbogo operator,未来的方向是结合 Istio 拓展其灰度发布、限流、故障注入和配置动态下发能力。
2. 项目管理
3. 代码质量
-
auto-comment:contributor 提出 issue 或者 pr 后,可很方便地发出预先定制的评语; -
hound:一个 Go 语言项目静态代码检测工具,自动 Review 代码; -
travis:一个 Github 项目自动化测试工具,可自动执行代码单测和用户自定义的集成测试,并发出钉钉通知; -
人工 Review:dubbogo 社区要求每个 pr 至少有三个 committer 级别的人 Review 通过; -
goreportcard:一个很好的 Github 项目静态代码检测工具; -
gitee:作为国内一个比较强大的代码托管网站,免费为项目提供了一些代码安全和静态代码质量检测工具,dubbogo 也经常使用,受益良多; -
代码规范,社区内部有一份简单的代码规范,并随着项目发展不断完善。
展望
dubbogo 项目每次发完版本,发版人都会首先发出一份 "What's New",除了总结最新版本的特性外,还会总结其近期进展并对未来发展进行规划,以帮助项目爱好者和使用者了解其实现思路和使用方法。
-
网站建设和文档质量都有待改进; -
API 用户友好度不够; -
配置文件过多且没有合理的文档说明导致入门门槛高; -
整体性能改进,很多地方可添加调用链的缓存以减小锁竞争; -
添加 prometheus 指标,继续提高 可观测性; -
在协议层面支持其他微服务框架,实现原生通信,以继续提升其互联互通性; -
dubbo-samples 用例不够丰富,继续添加测试用例,以减小入门门槛;
作者简介
更多精彩

识别二维码立即体验
阿里CTO鲁肃:技术的想象力不应设限,未来所有应用的核心都离不开数据和智能
云栖大会第一天,我们生了头“驴”和“无影”!


点此阅读作者更多好文!



