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

圣杯本地埃卡奇与远程兵马俑组合配置

皮弘博
2023-03-14

我们在Grails环境中配置了ehcache,我正在尝试确定如何使用远程terracotta缓存配置本地缓存。

这个场景是,我们有一些计算成本最低的数据,并受益于本地内存缓存,但当使用远程terracotta缓存时,这种好处被最小化了。

配置目前非常简单:

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd" >
  <diskStore path="java.io.tmpdir"/>
  <cacheManagerEventListenerFactory class="" properties=""/>
  <defaultCache
       maxElementsInMemory="20000"
       eternal="false"
       timeToLiveSeconds="12000"
       overflowToDisk="false"
       diskPersistent="false">
    <terracotta />
  </defaultCache>
  <terracottaConfig url="${com.ngs.app.tc.host}:${com.ngs.app.tc.port}" />

  <cache name="org.hibernate.cache.UpdateTimestampsCache"
      maxElementsInMemory="10000"
      timeToIdleSeconds="300"/>

  <cache name="org.hibernate.cache.StandardQueryCache"
      maxElementsInMemory="10000"
      timeToIdleSeconds="300"/>
</ehcache>

问题是:

>

  • 鉴于上面的配置,这是否意味着缓存放置/获取将始终往返于兵马俑服务器?

    在往返服务器之前,是否有可能使用本地“热”缓存的配置?

    如果要使用本地“热”缓存,则需要使用不同的缓存配置以编程方式实现,而不是由 terracotta 提供支持?

    感谢您的任何建议...

  • 共有1个答案

    鲁华灿
    2023-03-14

    几个要点:

    • 上面的配置仅声明要群集的默认缓存,命名缓存未群集。
    • Ehcache与分层系统一起工作,这意味着即使对于集群缓存,maxElementsInMemory的设置也将应用于缓存的堆上层,该层是Terracotta集群的每个JVM部分的本地。注意:maxElementsInMemory已被弃用,在最近的Ehcache版本中应该被maxEntriesLocalHeap取代。

    鉴于此,以下是基本操作及其与缓存群集位的关系:

    • 获得本地命中:只触及堆层,没有兵马俑往返
    • 获取本地未命中:将去尝试查找集群中的值-兵马俑往返
    • 放置:将需要更新集群-兵马俑往返
    • 删除:将需要更新集群-兵马俑往返

    对于最后两个操作,默认配置将本地操作与集群操作分离。如果无法处理读取过时值,则可以使用一致性设置。

    这意味着您的问题的答案是:

      < li >参见上文 < li >是 < li >是和否:如果您只需要本地部分,您可以有一个仅本地缓存,只需在缓存配置中省略< code>terracotta元素。如果您需要集群位,但是希望大多数缓存命中是本地命中,那么您需要调整集群缓存配置。
     类似资料:
    • 我在我的应用程序中使用了maven、hibernate3、struts和spring,并成功地使用了ehcache。缓存是在本地完成的,现在我想要分布式。我找不到一个很好的教程,它一步一步地解释了如何使用ehcache和terracotta进行分发。 帮助将不胜感激。 谢啦

    • 我正在尝试将我的应用程序连接到 Terracotta 缓存群集,但我在使用我设置的配置启动应用程序时遇到问题。我在控制台中没有收到任何错误,但是如果我进行调试,则在尝试创建缓存管理器时会失败。 我得到的错误是这个。原因: java.lang.ClassNotfundException: net.sf.ehcache.config.TerracottaConfig配置 我正在使用冬眠4.x,Spri

    • 我发现了很多展示如何在Spring Boot应用程序中集成Ehcache的例子,例如这里所描述的。就我对这个例子的理解,Ehcache本身是运行在Spring应用程序中的。 然而,我们的设置提供了一个Terracotta服务器作为“中央”缓存实例。不幸的是,到目前为止我还没有找到任何文档,如何告诉我的Spring Boot应用程序使用远程Terracotta服务器作为Ehcache。 你有什么例子

    • 我正在尝试配置兵马俑服务器以使用spring / mybatis应用程序,但我收到以下错误。我不确定这是否意味着密钥本身或从密钥返回的值无法序列化。缓存作为本地缓存工作正常,但现在尝试使用服务器时出现问题。我需要一个线索,为什么这不能被序列化。谢谢。 因此,我从《如何序列化Spring Bean (spring 3)》中得到一个线索,这可能与缺乏会话范围有关。这些错误发生在我启动Tomcat并且加

    • 我在系统中运行了2/3个Java/Spring引导应用程序。我想使用通用存储,以便其他Java应用程序也可以使用任何其他Java /Spring启动应用程序生成的缓存。 我可以使用公共磁盘库在内存中创建ecache吗? 或者我应该在我的机器上运行独立的ehcache 所以,据我所知,看起来如果我们需要在服务器中运行,它应该在Terracotta服务器中。 但是,我更希望集中缓存,以便其他应用程序可

    • 本文向大家介绍CSS 使用Flexbox的圣杯布局,包括了CSS 使用Flexbox的圣杯布局的使用技巧和注意事项,需要的朋友参考一下 示例 Holy Grail布局是具有固定高度的页眉和页脚以及中心带有3列的布局。这3列包括一个固定宽度的sidenav,一个流体中心以及一个用于其他内容(例如广告)的列(流体中心在标记中排在最前面)。CSS Flexbox可以通过非常简单的标记来实现此目的: HT