【问题标题】:Invalidating and refreshing cache on deployment to multiple servers在部署到多个服务器时使缓存失效并刷新
【发布时间】:2017-04-24 19:20:51
【问题描述】:

我正在使用 Couchbase 缓存。有一个沙发基地服务器。我有多个服务器来托管应用程序,并对蓝绿色部署策略稍作修改以在所有服务器上部署应用程序。
部署策略 - 将前 50% 的服务器视为 A,其余为 B。
1. 将 A 与 ELB 分离,B 仍在处理请求。
2. 在 A 上部署应用程序。
3.将A重新连接到ELB。
4. 将 B 与 ELB 分离,但 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 同时服务请求的关键部分问题?部署策略的任何变化也是受欢迎的。

【问题讨论】:

  • 向缓存键添加发布标签(又名版本控制)可能是最常见的解决方案。这也避免了需要蓝绿色缓存层。
  • @BenManes 你可以移动它来回答,这解决了我的问题。

标签: caching deployment couchbase spring-cache web-farm


【解决方案1】:

向缓存键添加发布标签(又名版本控制)可能是最常见的解决方案。发布标签区分不同版本的 API 缓存的数据。但是应该牢记内存需求,因为内存使用量将增加一倍。另外,如果旧版本 API 不再接收请求,请记住删除缓存。

【讨论】:

    猜你喜欢
    • 2013-12-13
    • 1970-01-01
    • 2013-11-26
    • 2015-06-18
    • 2016-10-18
    • 2019-10-25
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    相关资源
    最近更新 更多