关于 OBProxy 的路由策略,以下哪些描述是正确的?
A. follower_first 策略下,弱一致性读会优先路由到 Follower
B. 如果 OBProxy 没有 Partition 路由信息,会先发给任意节点再转发
C. READ_CONSISTENCY(WEAK) Hint 可以强制走 Follower
D. OBProxy 必须依赖 ConfigServer 才能启动
A. 正确
follower_first 策略下,弱一致性读确实优先路由到 Follower。官方文档明确:
follower_first:弱读请求优先路由到备副本,如果备副本都不可用,弱读请求路由到主副本。
B. 正确
当 OBProxy 缓存中没有 Partition 级路由信息(只有租户级 TS 路由信息)时,会随机路由到一个 OBServer 节点,由该节点内部转发。官方英文文档也提到:
SQL statements are randomly routed to an arbitrary OBServer node.
V3.2.0 后做了优化:优先随机路由到有分区的节点,提高命中率。
C. 错误
/+READ_CONSISTENCY(WEAK)/ Hint 只是把读设为弱一致性,并不强制走 Follower。官方文档明确读写分离需要两步配置:
设置弱读(Hint 或 ob_read_consistency)
修改路由策略(proxy_route_policy=follower_first)
只加 Hint 不改路由策略,默认走的是负载均衡路由,可能到 Leader 也可能到 Follower,不保证走 Follower。
D. 错误
OBProxy 有两种启动方式:
方式一:用 -r 参数直接指定 RootServer 地址,不需要 ConfigServer,常用于开发调试
方式二:用 obproxy_config_server_url 参数,依赖 ConfigServer,生产环境推荐
所以 ConfigServer 是推荐项,不是必须项。
答案:A、B