springboot如何优雅更新服务接口?

发布于 2022-09-11 20:59:46 字数 429 浏览 15 评论 0

AService启动时会读取两个资源文件,解析后通过多个成员变量将相关内容加载到内存里面,后续的请求都依赖这块内存。

现在在做自动在线更新,在线更新需要拉最新版本的资源文件,并重新解析(意味着service有状态,此时需要更新里面的成员变量),如何不影响正在处理的“旧”请求的前提下更新?所谓不影响,是指更新前:var1, var2, var3 此时的请求都应该依赖同一时间戳的变量,不能用完var1的时候,var2,var3已经被更新,这些会出现一些数据一致性问题。

没有nginx集群,只有单实例,因此不能切流量,分批上线

AService中有个服务降级方法,如果正在更新中,后续的“新”请求可以暂时调用降级方法 但是怎么在重新解析的过程不影响正在处理的请求是我困扰的点 难道要判断等当前所有请求完成后再重新解析?如何判断“旧”请求是否已经都完成也不知道该如何做

烦请各位不吝赐教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

π浅易 2022-09-18 20:59:46

不清楚有没有什么特殊问题,貌似把需要的状态封装到一起,一起更新,就可以了
读的时候获取A,更新的时候直接换另外一个完整的A

class A{
    private B v1;
    private C v2;
    private D v3;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文