阿里云首页 金融分布式架构 SOFAStack

配置同城双活模式

数据访问代理默认不支持同城双活模式,您需要进行手动配置。本文将介绍如何为数据访问代理配置同城双活模式。

操作步骤

  1. 在工程 pom.xml 文件中,添加以下 Maven 依赖。

    <dependency>
         <groupId>com.alipay.sofa</groupId>
         <artifactId>dbp-connector-java</artifactId>
         <version>1.0.8</version>
    </dependency>
  2. 根据以下示例,修改 Spring 配置文件。

    <!-- vip寻址-->
    <bean id="dbpDiscovery" class="com.alipay.sofa.dbp.discovery.DbpDiscovery"/>
    
    <!-- dbp-connector代理-->
    <bean id="delegatingDataSource" class="com.alipay.sofa.dbp.DbpDataSource" init-method="init">
        <property name="delegate"ref="simpleDataSource"/>
        <property name="appName" value="${yourAppName}"/>
        <property name="database" value="${yourDatabase}"/>
        <property name="dbpInstanceId" value="${yourDbpInstanceId}"/>
        <property name="clientTracer" ref="clientTracer"/>
    </bean>
    
    <!-- 连接池配置,以 druid 为例 -->
    <bean id="simpleDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://${yourDbpInstanceId}:8306/${yourDatabase}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>
    
    <bean id="clientTracer" class="com.alipay.sofa.dbp.DbpClientTracer"/>
    说明:目前支持的连接池包括 Druid、DBCP、C3P0、Tomcat。
  3. 排除不需要自动寻址的 DataSoure。

    <!-- 有些数据源需要直连数据库或者类似 spring 的 AbstractRoutingDataSource-->
    
    <bean id="dbpDiscovery" class="com.alipay.sofa.dbp.discovery.DbpDiscovery">
           <property name="excludeDataSources">
                <list>
                     <value>dynamicDataSource</value>
                </list>
           </property>
    </bean>
  4. 如果 Spring 配置文件中配置了事务,事务中的 DataSource 配置需要使用 dbp-connector 代理 DataSource,即第 3 步 Spring 配置文件中的 delegatingDataSource