写在 Dubbo go 的第五年


写在 Dubbo go 的第五年
本文插图
引语
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
dubbogo 项目初期目的是依靠 Dubbo 实现 ''bridge the gap between Java and Go'', 目前 dubbogo 正与 Dubbo 齐头并进 , 已经达到项目立项的目标 。 有长期生命的通信框架 , 大概有 5 年的成长期和 5 年的稳定成熟期 。 目前的 dubbogo 处在成长期和稳定成熟期的过渡期 , 这意味着社区如果想保持发展态势 , 就必须开始走多元化道路 , 发展自己的生态了 。
眼下 dubbogo 社区正在集中精力孵化一个新的项目---实现一个基于 dubbogo 的 HTTP 网关 , 项目的意义是:dubbogo 自身是一个流量控制中间件 , 在其上扩展项目 , 其方向很自然就是做一个 proxy/sidecar or gateway , 且社区一直有网关这方面的需求 。
项目目的如下:
  • 做一个具有生产使用意义的网关;
  • dubbo-go-proxy 验证 dubbogo 的能力 , 对 dubbogo 未来的进化指出新方向 , 共同进化;
  • 优化 dubbogo 的稳定性和性能 。
团队
项目立项完毕后 , 就进入招兵买马阶段了 。
1. 来源
dubbogo 社区发展初期 , 其关键成员都是通过提交 issue 或者 pr 的同学撩来的 。 通过这种方式撩来的同学因为志同道合 , 有极高的概率同社区一起走下来 。 dubbogo 社区的 core member 就是这样来的 。
其次是与其他公司的合作 。 dubbogo 本身是一个有着极高生产环境需求的项目 , 在发展过程中依次与携程、涂鸦、斗鱼、虎牙、蚂蚁金服和阿里集团有过极深的合作 , 其间与携程的合作对 dubbogo 成型而言极为关键 。
另一个途径是与其他社区合作 。 dubbogo 项目发展过程中 , 与以下社区合作过:
  • 与 MOSN 社区合作实现 Dubbo Mesh;
  • 与 sentinel 社区合作 , 在 Dubbo/Dubbo-go 完整接入 sentinel 的降级和限流方案;
  • 与 Apollo 社区合作 , 在 Dubbo-go 中实现远程配置下发;
  • 与 Nacos 社区合作 , 实现基于 Nacos 的服务发现 。
与其他社区合作的好处是使得双方的项目都受益:扩展双方的能力和使用场景 , 其次是社区间人员的流动 。 在合作过程中 , dubbogo 自身受益极大 , 目前有 4 个社区 committer 来自于其它社区 。 合作完成后并不意味着结束 , 而是一个新的双赢的开始:社区项目也是发展的 , 当一个项目有新特性时可以同时快速被另一个项目采用验证 , 对扩展开发者们的技术能力和人脉也是极为有利的 , dubbogo 社区目前的好几个同学同时活跃在多个社区 。


推荐阅读