系统热重启时,服务不中断,需要将系统内存中的所有数据写入数据库。gracehttppackagefunc(srv*Server)handleSignals(){varsigos.Signalsignal.Notify(srv.signalChan,syscall.SIGTERM,syscall.SIGUSR2,)for{sig=<-srv.signalChanswitchsig{casesyscall.SIGTERM:srv.logf("收到SIGTERM,正常关闭HTTP服务器。")srv.shutdownHTTPServer()casesyscall.SIGUSR2:srv.logf("收到SIGUSR2,正常重启HTTP服务器。")ifpid,err:=srv.启动新进程();err!=nil{srv.logf("启动新进程失败:%v,继续服务。",err)}else{srv.logf("启动新进程成功,新pid为%d。",pid)srv.shutdownHTTPServer()}default:}}}监听linux信号,收到重启信号后,等待所有任务处理完毕再退出进程(因为使用了第三方包,所以也在监听信号,它不会在http请求后终止服务,所以这是不可行的)共享内存。这样多个进程就可以读取数据。
