我有两个微服务器都在读/写同一个数据库。在其中一个中,我为一些实体缓存REST端点的结果。我还有@CachePut
和@CacheEvict
来控制实体的生命周期。
现在,第二个微服务进入图片:它还可以修改由第一个返回的实体。
我的问题是:在这种情况下是否有任何远程缓存条目驱逐的机制?当然,我可以通过在第一个微服务中暴露“重置”端点并从第二个微服务中调用它来手动完成。但我希望有一些内置的机制,可能在Spring Cloud中。
答案 0 :(得分:1)
我相信缓存复制解决方案将是一个不错的选择。 service 1
在其缓存中所做的任何更改都将通过TCP / UDP复制到service 2
的缓存中,反之亦然-取决于您的配置。
有多个缓存提供程序(例如EHCache)可立即提供。
我的配置看起来像这样:
...
<!-- Set up Cache peer provider factory -->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" propertySeparator="," properties="replicateAsynchronously=true,replicatePuts=true,replicateUpdates=true,replicateUpdatesViaCopy=false,replicateRemovals=true"/>
<!-- Set up Cache peer listener factory -->
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/>
...
查看this (EHCache replication)-可能会有所帮助。