• HTTP服务
  • 信号量处理
  • 命令行给服务传递信号
    • 平滑关闭
    • 平滑重启

    HTTP服务

    http服务是基于gin框架实现的,同时整合endless实现http服务的平滑重启和平滑关闭。

    信号量处理

    http服务会监听如下的信号: SIGHUP、SIGUSR1、SIGUSR2、SIGINT、SIGTERM和SIGTSTP。

    信号量处理

    • SIGTERM和SIGINT:等待请求中的连接结束后,平滑关闭
    • SIGHUP:平滑重启
      • fork子进程(使用相同的启动命令),将服务监听的socket文件描述符传递给子进程
      • 子进程监听父进程的socket,这个时候父进程和子进程都可以接收请求
      • 子进程启动成功之后,父进程停止接收新的连接,等待旧连接处理完成(或超时)
      • 父进程退出,重启完成
    • SIGUSR2:will trigger hammerTime 快捷链接
    • SIGUSR1和SIGTSTP:监听的信号,但是应用不做任何处理。

    命令行给服务传递信号

    平滑关闭

    1. build/bin/snow -a api -k stop

    平滑重启

    1. build/bin/snow -a api -k restart