开发者社区 > 云原生 > 正文

consumer 该如何设置才能支持 graceful shutdown?

我在测试 dubbo3 的优雅下线,大概的架构入下

提问6.png

通过 http 调 consumer 的 /sleep?seconds=xx 接口,consumer 会通过 dubbo 协议去调 provider ,provider sleep xx 秒之后返回 hostname 通过 http 调 consumer 的 /middlesleep?seconds=xx 接口,consumer 会通过 dubbo 协议调到 middle,然后 middle 通过 dubbo 协议调到 provider,provider sleep xx 秒之后返回 hostname 给 middle 然后返回给 consumer

然后根据 https://cn.dubbo.apache.org/zh-cn/overview/mannual/java-sdk/advanced-features-and-usage/others/graceful-shutdown/ 的配置我给每个服务都加了

server: shutdown: graceful

但是在调用 /sleep 或者 /middlesleep 接口的时候,把 consumer 或者 middle 干掉,最终调用 http 的 curl 都不能正常取得返回结果? 版本信息:

springboot 2.7.1 dubbo 3.1.8 nacos 2.2.1

正常情况下返回: /sleep 接口

提问7.png

/middlesleep 接口

提问8.png

调用的时候把 consumer 的 pod delete

回答9.png

原提问者GitHub用户wuzhuoquan

展开
收起
大圣东游 2023-05-11 15:42:27 118 0
1 条回答
写回答
取消 提交回答
  • 优雅下线是服务端的行为,只有服务端才有下线一说。对于这个 case,consumer 如果要下线的话应该在前置的 http 流量那里进行摘除。

    如果全链路都是 dubbo 的话,可以通过 dubbo 提前下线,等待一段时间后在关闭,这个是不需要考虑自己是服务端还是客户端的。

    原回答者GitHub用户AlbumenJ

    2023-05-12 10:16:36
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载