有没有大佬能系统性的讲一下。我的关注点:服务的provider、consumer里的version该怎么配置?上线顺序有什么讲究?权重要不要考虑?怎么做新版本的代码稳定性的监控业务稳定后,旧版本的代码实现该如何管理?什么样的场景下,不适合灰度发布?
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来管理不同版本的代码。对于什么样的场景下,不适合灰度发布:服务没有明确的版本管理,或者服务之间的依赖关系非常复杂
version配置:
对于上线顺序讲究:
先部署新版本的服务提供者,然后再部署指定了新版本号的服务消费者。这样可以保证服务消费者启动时候,对应的服务提供者已经可用。
对于权重:
在灰度发布里,权重一般用来控制流量的分配。你可以设置权重来控制新旧版本服务的流量比例。比如,你可以把新版本的权重设置为 10%,旧版本的权重设置为 90%。这样,大部分的流量还会走旧版本,只有一小部分流量会走新版本。
对于新版本的代码稳定性的监控:
你可以用各种监控工具来监控服务的运行情况,比如 Prometheus、Grafana 等这些工具。如果新版本的服务有问题,你可以立马切换回旧版本。
对于业务稳定后,旧版本的代码实现该如何管理:
当新版本的服务稳定运行一段时间后,你可以逐步下线旧版本的服务。你可以先停止旧版本的服务提供者,然后再删除旧版本的服务消费者。在代码管理方面,你直接用 Git来管理不同版本的代码。
对于什么样的场景下,不适合灰度发布:
服务没有明确的版本管理,或者服务之间的依赖关系非常复杂