微服务:同步缓存更新

时间:2018-11-08 03:46:26

标签: caching microservices hazelcast

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

  • 在此微服务启动时预加载缓存。对于大约3000家商店,我必须获取两个特定的属性并将其缓存。
  • 每24小时刷新一次缓存。

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

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

到目前为止很好。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该使用Hazelcast提供的“加载和存储持久数据”机制,该机制允许两种写入方式:直写后写以及 read -through 将数据加载到缓存中。

寻找 MapLoader 及其方法,这将使您能够预热/预加载集群,并且可以自由地通过自己的实现进行操作。

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