数字海洋无状态服务器(我有4台服务器在数字海洋上运行)工作与缓存策略我在Spring Boot上实现?



我已经在Spring Boot REST应用程序中实现了缓存。我的策略包括基于时间的缓存清除策略和基于更新的缓存清除策略。我担心,由于我使用无状态服务器,如果有一个方法被调用来更新某些数据,并且这是由服务器实例a处理的,那么服务器实例B, C和D中相应的缓存也不会更新。

这是我要面对的问题吗/有没有办法克服这个问题?

这是软件开发中最老的问题——当你有多个服务器时缓存失效

  1. 处理它的一种方法是将您的缓存从单个服务器移出,并将它们移到另一个共享的地方,例如保存其他应用程序引用的缓存条目的另一个实例,或者像redis[集中式缓存]

  2. 第二种方法是做一个广播消息,这样每个服务器现在都知道一旦数据被修改或删除后该条目无效-这里你冒着消息未被处理的风险,因此在某些服务器中留下了一个陈旧的条目[s]

  3. 另一种选择是有某种提前写日志[像kafka或redis流],由每个服务器处理,因此它们都将确定性地处理事件,并具有相同的缓存状态

如果你需要更多的帮助,我们可以在SO之外设置一些时间

相关内容