分布式系统中的MyBatis缓存策略

时间:2016-09-29 15:21:33

标签: caching mybatis

我想知道myBatis如何缓存(本地和第二级)来处理分布式系统中的数据。我有5个针对Oracle数据库运行的实例,我使用MyBatis进行数据访问。所有5个实例都相同,但在不同的服务器上运行。 Mybatis配置为使用SESSION缓存,在执行任何插入/删除/更新语句时,缓存被清除。

当1个实例运行时,将清除该服务器的本地缓存。其他4个实例如何知道需要刷新/更新缓存?

2 个答案:

答案 0 :(得分:0)

给出一个曲目:

我猜所有实例都在负载均衡器后面并针对单个Oracle DB运行。 实例节点最好是在集群中,否则,它们如何相互通信。然后可以在集群的节点之间共享缓存,例如Jboss doc, working with Hibernate中所述。

问题更多的是如何配置服务器(或应用程序,在 beans.xml 等文件中)以使用MyBatis缓存。

如果SessionFactory被声明为 @ApplicationScoped ,那就足够了。

答案 1 :(得分:0)

如果您正在使用内置缓存,则不会。如果您在具有默认缓存的分布式环境中使用MyBatis,则永远不要启用辅助缓存,因为它们不知道彼此之间会发生什么,并且不会在发生更改时清除旧的缓存。

您需要设置一个外部缓存服务,例如Ehcache和Redis,以使MyBatis辅助缓存可用。 请参阅http://mybatis.org/ehcache-cache/http://mybatis.org/redis-cache/