前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Netty如何实现服务的优雅关闭

Netty如何实现服务的优雅关闭

作者头像
JavaEdge
发布2021-02-22 13:36:40
发布2021-02-22 13:36:40
1.8K0
举报
文章被收录于专栏:JavaEdgeJavaEdge

1 优雅关闭的常见作用

最常见的,比如业务开发中,服务突然异常,刚进来的用户请求还在,通过优雅关闭,给他们 30s 时间继续执行,以免直接报错出去。

2 Netty 优雅关闭流程图

  • 修改 NioEventLoop 的 State 标志位
  • NioEventLoop 判断 State 执行退出

先不接活,后尽量干完手头的活(先关 boss 后关 worker:非百分百保证)

打断点,主要看 workGroup 的关闭

  • 这里就传入了两个时间

为啥两个时间呢?

  • 一个为了优雅 DEFAULT_SHUTDOWN_QUIET_PERIOD
  • 一个为了可控 DEFAULT_SHUTDOWN_TIMEOUT

从启动状态更改为终止态

然后在 NioEventLoop 的判断关闭位置打断点

  • 有未完成的任务就执行,没有就结束。

关闭服务的目的

关闭所有连接及Selector

  • java.nio.channels.Selector#keys
    • java.nio.channels.spi.AbstractlnterruptibleChannel#close
    • java.nio.channels. SelectionKey#cancel
  • selector.close()

关闭所有线程:退出循环体for (;;)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 优雅关闭的常见作用
  • 2 Netty 优雅关闭流程图
  • 为啥两个时间呢?
  • 关闭服务的目的
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档