You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Coherence*Extend连接异常处理与多远程代理配置问题咨询

问题1解决方案:缓存服务宕机时客户端正常操作数据库

要实现缓存服务不可用不影响业务,可按以下步骤配置:

  • 首先在Hibernate配置中添加参数 hibernate.cache.coherence.fail_silent,值设为true。开启该参数后,所有缓存操作抛出的异常都会被静默处理,直接视为缓存未命中,请求会直接下发到数据库执行,不会导致业务CRUD失败。如果是Spring Boot项目可在application.properties中配置spring.jpa.properties.hibernate.cache.coherence.fail_silent=true,原生Hibernate则在hibernate.cfg.xml中添加对应property节点即可。
  • 调整Coherence缓存配置的连接容错参数:
    1. 在initiator-config下添加<connect-timeout>2s</connect-timeout>,缩短连接超时判定时间
    2. 在outgoing-message-handler下添加<request-retry-count>3</request-retry-count>,单次请求失败后自动重试3次,避免偶发网络波动导致的异常
    3. 给remote-cache-scheme添加服务故障策略配置:<service-failure-policy>exit-service</service-failure-policy>,当确认服务不可用时自动退出远程缓存服务,不会重复发起无效连接请求
问题2解决方案:多优先级远程代理+全故障时停用缓存
  • Coherence原生支持按配置顺序的优先级代理切换:你可以在tcp-initiator下的name-service-addresses节点中按优先级从高到低添加多个socket-address节点,客户端会按顺序尝试连接,前一个代理故障会自动尝试下一个。
  • 所有代理都不可用时自动停用缓存:在remote-cache-scheme下添加<fallback-scheme>配置,指定故障时降级到本地空缓存方案,配合前面的fail_silent参数即可实现缓存完全不可用时,直接停用缓存功能,所有请求走数据库。
修改后的完整配置示例
<?xml version="1.0"?>
<!--
  Copyright (c) 2020, Oracle and/or its affiliates.
  Licensed under the Universal Permissive License v 1.0 as shown at
  http://oss.oracle.com/licenses/upl.
-->
<cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config"
              xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd">
    <caching-scheme-mapping>
        <cache-mapping>
            <cache-name>org.hibernate.cache.internal.StandardQueryCache</cache-name>
            <scheme-name>remote</scheme-name>
        </cache-mapping>
        <cache-mapping>
            <cache-name>query.*</cache-name>
            <scheme-name>remote</scheme-name>
        </cache-mapping>
        <cache-mapping>
            <cache-name>org.hibernate.cache.spi.UpdateTimestampsCache</cache-name>
            <scheme-name>remote</scheme-name>
        </cache-mapping>
        <cache-mapping>
            <cache-name>*</cache-name>
            <scheme-name>remote</scheme-name>
        </cache-mapping>
    </caching-scheme-mapping>
    <caching-schemes>
        <!-- 远程缓存方案 -->
        <remote-cache-scheme>
            <scheme-name>remote</scheme-name>
            <service-name>ExtendTcpCacheService</service-name>
            <service-failure-policy>exit-service</service-failure-policy>
            <initiator-config>
                <tcp-initiator>
                    <name-service-addresses>
                        <!-- 按优先级从高到低排列代理地址 -->
                        <socket-address>
                            <address>192.168.1.100</address>
                            <port>7574</port>
                        </socket-address>
                        <socket-address>
                            <address>192.168.1.101</address>
                            <port>7574</port>
                        </socket-address>
                    </name-service-addresses>
                    <connect-timeout>2s</connect-timeout>
                </tcp-initiator>
                <outgoing-message-handler>
                    <request-timeout>5s</request-timeout>
                    <request-retry-count>3</request-retry-count>
                </outgoing-message-handler>
            </initiator-config>
            <!-- 远程缓存不可用时降级到本地空缓存,相当于停用缓存 -->
            <fallback-scheme>
                <local-scheme>
                    <unit-calculator>FIXED</unit-calculator>
                    <high-units>0</high-units>
                </local-scheme>
            </fallback-scheme>
        </remote-cache-scheme>
    </caching-schemes>
</cache-config>

内容的提问来源于stack exchange,提问作者ahmed hamza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:15:04