首批通过分布式安全可靠测评,为关键业务系统打造
代理概述
更新时间:2024-12-18 17:42:40
OceanBase Database Proxy(简称 ODP )是 OceanBase 数据库专用的代理服务器。OceanBase 数据库的用户数据以多副本的形式存放在各个 OBServer 节点上,ODP 接收用户发出的 SQL 请求,并将 SQL 请求转发至最佳目标 OBServer,最后将执行结果返回给用户。
为什么需要 ODP?
ODP 是代理服务器,代理服务器会让访问数据库的链路多一次跳转,那为什么需要 ODP 呢?我们以下图为例进行说明。

图中 APP 是我们的业务程序,APP 前面有三台 ODP(ODP 的进程名叫做 obproxy),在实际部署中,ODP 和 APP 之间一般会有一个负载均衡(如:F5 )将请求分散到多台 ODP 上面,ODP 下面是 OBServer 节点,图中有 6 个 OBServer 节点。
需要使用 ODP 的原因如下:
连接管理:OceanBase 集群规模庞大,机器、软件出现问题或者本身运维机器上线、下线概率较大,如果直连 OBServer 节点,遇到上面的情况客户端就会发生断连。ODP 屏蔽了 OBServer 节点本身分布式的复杂性,客户连接 ODP,ODP 可以保证连接的稳定性,自身对 OBServer 节点的复杂状态进行处理。
数据路由:ODP 可以获取到 OBServer 节点中的数据分布信息,可以将用户 SQL 高效转发到数据所在机器,执行效率更高。如:表 t1 数据在图中 P1 内,表 t2 数据在图中 P2 内,表 t3 数据在图中 P3 内。对于 insert into t1 语句 ODP 可以将 SQL 转发到 ZONE_2 中含有 P1 主副本的机器上。对于 update t2 语句 ODP 可以将 SQL 转发到 ZONE_1 中含有 P2 主副本的机器上。
ODP 可以实现像使用单机数据库一样使用分布式数据库。
ODP 特性
作为 OceanBase 数据库的关键组件,ODP 具有如下特性:
高性能转发
ODP 完整兼容 MySQL 协议,并支持 OceanBase 自研协议,采用多线程异步框架和透明流式转发的设计,保证了数据的高性能转发,同时确保了自身对机器资源的最小消耗。
最佳路由
ODP 会充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase 数据库多地部署的最优链路,以及 OceanBase 数据库各机器的状态及负载情况,将用户的请求路由到最佳的 OBServer 节点上,最大程度的保证了 OceanBase 数据库整体的高性能运转。
连接管理
针对一个客户端的物理连接,ODP 维持自身到后端多个 OBServer 节点的连接,采用基于版本号的增量同步方案维持了每个 OBServer 节点连接的会话状态,保证了客户端高效访问各个 OBServer 节点。
专有协议
ODP 与 OBServer 节点默认采用了 OceanBase 专有协议,如增加报文的 CRC 校验保证与 OBServer 节点链路的正确性,增强传输协议以支持 Oracle 兼容性的数据类型和交互模型。
安全可信
ODP 支持使用 SSL 访问数据,并和 MySQL 协议做了兼容,满足客户安全需求。
易运维
ODP 本身无状态支持无限水平扩展,支持同时访问多个 OceanBase 集群。可以通过丰富的内部命令实现对自身状态的实时监控,提供极大的运维便利性。
许可证
ODP 社区版完全开源,使用 MulanPubL - 2.0 许可证,您可以免费复制和使用源代码。当您修改或分发源代码时,请遵守木兰协议。