我正在使用Couchbase缓存。有一个couchbase服务器。我有多台服务器来托管应用程序,并稍微修改蓝绿色部署策略,在所有服务器上部署应用程序
部署策略 - 将前50%的服务器视为A,将其作为B
1.从ELB分离A,B仍在处理请求
2.在A.上部署应用程序
3.将A重新连接到ELB
4.从ELB分离B,但B有一些处理请求
5.无效缓存。
6.新请求转到A,而B完成有待处理的请求
7.完成待处理的请求后,开始部署B.
8.在B上部署后,将B重新连接到ELB。
问题随着Couchbase服务器中的缓存而增加。虽然B具有在旧代码上运行的待处理请求,但A都设置为处理在新代码上运行的新请求。在步骤5之后,缓存服务器不包含缓存数据 但是在步骤6中,B将根据旧代码将数据加载到高速缓存中。如果A使用该缓存,则应用程序将在A上中断 如果在步骤6中,A将数据加载到缓存中,并且B使用该缓存的数据,则应用程序将再次在B上中断 如何解决A和B同时处理请求的关键部分问题?部署策略的任何变化也是受欢迎的。
答案 0 :(得分:0)
将缓存标记添加到缓存密钥(即版本控制)可能是最常见的解决方案。 release标签区分不同版本的API缓存的数据。但是应该记住内存需求,因为内存使用量将增加一倍。此外,如果不再接收请求,请记住删除旧版本API的缓存。