为了有效解决因服务升级/迁移而导致上游报错的问题,Kitex 在新版本(v0.12.0)中支持 gRPC Streaming 优雅退出功能。
通过设置合理的窗口时间,使得生命周期小于这个窗口的流能持续工作直到结束,而生命周期大于这个窗口的流会被强制关闭。
在开始配置前,请根据业务统计,得到当前服务中流的持续时间分布,从而确立一个合理的窗口时间,记为 graceTime,例如:
创建 Server 时,传入 server.WithExitWaitTime(graceTime)
如果不配置,默认 5 s。
import (
"github.com/cloudwego/kitex/server"
)
const (
graceTime = 600 * time.Second
)
svr := testservice.NewServer(hdl, server.WithExitWaitTime(graceTime))