首页 > 解决方案 > 微服务:同步缓存更新

问题描述

我正在开发一个微服务。该 MS 将部署到 docker 容器中,并由 Kubernetes 进行监控。我必须使用 hazelcast 分布式缓存来实现缓存解决方案。我的要求是:

我实现了 Spring @EventListener 并在启动时对 2 个属性进行数据库调用并执行 @CachePut 并将它们存储在缓存中。

我还有一个带有 cron 表达式的 Spring 调度程序,可以在早上每 6 点刷新缓存。

到目前为止,一切都很好。

但是我没有意识到,在集群环境中——我的微服务的 10-15 个实例将在运行,并将尝试几乎同时执行以上 2 个步骤——从而对我的数据库和缓存产生踩踏效应。有谁知道在这种情况下该怎么做?有什么好的设计,甚至是我可以遵循的平均设计吗?

谢谢。

标签: cachingmicroserviceshazelcast

解决方案


您应该寻求使用 Hazelcast 提供的加载和存储持久数据机制,该机制允许 2 个写入选项:写和后写以及将数据加载到缓存中的直读。

寻找MapLoader及其方法,它们可以让您预热/预加载集群,并且您可以自由地使用自己的实现来执行此操作。

检查更多细节:https ://docs.hazelcast.org/docs/3.11/manual/html-single/index.html#loading-and-storing-persistent-data


推荐阅读