ODP默认路由规则是什么,最好的路由规则是什么,怎么配置

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】ODP
【 使用版本 】最新
【问题描述】ODP默认路由规则是什么,最好的路由规则是什么,怎么配置
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据文档库中的信息,以下是关于 ODP 默认路由规则、最佳路由规则及其配置的详细解答:

1. ODP 默认路由规则

ODP 的默认路由规则由参数 server_routing_mode 决定。根据文档片段(标题:server_routing_mode 用于设置 ODP 的路由模式),默认值为 oceanbase,表示标准路由模式。

  • 标准路由模式 (oceanbase):ODP 会充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase 数据库多地部署的最优链路,以及 OceanBase 数据库各机器的状态及负载情况,将用户的请求路由到最佳的 OBServer 节点上。
  • 随机路由模式 (random):如果将 server_routing_mode 设置为 random,ODP 会随机选择 OBServer 发送请求。

配置方法:

可以通过修改 ODP 的配置项来调整路由模式:

set global server_routing_mode = 'oceanbase'; -- 标准路由模式(默认)
set global server_routing_mode = 'random';   -- 随机路由模式

2. 最佳路由规则

最佳路由规则需要根据具体的业务场景和性能需求来选择。以下是一些常见的优化策略:

(1)基于数据分布的路由

为了降低网络通信开销,ODP 会感知 SQL 和表数据分布,尽量将请求路由到数据所在的节点。例如,对于 SQL 语句 select c1 from test,如果 t1 表的数据分布在 OBServer1 节点上,则直接路由到 OBServer1 节点(参考文档片段:高性能是 OceanBase 数据库的重要特性)。

(2)基于地理位置的路由

为了减少网络延迟,ODP 优先选择地理上更近的节点进行路由。优先级顺序为:

  • 同机房 > 同城不同机房 > 不同城市

(3)弱读请求的路由策略

对于弱读请求,可以通过配置项 proxy_route_policy 来优化路由策略:

  • follower_first:弱读请求优先路由到备副本,如果备副本不可用,则路由到主副本。
  • follower_only:弱读请求仅路由到备副本,如果备副本不可用,则断开与客户端的连接。

配置方法:

通过修改 ODP 的实例级配置项 proxy_route_policy 来设置弱读请求的路由策略:

set global proxy_route_policy = 'follower_first'; -- 弱读优先备副本
set global proxy_route_policy = 'follower_only';  -- 弱读仅备副本

3. 如何配置最佳路由规则

根据业务需求和性能目标,可以综合使用以下配置方法:

(1)配置 LDC 和 IDC 名称

  • 配置 OceanBase 集群的 LDC(Local Data Center)。
  • 配置 ODP 实例级配置项 proxy_idc_name,指定机房名称。如果 proxy_idc_name 配置为空,则 LDC 路由失效。

(2)调整路由策略

  • 使用 proxy_route_policy 控制弱读请求的路由策略。
  • 使用 server_routing_mode 选择标准路由模式或随机路由模式。

(3)启用定时刷新

ODP 会间隔一段时间(默认 60 秒)更新 Service Name 相关路由信息,确保缓存信息不会落后太久。可以通过配置项 config_server_refresh_interval 调整刷新频率。

配置示例:

-- 设置标准路由模式
set global server_routing_mode = 'oceanbase';

-- 设置弱读优先备副本
set global proxy_route_policy = 'follower_first';

-- 指定机房名称
set global proxy_idc_name = 'shanghai_idc';

总结

  • 默认路由规则server_routing_mode = oceanbase,即标准路由模式。
  • 最佳路由规则:根据业务需求选择合适的路由策略,如基于数据分布、地理位置或弱读请求的优化策略。
  • 配置方法:通过修改 ODP 的全局配置项(如 server_routing_modeproxy_route_policyproxy_idc_name 等)实现路由规则的调整。

以上内容依据的是文档片段中的相关信息(如 server_routing_mode 参数说明、SQL 路由原理等)。如果需要进一步优化或定制化配置,请结合具体业务场景进行调整。

具体信息可参考以下文档:

  1. ODP SQL 路由原理
  2. server_routing_mode
  3. 主备租户自动路由
  4. SQL 路由
  5. 数据路由影响因素
  6. 路由策略路由
  7. 读写分离