HTTP服务
http服务是基于gin框架实现的,同时整合endless实现http服务的平滑重启和平滑关闭。
信号量处理
http服务会监听如下的信号: SIGHUP、SIGUSR1、SIGUSR2、SIGINT、SIGTERM和SIGTSTP。
信号量处理
- SIGTERM和SIGINT:等待请求中的连接结束后,平滑关闭
- SIGHUP:平滑重启
- fork子进程(使用相同的启动命令),将服务监听的socket文件描述符传递给子进程
- 子进程监听父进程的socket,这个时候父进程和子进程都可以接收请求
- 子进程启动成功之后,父进程停止接收新的连接,等待旧连接处理完成(或超时)
- 父进程退出,重启完成
- SIGUSR2:will trigger hammerTime 快捷链接
- SIGUSR1和SIGTSTP:监听的信号,但是应用不做任何处理。
命令行给服务传递信号
平滑关闭
build/bin/snow -a api -k stop
平滑重启
build/bin/snow -a api -k restart