读写分离算法 #
轮询算法 #
类型:ROUND_ROBIN
事务内,读请求根据 transaction-read-query-strategy 属性的配置进行路由。事务外,采用轮询策略路由到 replica。
可配置属性:
属性名称 | 数据类型 | 说明 |
---|---|---|
transaction-read-query-strategy | String | 事务内读请求路由策略,可选值:FIXED_PRIMARY(路由到 primary)、FIXED_REPLICA(根据轮询策略选择一个固定的 replica)、DYNAMIC_REPLICA(根据轮询策略路由到不同的 replica),默认值:FIXED_PRIMARY。 |
随机访问算法 #
类型:RANDOM
事务内,读请求根据 transaction-read-query-strategy 属性的配置进行路由。事务外,采用随机策略路由到 replica。
可配置属性:
属性名称 | 数据类型 | 说明 |
---|---|---|
transaction-read-query-strategy | String | 事务内读请求路由策略,可选值:FIXED_PRIMARY(路由到 primary)、FIXED_REPLICA(根据轮询策略选择一个固定的 replica)、DYNAMIC_REPLICA(根据轮询策略路由到不同的 replica),默认值:FIXED_PRIMARY。 |
延迟访问算法 #
类型:SPHERE_EX_DELAY_REPLICA
可配置属性:无
权重访问算法 #
类型:WEIGHT
可配置属性:
使用中的读库都必须配置权重
属性名称 | 数据类型 | 说明 |
---|---|---|
${replica-name} | double | 属性名使用读库名称,参数填写读库对应的权重值。权重参数范围最小值 > 0,合计 <= Double.MAX_VALUE。 |
transaction-read-query-strategy | String | 事务内读请求路由策略,可选值:FIXED_PRIMARY(路由到 primary)、FIXED_REPLICA(根据权重策略选择一个固定的 replica)、DYNAMIC_REPLICA(根据权重策略路由到不同的 replica),默认值:FIXED_PRIMARY。 |
操作步骤 #
- 使用读写分离时,在 loadBalancers 属性下配置对应的负载均衡算法即可;
配置示例 #
copyrules:
- !READWRITE_SPLITTING
dataSources:
readwrite_ds:
staticStrategy:
writeDataSourceName: write_ds
readDataSourceNames:
- read_ds_0
- read_ds_1
loadBalancerName: random
loadBalancers:
random:
type: RANDOM
props:
transaction-read-query-strategy: FIXED_PRIMARY