首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Dubbo优雅停机

这个机制也就是优雅停机,目前Tomcat/Undertow/Dubbo等容器/框架都有提供相关实现。下面给出正式一些的定义:优雅停机是指在停止应用时,执行的一系列保证应用正常关闭的操作。...优雅停机本质上是JVM即将关闭前执行的一些额外的处理代码。...适用场景 JVM主动关闭(System.exit(int); JVM由于资源问题退出(OOM); 应用程序接收到SIGTERM或SIGINT信号 配置方式 服务的优雅停机 在Dubbo中,优雅停机是默认开启的...注意事项 使用SIGKILL关闭应用不会执行优雅停机优雅停机不保证会等待所有已发送/到达请求结束; 配置的优雅停机等待时间timeout不是所有步骤等待时间的总和,而是每一个destroy执行的最大时间...4、然后重新启动应用 参考 Dubbo优雅停机

1K20

Dubbo 优雅停机

作为一个成熟的RPC框架,这些都是必要的内容,但是有一点往往是容易被人忽略的,那就是优雅停机。今天我们就一起来看一下Dubbo对于优雅停机的一些支持性动作。...优雅停机主要用在服务版本迭代上线的过程中,比如我们发布了新的服务版本,经常性是直接替换线上正在跑的服务,这个时候如果在服务切换的过程中老的服务没有正常关闭的话,容易造成内存清理问题,所以优雅停机也是重要的一环...Dubbo的优雅停机是依赖于JDK的ShutdownHook函数,下面先了解一下JDK的ShutdownHook函数会在哪些时候生效: 程序正常退出 程序中使用System.exit()退出JVM 系统发生...OutofMemory异常 使用kill pid干掉JVM进程的时候(kill -9时候是不能触发ShutdownHook生效的) Dubbo优雅停机代码解读 dubbo的优雅停机代码入口就在于AbstractConfig...但是这里有一个容易忽略的问题就是,服务端注册的节点在zk上并不会删除,那么下次当consumer再次subscribe的时候依然后创建该节点,这时候因为该节点在上次停机的时候已经创建过了,重新创建就会抛异常了

49120
您找到你想要的搜索结果了吗?
是的
没有找到

如何优雅实现优雅停机

作者:等你归去来 原文:https://www.cnblogs.com/yougewe/p/9881874.html 优雅停机? 这个名词我是服的,如果抛开专业不谈,多好的名词啊!...其实优雅停机,就是在要关闭服务之前,不是立马全部关停,而是做好一些善后操作,比如:关闭线程、释放连接资源等。 再比如,就是不会让调用方的请求处理了一增,一下就中断了。而处理完本次后,再停止服务。...很明显,确实是优雅了,虽然最后收到了一关闭信号,但是仍然保证了任务的处理完成。很棒吧! 那么,在实际应用中是如何体现优雅停机呢?...所以,无论如何是优雅不起来了。 要优雅,是代码和运维的结合!...实现原理: Runtime.getRuntime().addShutdownHook(hook); // 添加钩子,开启优雅之路 具体流程如下: /** * Registers a new virtual-machine

1.9K10

rocketmq优雅停机往事

瞅了一眼consumer的代码(这里就不贴代码了,反正贴了你也不会看),consumer注册了一个ShutdownHook,ShutdownHook里consumer执行了shutdown来优雅地退出,...了解原因后,第一时间想到了类似dubbo摘流的方案,吭哧吭哧写了个优雅关闭rocketmq cosnumer的接口,在应用关闭脚本的kill之前调用该接口,完美解决问题,赶紧下班回家,不然要猝死了。...于是第二天又重新思考这个问题,总觉得在应用里实现一个接口并在stop脚本中去调用是一件非常不优雅的事,更重要的是这也没法复制到其他项目,我又陷入了沉思。...6 到这里我该给老板汇报去了,之所以rocketmq consumer发布时不平滑是我们的使用姿势问题,虽然对业务没影响,但不优雅,解决方案有两个,老板你选吧: 全都换成官方starter,依赖spring-boot...,官方维护,改造成本很高, 监听ContextClosedEvent来实现优雅关闭,这块可以封装一下,让业务方引入依赖即可 [img9.jpg] --- 关于作者:专注后端的中间件开发,微信公众号"捉虫大师

1.7K41

Dubbo 优雅停机演进之路

一、前言 在 『ShutdownHook- Java 优雅停机解决方案』 一文中我们聊到了 Java 实现优雅停机原理。...二、Dubbo 优雅停机待解决的问题 为了实现优雅停机,Dubbo 需要解决一些问题: 新的请求不能再发往正在停机的 Dubbo 服务提供者。...解决以上三个问题,才能使停机对业务影响降低到最低,做到优雅停机。 三、2.5.X Dubbo 优雅停机在 2.5.X 版本实现比较完整,这个版本的实现相对简单,比较容易理解。...Dubbo 优雅停机总体流程如图所示。 ?...五、最后 优雅停机看起来实现不难,但是里面设计细枝末节却非常多,一个点实现有问题,就会导致优雅停机失效。如果你也正在实现优雅停机,不妨参考一下 Dubbo 的实现逻辑。

67420

Kubernetes Pod优雅停机分析

结合底层技术原理,本文将对Pod优雅停机展开分析,供业务团队参考。...stopContainer 方法具体实现:图片代码解读:> timeout>0 , 发sigterm 信号,终止容器;> timeout<=0, 或者上述sigterm 逻辑结束,发sigkill信号,杀死容器;三 优雅停机...Demo这里分享一个优雅停机的golang实例,供交流参考:3.1 信号处理逻辑var onlyOneSignalHandler = make(chan struct{})var shutdownHandler...120)logs.Info("server end")}(1) select 逻辑收到stop 信号,才会退出for 循环,模拟业务运行逻辑;(2)sleep 120s,模拟grace shutdown 优雅停机时的收尾逻辑...;4 小结由此可见,业务pod 实现优雅停机的必要条件,包含:(1)pod 内部业务支持sigterm、sigkill 信号的分别处理,前者优雅shutdown、后者直接退出;(2)配置合理的pod终止宽限期

68520

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

1 介绍 微服务架构中的应用优雅停机主要是指应用实例有计划而平滑(即不产生需要处理的事故)的退出。...应用服务器的停机主要分为两类:主动停机和被动停机,而其中主动停机和大部分的被动停机都是可以实现优雅停机。如果应用不做优雅停机,则会带来以下情况: ?...4 微服务优雅停机 微服务的优雅停机没有统一的解决方案,只要抓住核心思想进行设计即可: 引流 → 挡板 → 等待停机 但在微服务架构中,我们可以遵守以下建议规则来设计微服务的优雅停机机制...微服务应用的优雅停机根据其使用者角色的不同,而主要分为两种类型: 微服务业务应用优雅停机设计: ? 微服务业务应用优雅停机设计 微服务网关应用优雅停机设计: ?...微服务网关应用优雅停机设计 其余各层设备的优雅停机都可从以上两种类型进行衍生出解决方案,如: 整个后端架构升级,则可从DNS或Nginx直接切换 Nginx层升级,则可以从DNS直接切换 5 使用案例

90230

拒绝 kill -9,让 SpringBoot 优雅停机

, 目前 spring boot 嵌入式支持的 web 服务器(Jetty、Reactor Netty、Tomcat 和 Undertow)以及反应式和基于 Servlet 的 web 应用程序都支持优雅停机功能...* * @author Andy Wilkinson * @since 2.3.0 */ public enum Shutdown { /** * 优雅停机 (限期停机) * *...complete 4、接口请求执行完成 相关知识 关于此处执行kill -2 而不是 kill -9 kill -2 相当于快捷键 Ctrl + C 会触发 Java 的 ShutdownHook 事件处理(优雅停机或者一些后置处理可参考以下源码...().addShutdownHook(this.shutdownHook); } } kill -9,暴力美学强制杀死进程,不会执行 ShutdownHook 通过 actuate 端点实现优雅停机...Thread.currentThread().interrupt(); } // 此处close 逻辑和上边 shutdownhook 的处理一样 this.context.close(); } } 不同 web 容器优雅停机行为区别

93541

一文聊透 Dubbo 优雅停机

1 前言 一年之前,我曾经写过一篇《研究优雅停机时的一点思考》,主要介绍了 kill -9,kill -15 两个 Linux 指令的含义,并且针对性的聊到了 Spring Boot 应用如何正确的优雅停机...结合上述的案例,我们总结出 Dubbo 优雅停机需要满足两点基本诉求: 服务消费者不应该请求到已经下线的服务提供者 在途请求需要处理完毕,不能被停机指令中断 优雅停机的意义:应用的重启、停机等操作,不影响业务的连续性...3 优雅停机初始方案 — 2.5.x 为了让读者对 Dubbo 的优雅停机有一个最基础的理解,我们首先研究下 Dubbo 2.5.x 的版本,这个版本实现优雅停机的方案相对简单,容易理解。...3.5 优雅停机初始方案总结 上述介绍的几个类构成了 Dubbo 2.5.x 的优雅停机方案,简单做一下总结,Dubbo 的优雅停机逻辑时序如下: Registry 注销 等待 -Ddubbo.service.shutdown.wait...,会导致 Dubbo 的优雅停机流程无法获取相关的 Bean,从而优雅停机失效。

2.7K50

Spring Boot 2.3 新特性优雅停机详解

什么是优雅停机 先来一段简单的代码,如下: @RestController public class DemoController { @GetMapping("/demo") public String..., 目前 spring boot 嵌入式支持的 web 服务器(Jetty、Reactor Netty、Tomcat 和 Undertow)以及反应式和基于 Servlet 的 web 应用程序都支持优雅停机功能...* * @author Andy Wilkinson * @since 2.3.0 */ public enum Shutdown { /** * 优雅停机 (限期停机) *...complete 接口请求执行完成 相关知识 关于此处执行kill -2 而不是 kill -9 kill -2 相当于快捷键 Ctrl + C 会触发 Java 的 ShutdownHook 事件处理(优雅停机或者一些后置处理可参考以下源码...().addShutdownHook(this.shutdownHook); } } kill -9,暴力美学强制杀死进程,不会执行 ShutdownHook 通过 actuate 端点实现优雅停机

1.6K10

研究优雅停机时的一点思考

上述的场景描述引出了我的疑问:怎么优雅地杀死一个 springboot 应用进程呢?...还有其他优雅关闭应用的方式吗? spring-boot-starter-actuator 模块提供了一个 restful 接口,用于优雅停机。...更多需要思考的优雅停机策略 在我们分析 RPC 原理的系列文章里面曾经提到,服务治理框架一般会考虑到优雅停机的问题。通常的做法是事先隔断流量,接着关闭应用。...常见的做法是将服务节点从注册中心摘除,订阅者接收通知,移除节点,从而优雅停机;涉及到数据库操作,则可以使用事务的 ACID 特性来保证即使 crash 停机也能保证不出现异常数据,正常下线则更不用说了;...又比如消息队列可以依靠 ACK 机制+消息持久化,或者是事务消息保障;定时任务较多的服务,处理下线则特别需要注意优雅停机的问题,因为这是一个长时间运行的服务,比其他情况更容易受停机问题的影响,可以使用幂等和标志位的方式来设计定时任务

4.2K81

Spring Boot 系列:最新版优雅停机详解

目前Spring Boot已经发展到了2.3.4.RELEASE,伴随着2.3版本的到来,优雅停机机制也更加完善了。...目前版本的Spring Boot 优雅停机支持Jetty, Reactor Netty, Tomcat和 Undertow 以及反应式和基于 Servlet 的 web 应用程序都支持优雅停机功能。...优雅停机的目的: 如果没有优雅停机,服务器此时直接直接关闭(kill -9),那么就会导致当前正在容器内运行的业务直接失败,在某些特殊的场景下产生脏数据。...增加了优雅停机配置后: 在服务器执行关闭(kill -2)时,会预留一点时间使容器内部业务线程执行完毕,此时容器也不允许新的请求进入。...下面我们来看下停机时,加了优雅停日志和不加的区别: **** //未加优雅停机配置 Disconnected from the target VM, address: '127.0.0.1:49754'

94911

Spring Boot 2.5 新特性 之 优雅停机

什么是优雅停机 先来一段简单的代码,如下: @RestController public class DemoController { @GetMapping("/demo") public String..., 目前 spring boot 嵌入式支持的 web 服务器(Jetty、Reactor Netty、Tomcat 和 Undertow)以及反应式和基于 Servlet 的 web 应用程序都支持优雅停机功能...* @www.fhadmin.org * @since 2.3.0 */ public enum Shutdown { /** * 优雅停机 (限期停机) * */ GRACEFUL...complete 接口请求执行完成 相关知识 关于此处执行kill -2 而不是 kill -9 kill -2 相当于快捷键 Ctrl + C 会触发 Java 的 ShutdownHook 事件处理(优雅停机或者一些后置处理可参考以下源码...Runtime.getRuntime().addShutdownHook(this.shutdownHook); } } kill -9,暴力美学强制杀死进程,不会执行 ShutdownHook 通过 actuate 端点实现优雅停机

64530

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券