dubbo之优雅停机

优雅停机

Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果用户使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。

原理

服务提供方

  • 停止时,先标记为不接收新请求,新请求过来时直接报错,让客户端重试其它机器。
  • 然后,检测线程池中的线程是否正在运行,如果有,等待所有线程执行完成,除非超时,则强制关闭。

服务消费方

  • 停止时,不再发起新的调用请求,所有新的调用在客户端即报错。
  • 然后,检测有没有请求的响应还没有返回,等待响应返回,除非超时,则强制关闭。

设置方式

设置优雅停机超时时间,缺省超时时间是 10 秒,如果超时则强制关闭。

<dubbo:application ...>
    <dubbo:parameter key="shutdown.timeout" value="60000" /> <!-- 单位毫秒 -->
</dubbo:application>

如果 ShutdownHook 不能生效,可以自行调用:

ProtocolConfig.destroyAll();
时间: 2024-10-17 18:28:17

dubbo之优雅停机的相关文章

Dubbo源码学习--优雅停机原理及在SpringBoot中遇到的问题

相关文章: Dubbo源码学习文章目录 前言 主要是前一阵子换了工作,第一个任务就是解决目前团队在 Dubbo 停机时产生的问题,同时最近又看了一下 Dubbo 的源码,想重新写一下 Dubbo 相关的文章. 优雅停机原理 对于一个 java 应用,如果想在关闭应用时,执行一些释放资源的操作一般是通过注册一个 ShutDownHook ,当关闭应用时,不是调用 kill -9 命令来直接终止应用,而是通过调用 kill -15 命令来触发这个 ShutDownHook 进行停机前的释放资源操作.

Dubbo 优雅停机演进之路

一.前言 在 『ShutdownHook- Java 优雅停机解决方案』 一文中我们聊到了 Java 实现优雅停机原理.接下来我们就跟根据上面知识点,深入 Dubbo 内部,去了解一下 Dubbo 如何实现优雅停机. 二.Dubbo 优雅停机待解决的问题 为了实现优雅停机,Dubbo 需要解决一些问题: 新的请求不能再发往正在停机的 Dubbo 服务提供者. 若关闭服务提供者,已经接收到服务请求,需要处理完毕才能下线服务. 若关闭服务消费者,已经发出的服务请求,需要等待响应返回. 解决以上三个问

JAVA优雅停机的实现

最近在项目中需要写一个数据转换引擎服务,每过5分钟同步一次数据.具体实现是启动engine server后会初始化一个ScheduledExecutorService和一个ThreadPoolExecutor线程池.schduel executor每过5分钟将dataTransformList中每一个tranform加入到线程池中运行.每一个数据转化器负责转换一组数据库数据.在执行过程中存在服务重启并且此时tranform正在转换数据并且数据没有全部操作完,此时希望正在执行的work能正常完成作

docker容器优雅停机导致的问题说明

现象 测试同学反馈页面某功能有时候不能使用. 分析 根据页面返回结果和URL,从开发同学那里了解到该现象是新环境里a服务调b服务返回异常导致的.从多次请求的结果看来,大概50%的几率返回异常.按常理判断如果b服务有多个节点的,可能有其中个别节点异常会导致此现象发生,但是b服务只有一个节点,请求的同时,观察b服务的日志,在a调用结果异常的情况下,b没有任何日志输出,正常情况日志输出返回结果,说明请求没有到达b服务,如果对调用链路不熟的情况下完全可以抓包明确请求是否到达.那么调用失败的请求是去哪里了

(转)史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!

背景:因为自己的简历写了dubbo,面试时候经常被问到.实际自己对dubbo的认识只停留在使用阶段,所以有必要好好补充下基础的理论知识. https://zhuanlan.zhihu.com/p/45846108 想往高处走,怎么能不懂 Dubbo? Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一.Dubbo 更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉. 下面我为大家准备了一些 Dubbo 常见的的面试题,一些是我经常问别人的,一些是我过

dubbo面试题目

1.为什么要用 Dubbo? 随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供.服务调用.连接处理.通信协议.序列化方式.服务发现.服务路由.日志输出等行为进行封装的服务框架.就这样为分布式系统的服务治理框架就出现了,Dubbo 也就这样产生了. 2.服务调用是阻塞的吗? 默认是阻塞的,可以异步调用,没有返回值的可以这么做.Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动

死磕面试 - Dubbo基础知识37问(必须掌握)

作为一个JAVA工程师,出去项目拿20k薪资以上,dubbo绝对是面试必问的,即使你对dubbo在项目架构上的作用不了解,但dubbo的基础知识也必须掌握. 整理分享一些面试中常会被问到的dubbo基础知识,或许会给正在面试.准备面试的小伙伴一点帮助. 1.dubbo是什么? dubbo是阿里的开源的基于java的高性能rpc分布式服务框架,现已(2018)成为Apache基金会的孵化项目 2.为什么要用到dubbo(你们技术选型的时候为什么要考虑到用它)? 因为它是阿里的开源项目,国内很多的互

大厂必会考题:Dubbo+微服务+ZooKeeper+kafka+Linux等(附答案)

24道常见Elasticsearch 面试题(截取部分) 1.客户端在和集群连接时,如何选择特定的节点执行请求的? 2.详细描述一下 Elasticsearch 索引文档的过程. 3.详细描述一下 Elasticsearch 更新和删除文档的过程. 4.详细描述一下 Elasticsearch 搜索的过程. 5.在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的? 6.Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法? 7.对于 GC 方面,在使用

golang 服务器优雅的停机

这次用中文写,表达得清晰些. 最近 看了几个程序,结合自己的思考,给出golang 服务其 优雅停机的处理方式.这里以http服务器为对象描述. 这里的"优雅",表示服务器有计划,按部就班的退出.具体表现在,友好地终止与客户端的连接:关闭其他活动的进程,线程,协成:完成资源的释放:完整的log. 1. 分类 服务器停机可以分两类:服务器主动停机 和 服务器被动停机. 1)服务器主动停机,即在没有外界影响(客户端调用)的情况下,服务器自发的停止.定时停机,以及Idle超时停机是常见的情形