OceanBase数据库代理ODP(OceanBase Database Proxy,又称OBProxy)是OceanBase数据库的接入层,负责将用户的请求转发到合适的OceanBase数据库实例上进行处理。ODP是独立的进程实例,独立于OceanBase数据库实例部署。ODP监听网络端口,兼容MySQL网络协议,支持使用MySQL驱动的应用直接连接OceanBase数据库。ODP能够自动发现OceanBase集群的租户及数据分布信息,对于代理的每一条SQL语句,能尽可能识别出该语句将要访问的数据,并将该语句直接转发到数据所在服务器的OceanBase数据库实例。
视频讲解如下 |
---|
【赵渝强老师】OceanBase OBServer节点的接入层 |
客户端通过ODP访问OceanBase数据库的数据链路如下图所示。
作为OceanBase数据库的关键组件,ODP具有以下特性:
- 连接管理
针对一个客户端的物理连接,ODP维持自身到后端多个OBServer节点的连接,并维持了每个OBServer节点连接的会话状态,保证了客户端高效访问各个OBServer节点。
- 最佳路由
ODP充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase多地部署的最优链路,以及OceanBase各机器的状态及负载情况,将用户的请求路由到最佳的OBServer节点,最大程度地保证了OceanBase整体的高性能运转。
- 高性能转发
ODP完整兼容MySQL协议,并支持OceanBase自研协议,采用多线程异步框架和透明流式转发的设计,保证了数据的高性能转发,同时确保了自身对机器资源的最小消耗。
- 易运维
ODP本身无状态,支持无限水平扩展,支持同时访问多个OceanBase集群。可通过丰富的内部命令对ODP状态进行实时监控,这使得运维简单便利。
- 高可用
ODP高可用分为两部分:一方面保证自身高可用,持续提供代理服务;另一方面ODP是OceanBase高可用体系的主要组成部分,可以对用户屏蔽宕机、升级等情况,保证OceanBase数据库服务的稳定和快速恢复 。
- 专有协议
ODP与OBServer节点默认采用了OceanBase专有协议,如增加报文的CRC校验保证与OBServer节点链路的正确性,增强传输协议以支持Oracle兼容性的数据类型和交互模型。