【多选题】关于 OBProxy 的路由策略,以下哪些描述是正确的?

关于 OBProxy 的路由策略,以下哪些描述是正确的?
A. follower_first 策略下,弱一致性读会优先路由到 Follower
B. 如果 OBProxy 没有 Partition 路由信息,会先发给任意节点再转发
C. READ_CONSISTENCY(WEAK) Hint 可以强制走 Follower
D. OBProxy 必须依赖 ConfigServer 才能启动

1 个赞

:white_check_mark: A. 正确

follower_first 策略下,弱一致性读确实优先路由到 Follower。官方文档明确:

follower_first:弱读请求优先路由到备副本,如果备副本都不可用,弱读请求路由到主副本。

:white_check_mark: B. 正确

当 OBProxy 缓存中没有 Partition 级路由信息(只有租户级 TS 路由信息)时,会随机路由到一个 OBServer 节点,由该节点内部转发。官方英文文档也提到:

SQL statements are randomly routed to an arbitrary OBServer node.

V3.2.0 后做了优化:优先随机路由到有分区的节点,提高命中率。

:x: C. 错误

/+READ_CONSISTENCY(WEAK)/ Hint 只是把读设为弱一致性,并不强制走 Follower。官方文档明确读写分离需要两步配置:

设置弱读(Hint 或 ob_read_consistency)
修改路由策略(proxy_route_policy=follower_first)

只加 Hint 不改路由策略,默认走的是负载均衡路由,可能到 Leader 也可能到 Follower,不保证走 Follower。

:x: D. 错误

OBProxy 有两种启动方式:

方式一:用 -r 参数直接指定 RootServer 地址,不需要 ConfigServer,常用于开发调试
方式二:用 obproxy_config_server_url 参数,依赖 ConfigServer,生产环境推荐

所以 ConfigServer 是推荐项,不是必须项。

答案:A、B