private int waitTime = 8; //等待几秒 todo
// private String nacosMetaUrl = "http://10.18.225.115:8848/nacos/v1/ns/instance/metadata/batch%20%20%20%20private%20String%20nacosMetaProt%20="http://";
private String nacosMetaHttpProt = "PUT";
private String nacosMetaUrl = "/nacos/v1/ns/instance/metadata/batch";
@Autowired
NacosDiscoveryProperties nacosDiscoveryProperties;
/**
*
* <pre>
* 如果通过配置dubbo.service.shutdown.wait=20000(默认10000,10秒)这种方式,
* k8s.terminationGracePeriodSeconds=缩小时间间隔,
* 则会有线上的在途服务突然中断或者其他错误,
*
* 借助k8s的容器层的preStop来做灰度下线,并不影响线上服务,
*
* a. 先让nacos服务主动下线,
* b. 然后等待一段时间再关闭容器(尽量是5秒以上),
* c. 设置nacos的心跳超时(可选)
*
* 主动下线方法中,1调nacos实例下线(no run),2.调nacos的超时(仅在springcloud服务中能和),3.调dubbo的hoop shutdown接口
* 最后选择用3.dubbo的shutdown接口
*
* 不能做到绝对的灰度
*
* </pre>
*
* @param map
* @return 成功标记
*/
public boolean nacosDown(Map map) {
String serviceName = nacosDiscoveryProperties.getService();
String groupName = nacosDiscoveryProperties.getGroup();
String clusterName = nacosDiscoveryProperties.getClusterName();
String server = nacosDiscoveryProperties.getServerAddr();
String ip = nacosDiscoveryProperties.getIp();
int port = nacosDiscoveryProperties.g
Nacos2.0.3 Dubbo k8s灰度下线
最新推荐文章于 2026-03-24 08:30:00 发布
本文介绍了如何在Nacos2.0.3中实现Dubbo服务的灰度下线,利用k8s的preStop钩子配合Nacos的主动下线和心跳超时设置,确保服务平滑过渡,减少对线上服务的影响。主要步骤包括调用Nacos实例下线接口,设置心跳超时,并等待一段时间再关闭容器。

649

被折叠的 条评论
为什么被折叠?



