OceanBase 数据库代理 ODP(OceanBase Database Proxy,又称 OBProxy)是 OceanBase 专用的代理服务器,OceanBase 用户的数据会以多副本的形式存放在各个 OBServer 上,ODP 则负责接收用户发过来的 SQL 请求,转发用户 SQL 请求到最佳目标 OBServer 上,并将执行结果返回给客户。
作为 OceanBase 数据库的关键组件,ODP 具有以下特性:
- 高性能转发
ODP 完整兼容 MySQL 协议,并支持 OceanBase 自研协议,采用多线程异步框架和透明流式转发的设计,保证了数据的高性能转发,同时确保了自身对机器资源的最小消耗。
- 最佳路由
ODP 会充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase 多地部署的最优链路,以及 OceanBase 各机器的状态及负载情况,将用户的请求路由到最佳的 OBServer,最大程度的保证了 OceanBase 整体的高性能运转。
- 连接管理
针对一个客户端的物理连接,ODP 维持自身到后端多个 OBServer 的连接,采用基于版本号的增量同步方案维持了每个 OBServer 连接的会话状态,保证了客户端高效访问各个 OBServer。
- 专有协议
ODP 与 OBServer 默认采用了 OceanBase 专有协议,如增加报文的 CRC 校验保证与 OBServer 链路的正确性,增强传输协议以支持 Oracle 兼容性的数据类型和交互模型
- 易运维
ODP 本身无状态支持无限水平扩展,支持同时访问多个 OceanBase 集群。可以通过丰富的内部命令实现对自身状态的实时监控,提供极大的运维便利性