当前位置: 首页 > 知识库问答 >
问题:

独立/复制的 Ehcache for cluster

澹台硕
2023-03-14

在我们的项目中,我们决定在应用程序中使用Ehcache作为Hibernate和查询缓存的二级缓存。看起来效果不错。

然后,我们突然意识到我们的生产环境是集群的。查看ehcache文档,我发现最好的方法是使用分布式缓存,但是这涉及到Terracotta服务器,客户端在这个阶段不准备为此付费。

根据留档,对于独立拓扑:

如果在多个应用程序节点运行同一应用程序的情况下使用独立缓存,则它们之间的一致性较弱。

我的两个问题是:

>

  • 在“只读”模式下使用ehcache并继续在集群环境中独立使用它,我们会受到什么影响?因为如果它只是这么说,对于它会攻击其他节点的情况,它会从数据库中获取数据,因为缓存不会在那里复制/配置,我想我们会接受它。唯一的问题是,它不应该导致异常。我想知道在我的场景中使用独立拓扑的后果。

    我们可以将第三个拓扑复制缓存视为解决方案吗?

    我是ehcache的新手,因此这些基本问题。非常感谢回复!

    谢谢!

  • 共有1个答案

    乌俊健
    2023-03-14

    如果您的应用程序是群集的,并且您需要缓存可能更改的数据,则需要使用支持此功能的缓存解决方案。正如你所说,如果你想在集群中使用EhCache,你需要使用Terracotta。

    Hibernate文档在此列出了支持的缓存提供程序。

    我已经使用Infinispan(分布式缓存的开源JBoss解决方案)成功地实现了这一点。这里有一个全面的指南,它将为您提供启动和运行所需的一切。

    Infinispan支持多种操作模式,包括失效,重新标记和分发。2LC 的默认值是同步失效。在此模式下,当在群集中的节点上更新实体时,它将使缓存区域失效,所有其他节点都将收到通知并执行相同的操作。

     类似资料:
    • 我正在考虑创建一个独立的Kafka生产者,它作为守护进程运行,通过套接字接收消息,并将其可靠地发送给Kafka。 但是,我决不能是第一个想到这个想法的人。这样做的目的是避免使用PHP或Node编写Kafka生成器,而只是通过套接字将消息从这些语言传递到独立的守护进程,这些语言负责传递,而主应用程序则一直在做自己的事情。 此守护进程应负责在发生中断时进行重试传递,并充当服务器上运行的所有程序的传递点

    • 创建验证 任何时候,都可以直接使用think\Validate类而不需要定义验证器类进行独立的验证操作,例如: $validate = Validate::make([ 'name' => 'require|max:25', 'email' => 'email' ]); $data = [ 'name' => 'thinkphp', 'email' => 't

    • 即使 M600 与手机断开连接,M600 的部分基本功能仍可继续使用。 在独立模式下,您能: 了解时间、查看日期。 使用 Polar 应用程式进行训练。 如果您的智能手表已经接到Wi-Fi网络,请使用应用程式商店。 使用码表。 使用计时器。 查看您当日的时间表。 设置闹钟。 查看您的步数。 查看您的心率。 更改手表表面。 使用飞行模式。

    • 有人有在Galera集群和独立的MySQL从机之间建立复制的经验吗? 我在Galera集群中有三个节点,我想设置gtid复制到MySQL从服务器。问题是,所有Galera节点都编写自己的bin日志,似乎会导致重复查询。结果,我得到了无限的错误,如下所示: MySQL从属版本:5.6.27

    • Maven资源插件: 此目标要求配置要复制的资源,并指定OutputDirectory。 使用maven将中的两个(或更多)外部资源目录复制到构建输出目录(请参见和)。 下面是复制单个目录的示例:

    • 我实现了一个Scalatra servlet,现在想要创建一个可执行的jar,就像本教程中所描述的那样:http://www.scalatra.org/2.2/guides/deployment/standalone.html 我使用IntelliJ IDEA和Scala插件进行开发,并使用sbt来构建和运行我的servlet(我使用sbt-想法来生成项目文件)。我的问题是,当我尝试编译我的项目时