OBproxy 中没有Partition的路由信息,只有租户的路由信息(TS),这是什么一种情况?到对应OBServer路由信息可以理解,但是到租户的路由信息是什么,没理解。
obclient -h 127.0.0.1 -uroot@sys@obcluster1 -P2883 —这种是到sys租户的路由信息
obclietn -h127.0.0.1 -root@tenant_1#obcluster1 -P2883 --这是到 tenant_1租户的信息
obclietn -h127.0.0.1 -root@tenant_1#new_cluster -P2883 --这是到 new_cluster 的tenant_1租户的信息
路由信息分为三类:集群路由 租户路由 表路由
odp支持不同集群之间的路由,一个ocp控制多个observer集群。
简单来说就是:定位一个集群的租户是那个
在 OceanBase 的架构中,OBProxy 作为中间件负责将客户端的请求路由到合适的 OBServer 节点。OBProxy 维护的路由信息主要包括两个层面:集群层面和租户层面。
-
集群层面:OBProxy 通过集群路由获取集群中所有 OBServer 节点的信息。这部分信息主要来自于
__all_virtual_proxy_schema
表,OBProxy 会定期(例如每 15 秒)从DBA_OB_SERVERS
视图中拉取集群的所有机器节点信息,以便感知集群的动态变化。 -
租户层面:对于每个租户,OBProxy 会维护该租户的路由信息,即租户资源所在的机器列表。普通租户的路由信息通过
__all_dummy
表获取,而 sys 租户的路由信息通过DBA_OB_SERVERS
视图获取。这些信息会被缓存到 OBProxy 的本地内存中,以提高路由效率。
至于为什么 OBProxy 没有 Partition 的路由信息,这是因为 Partition 的路由信息是由 OBServer 节点自己维护的。当 OBProxy 将请求路由到某个 OBServer 节点后,该 OBServer 节点会根据 Partition 的路由信息进一步确定具体的 Partition。这种方式可以减少 OBProxy 的负担,提高系统的整体性能。
总结来说,OBProxy 维护的租户路由信息主要是为了确定请求应该发送到哪个 OBServer 节点,而不是具体的 Partition。OBServer 节点在收到请求后,会根据 Partition 的路由信息进一步处理。
更多信息请查看:
知识+1
可以想象如果能路由分区。那这个路由表就太大了,分区可能几十万个,而且分区随时可能改变主zone,几乎是不可能完成的任务。
论坛小助手,回答越来越好了
学习总结经验
odp只做分区路由,这样保证路由表简单