在访问量比较大的程序中,如果使用重启服务的话,会导致一些访问出错,请问这种情况下。
比如一个请求正在处理中,可是因为重启的缘故,可能导致请求处理一半的数据写到数据中出现数据错误的问题。
项目用的是hyperf,请问有什么好的解决方案吗?
在访问量比较大的程序中,如果使用重启服务的话,会导致一些访问出错,请问这种情况下。
比如一个请求正在处理中,可是因为重启的缘故,可能导致请求处理一半的数据写到数据中出现数据错误的问题。
项目用的是hyperf,请问有什么好的解决方案吗?
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答569 阅读✓ 已解决
785 阅读
平滑重启的基本流程:
实现的方式很多,例如用 nginx 做负载均衡,或者自己用 SO_REUSEPORT + 停止 accept + 等待已有请求完成后退出。
我们现在用K8s,就是启动新实例,新实例加到负载均衡器, 同时旧实例在
preStop
里等待一段时间让已有的请求被处理完再退出,不需要改动应用代码。