springboot如何优雅更新服务接口?
AService启动时会读取两个资源文件,解析后通过多个成员变量将相关内容加载到内存里面,后续的请求都依赖这块内存。
现在在做自动在线更新,在线更新需要拉最新版本的资源文件,并重新解析(意味着service有状态,此时需要更新里面的成员变量),如何不影响正在处理的“旧”请求的前提下更新?所谓不影响,是指更新前:var1, var2, var3 此时的请求都应该依赖同一时间戳的变量,不能用完var1的时候,var2,var3已经被更新,这些会出现一些数据一致性问题。
没有nginx集群,只有单实例,因此不能切流量,分批上线
AService中有个服务降级方法,如果正在更新中,后续的“新”请求可以暂时调用降级方法 但是怎么在重新解析的过程不影响正在处理的请求是我困扰的点 难道要判断等当前所有请求完成后再重新解析?如何判断“旧”请求是否已经都完成也不知道该如何做
烦请各位不吝赐教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不清楚有没有什么特殊问题,貌似把需要的状态封装到一起,一起更新,就可以了
读的时候获取A,更新的时候直接换另外一个完整的A