【问题标题】:MyBatis caching strategy in distributed systemMyBatis在分布式系统中的缓存策略
【发布时间】:2017-02-08 00:18:08
【问题描述】:

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

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

【问题讨论】:

    标签: caching mybatis


    【解决方案1】:

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

    您需要设置外部缓存服务,例如 Ehcache 和 Redis,才能使 MyBatis 二级缓存可用。 请参考http://mybatis.org/ehcache-cache/http://mybatis.org/redis-cache/

    【讨论】:

      【解决方案2】:

      提供曲目:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-05-13
        • 1970-01-01
        • 2016-10-29
        • 2014-05-21
        • 2018-07-04
        • 1970-01-01
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多