Skip to content

启动与关闭 安全关闭

ShenJW edited this page Feb 29, 2016 · 5 revisions
  • 安全关闭原理是什么
    • 服务通过注册Runtime.getRuntime().addShutdownHook回调方法,感知系统信号量以触发安全关闭

  • 安全关闭如何使用
    • 如果使用@See[部署脚本]则可以执行@See[stop.sh]进行安全关闭服务
    • 否则通过kill cat kepler_{进程号}.pid进行安全关闭服务

  • 安全关闭可选模式
    触发安全关闭时可能服务尚有正在执行或等待的线程尚未完成,使用不同的关闭机制将会产生不同的效果
    • @See[示例下载], 可用于对照以下流程
    • @See[com.kepler.thread.ThreadFactory.shutdown_wait] 可选值为True|False
      • 开启时,安全关闭执行时线程池等待直到正在执行或正在等待的任务执行完毕
      • 关闭时,安全关闭执行时线程池立即关闭(默认)
    • com.kepler.thread.ThreadFactory.shutdown_interval
      当触发安全关闭时每隔shutdown_interval秒会提示关闭已耗时

  • 安全关闭前降级(Demotion)
    • @See[示例下载], 可用于对照以下流程
      从安全关闭触发至开始执行前将回调@See[Demotion]接口以通知服务进行必要的降级
      (比如内存数据同步至磁盘等操作)
    • 服务仅需实现@See[Demotion]接口并由容器托管即可触发回调
    • 当所有Demotion接口均回调完成后,安全关闭线程将休眠若干秒后开始执行后续操作
      com.kepler.main.impl.Start.demote_waiting指定,默认500(单位ms)

  • 更可靠的@See[安全关闭]
Clone this wiki locally