客户端通过 OBProxy 访问 OceanBase 数据库的数据链路如下图所示,用户通过任意 Client 驱动发出请求,请求通过负载均衡组件访问到任意一台无状态的 OBProxy 上,然后 OBProxy 再将用户请求转发到后端 OceanBase 集群中最佳的 OBServer 上去执行。
每个 OBServer 均包含完整的 SQL 引擎和存储引擎,用来负责解析用户 SQL 以生成物理执行计划并执行。分布式的 OBServer 之间通过 Paxos 协议以保证高可用性。这种架构设计中,OBProxy 只承担基本的路由和容灾功能,而数据库的功能全部交由 OBServer 实现。这样更加简单明确的分工可以将各组件性能做得更加极致,OceanBase 数据库整体最高也能做到近似访问单机数据库的性能。