这个问题有很多组成部分,我会尽量不要错过任何一个:
- EhCache 与 Terracotta 一起用于集群
- EhCache 用于弹簧缓存和休眠二级缓存
- 为了只有一个缓存管理器,缓存管理器被声明为“共享”
- 我们有很多 web 模块,它们被部署为不同的 webapps
- 在内部环境中,模块部署在同一台服务器上并且不使用 Teracotta,在生产和登台环境中,它们部署在不同的服务器上
- terracotta 集群使用默认的“最终”一致性模式
- ehcache 2.5.2,休眠 3.6,兵马俑 3.0.6
鉴于这些先决条件,会发生以下情况:
- 一个 Web 模块(Web 应用程序,部署在一台服务器上)对休眠实体进行了更改。这应该在集群范围内更新缓存条目。
- 当从另一个 Web 模块(另一个服务器)请求对象时,即使在一分钟后,如果实体由该标识符加载,则会返回一个陈旧的对象(即,没有第一个 Web 应用程序所做的修改)
问题是: - 我是否正确假设在进行“保存”操作后,二级缓存“最终”(在毫秒内,根据 Terracotta 文档)获取更新集群范围内的信息?- 没有发生这种情况的可能原因是什么?