https://www.oceanbase.com/docs/common-odp-doc-cn-1000000000380037
路由策略
在以下情况中 ODP 将使用路由策略规则进行路由:
弱读
强读 Primary Zone
强读分区表计算分区失败
问题,如上所述:
为什么在“强读 Primary Zone”或“强读分区表计算分区失败”时使用路由策略规则proxy_route_policy进行路由?
https://www.oceanbase.com/docs/common-odp-doc-cn-1000000000380037
路由策略
在以下情况中 ODP 将使用路由策略规则进行路由:
弱读
强读 Primary Zone
强读分区表计算分区失败
问题,如上所述:
为什么在“强读 Primary Zone”或“强读分区表计算分区失败”时使用路由策略规则proxy_route_policy进行路由?
强度primary_zone很好理解啊,我都设置强读这个zone,就算leader不在这个zone上OBProxy也应该发送到这个zone,毕竟是在OBproxy层面已经设置了路由策略
强读分区表计算分区失败,这个应该是跟弱读一样的原理,因为设置了 proxy_route_policy 的原理,因为分区计算失败所以按照配置的路由策略转发。
在OceanBase中,路由策略是为了确保数据访问的一致性和高效性而设计的。对于您提到的“强读 Primary Zone”和“强读分区表计算分区失败”的情况,这里解释一下为什么需要使用路由策略:
在强一致性读取(强读)场景下,为了保证数据的一致性,OceanBase 需要确保读取的数据是最新的,即从数据的主副本(Leader)读取。因此,在这种情况下,OceanBase 使用路由策略来直接定位到数据所在的 Leader 节点,以确保能够获得最新的一致性数据。
根据文档中的描述,对于强一致性读语句,如果 SQL 指定了表名,那么直接路由到该表涉及的分区的 Leader 的 OBServer 节点执行。这意味着不需要经过复杂的路由决策过程,而是直接定位到数据所在的位置,从而保证了数据的一致性和读取效率。
对于分区表,如果在计算分区时遇到失败的情况,OceanBase 也需要使用路由策略来确定数据的具体的位置。这是因为分区表的数据分布在不同的分区中,每个分区可能位于不同的 OBServer 上。在这种情况下,OceanBase 需要根据路由策略来决定如何定位到正确的分区数据,以完成读取操作。
proxy_route_policy
来进行复杂的路由决策,因为目标很明确。需要注意的是,proxy_route_policy
主要用于控制弱一致性读取时的路由策略,例如备优先读等场景,并不是用于强一致性读取的场景。强一致性读取通常直接指向 Leader 节点,不需要复杂的路由策略。
具体信息可参考以下文档:
所以说,下面的表述中的“路由策略”并不是指 proxy_route_policy
?
在以下情况中 ODP 将使用路由策略规则进行路由:
弱读
强读 Primary Zone
强读分区表计算分区失败
我纠结的是,强读primary_zone和proxy_route_policy有什么关系?必须设置proxy_route_policy才可以强读吗?
在以下情况中 ODP 将使用路由策略规则进行路由:
弱读
强读 Primary Zone
强读分区表计算分区失败
你是高手,你是高手,你是高手,你就是高手 。