微服务架构—优雅停机方案

1 介绍

        微服务架构中的应用优雅停机主要是指应用实例有计划而平滑(即不产生需要处理的事故)的退出。应用服务器的停机主要分为两类:主动停机和被动停机,而其中主动停机和大部分的被动停机都是可以实现优雅停机。如果应用不做优雅停机,则会带来以下情况:

        而我们微服务的优雅升级的目标就是避免以上几种情况,从而避免人工干预的工作量和提升微服务架构的服务高可靠。

2 使用场景

3 ShutdownHook

        Java的优雅停机通常通过注册JDK的ShutdownHook(钩子)来实现,当系统接收到退出指令后,首先标记系统处于退出状态,不再接收新的消息,然后将积压的消息处理完,最后调用资源回收接口将资源销毁,最后各线程退出执行。简单的使用demo案例如下(简单版):

超时控制
        通常优雅退出需要有超时控制机制,如果到达超时时间仍然没有完成退出前的资源回收等操作,则由停机脚本直接调用KILL -9 PID的方式进行强制退出,不然可能会等待很长时间。

4 微服务优雅停机

        微服务的优雅停机没有统一的解决方案,只要抓住核心思想进行设计即可:
        引流 → 挡板 → 等待停机

        但在微服务架构中,我们可以遵守以下建议规则来设计微服务的优雅停机机制:

    微服务应用的优雅停机根据其使用者角色的不同,而主要分为两种类型:

  • 微服务业务应用优雅停机设计:

    微服务业务应用优雅停机设计

  • 微服务网关应用优雅停机设计:

    微服务网关应用优雅停机设计

    其余各层设备的优雅停机都可从以上两种类型进行衍生出解决方案,如:

  • 整个后端架构升级,则可从DNS或Nginx直接切换

  • Nginx层升级,则可以从DNS直接切换

5 使用案例

        在业界开源的产品中,很多产品都使用了JDK钩子的方式来实现优雅停机,如以下产品:

  • Netty

  • DUBBO

希望本文对你有帮助,求帮谢谢


公众号推荐:

公众号:VOA英语每日一听

微信号: voahk01

可长按扫码关注,谢谢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值