dubbo怎么基于version做灰度发布?

有没有大佬能系统性的讲一下。

我的关注点:

  • 服务的provider、consumer里的version该怎么配置?
  • 上线顺序有什么讲究?
  • 权重要不要考虑?
  • 怎么做新版本的代码稳定性的监控
  • 业务稳定后,旧版本的代码实现该如何管理?
  • 什么样的场景下,不适合灰度发布?
阅读 2.5k
1 个回答

version配置:

<!-- provider -->
<service interface="com.example.DemoService" version="1.0.0" ref="demoService" />

<!-- consumer -->
<reference id="demoService" interface="com.example.DemoService" version="1.0.0" />

对于上线顺序讲究:
先部署新版本的服务提供者,然后再部署指定了新版本号的服务消费者。这样可以保证服务消费者启动时候,对应的服务提供者已经可用。

对于权重:
在灰度发布里,权重一般用来控制流量的分配。你可以设置权重来控制新旧版本服务的流量比例。比如,你可以把新版本的权重设置为 10%,旧版本的权重设置为 90%。这样,大部分的流量还会走旧版本,只有一小部分流量会走新版本。

对于新版本的代码稳定性的监控:
你可以用各种监控工具来监控服务的运行情况,比如 Prometheus、Grafana 等这些工具。如果新版本的服务有问题,你可以立马切换回旧版本。

对于业务稳定后,旧版本的代码实现该如何管理:
当新版本的服务稳定运行一段时间后,你可以逐步下线旧版本的服务。你可以先停止旧版本的服务提供者,然后再删除旧版本的服务消费者。在代码管理方面,你直接用 Git来管理不同版本的代码。

对于什么样的场景下,不适合灰度发布:
服务没有明确的版本管理,或者服务之间的依赖关系非常复杂

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进