Spring 缓存:远程逐出条目
Spring Caching: evict entry remotely
我有 2 个微服务 reading/writing 同一个数据库。在其中之一中,我缓存了某些实体的 REST 端点的结果。我还有 @CachePut
和 @CacheEvict
来控制实体生命周期。
现在,第二个微服务出现了:它也可以修改第一个返回的实体。
我的问题是:在这种情况下是否有任何机制可以用于远程缓存条目逐出?当然,我可以通过在第一个微服务中公开 "reset" 端点并从第二个微服务调用它来手动完成。但我希望有一些内置机制,也许在 Spring Cloud 中。
我相信缓存复制解决方案是一个不错的选择。 service 1
在其缓存中所做的任何更改都将被复制到 service 2
的缓存中,反之亦然,超过 TCP/UDP - 取决于您的配置。
有多个缓存提供程序(例如 EHCache)开箱即用。
我的配置如下所示:
...<br>
<!-- 设置缓存对等提供者工厂 -->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" propertySeparator="," properties="replicateAsynchronously=true,replicatePuts=true,replicateUpdates=true,replicateUpdatesViaCopy=false,replicateRemovals=true"/><br>
<!-- 设置缓存对等监听器工厂 -->
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/><br>
...
查看 this (EHCache replication) - 可能会有帮助。
我有 2 个微服务 reading/writing 同一个数据库。在其中之一中,我缓存了某些实体的 REST 端点的结果。我还有 @CachePut
和 @CacheEvict
来控制实体生命周期。
现在,第二个微服务出现了:它也可以修改第一个返回的实体。
我的问题是:在这种情况下是否有任何机制可以用于远程缓存条目逐出?当然,我可以通过在第一个微服务中公开 "reset" 端点并从第二个微服务调用它来手动完成。但我希望有一些内置机制,也许在 Spring Cloud 中。
我相信缓存复制解决方案是一个不错的选择。 service 1
在其缓存中所做的任何更改都将被复制到 service 2
的缓存中,反之亦然,超过 TCP/UDP - 取决于您的配置。
有多个缓存提供程序(例如 EHCache)开箱即用。
我的配置如下所示:
...<br>
<!-- 设置缓存对等提供者工厂 -->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory" propertySeparator="," properties="replicateAsynchronously=true,replicatePuts=true,replicateUpdates=true,replicateUpdatesViaCopy=false,replicateRemovals=true"/><br>
<!-- 设置缓存对等监听器工厂 -->
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"/><br>
...
查看 this (EHCache replication) - 可能会有帮助。