You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
你的 graceful restart 的需求应该是要自己重写 server 的,官方只有 graceful stop 的实现。
tokio 感觉你也没怎么了解。
如果本地监听的地址有变化,则启动新 server 后 signal 通知旧的 async accept loop 使其退出循环即可,这种情况最简单;但是如果本地监听的地址没变化就不行了,得等旧 server 完成优雅停机,TcpListener 被 drop 掉、释放本地端口后才能启动新 server。
我看example的listenfd应该指的是平滑监听吧?理论上平滑重启的最佳实践是怎样的?
就比如用salvo实现网关,这种场景对平滑监听的要求高点。
关于平滑重启,我个人设想的流程是:
listenfd是通过环境变量共享fd信息的,但新旧程序传递信号用什么方式(tcp?unix?namedpipe?signals?http?)比较合适?如果双方有别的通信渠道,似乎好像就没必要用listenfd共享fd信息了?
感觉最省事的就是路由里搞一个优雅关闭api,新程序发送一个http请求给旧程序,旧程序启动优雅关闭后响应fd信息给新程序(也可以把需要共享的其他数据(本地缓存之类的)一起发了),然后新程序通过fd启动服务。
The text was updated successfully, but these errors were encountered: