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

terracotta上的ehcache客户端故障切换

太叔栋
2023-03-14

我正在尝试将OSS Ehcache与兵马俑集群一起使用,但未能从ehcache客户端实现故障转移。

我在这里的文档中找到了这种配置

<ehcache:service>
<terracotta:cluster>
  <terracotta:connection url="terracotta://localhost:9510/clustered"/>
  <terracotta:server-side-config auto-create="true">
    <terracotta:default-resource from="default-resource"/>
  </terracotta:server-side-config>
</terracotta:cluster>
</ehcache:service>    

但是这个连接只接受一个URL。如果集群中有两台terracotta服务器,我希望HA具有故障转移功能。类似ActiveMQ故障转移url:

failover:(server1:port,server2:port)

我的问题是:这在开源ehcache中是可能的,还是我需要有企业版本,如果可能的话,如何配置它。

更新

我试过<代码>

org.ehcache.xml.exceptions.XmlConfigurationException: Error parsing XML configuration at file:/F:/Work/WORKSPACES/java7_ws/CachingTest/target/classes/ehcache.xml
    at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:167)
    at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:131)
    at org.ehcache.jsr107.EhcacheCachingProvider$ConfigSupplier.getConfiguration(EhcacheCachingProvider.java:324)
    ... 4 more
Caused by: org.xml.sax.SAXParseException; systemId: file:/F:/Work/WORKSPACES/java7_ws/CachingTest/target/classes/ehcache.xml; lineNumber: 12; columnNumber: 91; cvc-pattern-valid: Value 'terracotta://host1:9510,host2:9610/clustered1' is not facet-valid with respect to pattern '\w+://([^\]\[/?#@]+@)?[^:?#/]+(:[1-9][0-9]{0,4})?(/[^\?#]*)?(\?[^#]*)?(#.*)?' for type 'connectionUrl'.

如果我尝试

Exception in thread "main" org.ehcache.StateTransitionException: org.terracotta.connection.ConnectionException: java.util.concurrent.TimeoutException
    at org.ehcache.core.StatusTransitioner$Transition.failed(StatusTransitioner.java:235)
    at org.ehcache.core.EhcacheManager.init(EhcacheManager.java:588)
    at org.ehcache.jsr107.EhcacheCachingProvider.createCacheManager(EhcacheCachingProvider.java:148)
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:128)
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:79)
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:183)
    at dev.ams.poc.CacheApp.main(CacheApp.java:15)
Caused by: java.lang.RuntimeException: org.terracotta.connection.ConnectionException: java.util.concurrent.TimeoutException
    at org.ehcache.clustered.client.internal.service.DefaultClusteringService.initClusterConnection(DefaultClusteringService.java:189)
    at org.ehcache.clustered.client.internal.service.DefaultClusteringService.start(DefaultClusteringService.java:140)
    at org.ehcache.core.internal.service.ServiceLocator.startAllServices(ServiceLocator.java:118)
    at org.ehcache.core.EhcacheManager.init(EhcacheManager.java:560)
    ... 5 more

Ehcache版本:Ehcache-clustered-3.2


共有1个答案

金昌胤
2023-03-14

此功能是开源产品的一部分,没有问题。

您需要在其中列出多个服务器:端口,如:

<ehcache:service>
  <terracotta:cluster>
    <terracotta:connection url="terracotta://localhost:9510,otherhost:9510/clustered"/>
    <terracotta:server-side-config auto-create="true">
      <terracotta:default-resource from="default-resource"/>
    </terracotta:server-side-config>
  </terracotta:cluster>
</ehcache:service> 

列出所有服务器是推荐的方法,否则您需要非常精确地理解故障转移逻辑。

 类似资料:
  • 跟随wiki页面https://cwiki.apache.org/qpid/amqp-java-jms-messaging-client.html到https://cwiki.apache.org/qpid/connection-url-format.html. Simple me需要qpid-amqp-1-0-client-jms-0.20-sources。jar接受URI格式,但它似乎忽视了一

  • 我使用camel和cxf组件从Web服务中获取一些数据。在某些情况下,Web服务返回标准的soap:fault。我有下一个步骤: 阅读cxf和camel邮件列表中的类似问题,我理解cxfendpoint应该抛出异常,如果有soap foalt,org.apache.cxf.binding.soap.soapfault类型的异常,但我不能得到它。onException子句的目标是处理soap错误异常

  • 我在一个独立的java应用程序中使用apache cxf client 3.2.2来调用一些soap Web服务。 试图在单向操作中获取soap故障代码和故障字符串,但没有成功。 我定义了一个自定义拦截器,但它永远不会到达handleMessage 定制拦截器的代码 } 我遇到的异常是MessageSenderEndingInterceptor(处于PREPARE\u SEND阶段)。 它正在抛出

  • 我使用的是Apache Artemis V2.12.0,在两个VM中启动了两个broker实例 broker.xml(myhost1)[myhost2的broker.xml与此类似,只是我使用的端口是61616] 步骤2:java客户机开始向代理发送消息 步骤3:从myhost1的控制台,我看到推送到队列中的消息 步骤4:停止myhost1中的代理实例 客户端代码执行日志消息:当客户端启动时,my

  • 我想知道是否可以在Kafka制作程序中配置2个不同的Kafka集群。 目前我正试图让我的制片人 我正在使用Apache Kafka 2.8和Python 3.7的confluent_kafka==1.8.2包。 生产商代码下方: 当我杀死clusterB时,我得到了以下错误消息。

  • 根据AWS文件: worker使用Java ExecutorService任务调用记录处理器方法。如果任务失败,工作进程将保留对记录处理器正在处理的碎片的控制。工作进程启动一个新的记录处理器任务来处理该碎片。有关详细信息,请参阅阅读节流。 根据AWS文件的另一页: Kinesis客户端库(KCL)依靠您的进程记录代码来处理处理数据记录时出现的任何异常。从进程记录抛出的任何异常都被KCL吸收。为了避