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