摘要: 从源码角度解读为啥2.5.3版本不支持优雅停机,通过修改源码达到优雅停机 现状dubbo-2.5.4以下的版本不支持优雅停机,是因为服务端关闭时,客户端主动关闭长连接,导致服务端响应消息不能返回。在服务端和客户端配置参数:-Ddubbo.service.shutdown.wait=30000,该参数为停机等待时间,但是结果也不生效,还是马上停机了。期望结果正在读或者写的消息,需要
1、什么是Dubbo概述:Dubbo是阿里巴巴内部使用的分布式业务框架,2012年由阿里巴巴开源,由于Dubbo在阿里内部经过广泛的业务验证,在很短时间内,Dubbo就被许多互联网公司所采用,并产生了许多衍生版本,如网易,京东,新浪,当当等等。由于阿里策略变化,2014年10月Dubbo停止维护。随后部分互联网公司公开了自行维护的Dubbo版本,比较著名的如当当DubboX,新浪Motan等。经过
dubbo的起源dubbo是2011年开源,因为有阿里背书,所以在那个缺少优秀RPC框架的年代,dubbo快速受到开发者的青睐。dubbo目前在gitHub上有超过1.6万哥star和1.2多个fork。是国内影响力最大的开源框架。 在 2014 年 10 月 30 日发布 2.4.11 版本后,Dubbo 突然停止更新(其实是在 2012 年 10 月之后就基本停止了重要升级,改为阶段性维护),
虽然我们系统的用户体验和数据一致性不应该完全靠优雅停机来保证,但作为一流的RPC框架,优雅停机的功能必不可少,Dubbo用户手册有对优雅停机做一个简单的叙述: Dubbo是通过JDK的ShutdownHook 来完成优雅停机的,所以如果用户使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID时,才会执行。服务提供方:停止时,先标记为不接收新请求
.在任何需要持久化的进程中,优雅的关闭都很重要,特别是需要处理有状态的进程。优雅的关闭能让用户无感知,简化关闭的流程,减轻运维的压力。什么时候我们可以让程序正常关闭所有挂起的进程,web,循环 都已经完成,不启动新的进程,也不应接受新的web请求关闭所有与外部服务和数据库的连接反模式人为阻塞第一个反模式是阻塞go 主进程,而不实际等待任何东西。这是一个示例demo实现:func KeepProce
转载 2024-10-06 09:04:58
52阅读
1.   概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 主要核心部件 Remoting: 网络通信框架,实现了sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registr
转载 2024-03-15 19:48:30
32阅读
目录前言DefaultFuture继承自 CompletableFuture定时任务检查是否请求超时HashedWheelTimer定时任务实现类Worker 定时任务线程的Run方法DefaultFuture的使用 --- 发送请求时创建DefaultFuture的使用 --- 接收响应时的处理总结 前言Dubbo 的底层通信默认是使用的Netty来通信的, consumer和provider
转载 2024-05-08 22:42:25
113阅读
背景对于任何一个线上应用,如何在服务更新部署过程中保证客户端无感知是开发者必
原创 2022-01-20 16:26:06
262阅读
背景对于任何一个线上应用,如何在服务更新部署过程中保证客户端无感知是开发者必须要解决的问题,即从应用停止到重启恢复服务这个阶段不能影响正常的业务请求。理想条件下,在没有请求的时候再进行更新是最安全可靠的,然而互联网应用必须要保证可用性,因此在技术层面上优化应用更新流程来保证服务在更新时无损是必要的。传统的解决方式是通过将应用更新流程划分为手工摘流量、停应用、更新重启三个步骤,由人工操作实现...
原创 2021-07-13 14:05:44
271阅读
天池中间件大赛dubboMesh优化总结(qps从1000到6850)原创 kiritomoe Kirito的技术分享 2018-06-19 23:51收录于合集#性能挑战赛24个#Dubbo43个天池中间件大赛的初赛在今早终于正式结束了,公众号停更了一个月,主要原因就是博主的空余时间几乎全花在这个比赛上,第一赛季结束,做下参赛总结,总的来说,收获不小。最终排名先说结
一、 DubboAutoConfiguration@ConditionalOnProperty( prefix = "dubbo", name = {"enabled"}, matchIfMissing = true ) @Configuration @AutoConfigureAfter({DubboRelaxedBindingAutoConfiguration.clas
优雅停止java进程
原创 2023-04-25 02:01:53
465阅读
tips: 由于环境不同,问题的解决方法也自然不同,下面是小编所在环境的解决方式^_^
在生产环境中使用spring框架,由于服务更新过程中,服务容器被直接充值,部分请求仍被分发到终止的容器(没有配置钩子,熟悉默认环境),导致服务出现500错误,这部分错误请求数据占用比较少,因为Pod滚动更新都是一对一。因为部分用户会产生服务器错误的情况,考虑使用优雅的终止方式,将错误请求降到最低,直至滚动更新不影响用户
原创 2019-11-13 17:47:26
2400阅读
什么是优雅停机? 应用停止时,应用内部必然存在一部分正在处理的业务,如果此使用kill -9 pid的方式暴力停止了服务,会导致正在执行的交易强制中断,影响业务的完整性。为了解决这种问题,优雅停机便被提出来了,简单点说就是让应用处理完正在处理的交易之后,再停下来。如何实现优雅停机 对于Java应用来说,可以通过java.lang.Runtime.getRuntime().addShutdownHo
Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才 会执行。
转载 2020-12-01 12:30:00
140阅读
2评论
现状dubbo目前的不支持优雅停机,是因为服务端关闭时,客户端主动关闭长连接,导致服务端响应消息不能返回。在服务端和客户端配置参数:-Ddubbo.service.shutdown.wait=30000,该参数为停机等待时间,但是结果也不生效,还是马上停机了。期望结果正在读或者写的消息,需要继续处理;线程池需等所有任务执行完成后,才关闭;服务端停机时客户端操作当服务端停机时,客户端检测断开事件,马
转载 2024-09-12 13:56:43
158阅读
Runtime.getRuntime().addShutdownHook在AbstractConfig中有一块静态代码块:static { Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {//添加一个jvm关闭执行的钩子,执行清理工作 public void run() {
转载 2024-10-19 16:52:47
47阅读
     学习了ExtensionLoader 之后,就开始进入服务发布与调用源码,个人先阅读的 服务发布。  一. 服务发布的流程总览     服务发布,实际的执行,是在ServiceBean的父类 ServiceConfig 里面的export()方法. 大体来说,包括以下几个步骤:    1.
转载 2024-07-17 21:22:59
48阅读
Dubbo 一.基础知识网站规模扩大,常规的垂直应用架构无法应付 发展演变 单一应用架构 ORM 垂直应用架构 MVC 分布式服务架构 RPC 流动计算架构 SOA RPC Remote Procedurer Call 远程过程调用 是一种进程间通信方式 建立连接 信息序列化 传递 反序列化 调用本地服务 服务处理 返回处理结果 序列化返回 反序列化得到结果
  • 1
  • 2
  • 3
  • 4
  • 5