---
title: "代理概述 - OceanBase 数据库 V4.2.3 | OceanBase 文档中心"
description: 代理概述 OceanBase Database Proxy（简称 ODP ）是 OceanBase 数据库专用的代理服务器。OceanBase 数据库的用户数据以多副本的形式存放在各个 OBServer 节点上，ODP 接收用户发出的 SQL 请求，并将 SQL 请求转发至最佳目标 OBServer，最后将执行结果返…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.2.3

# 代理概述

更新时间：2024-12-18 17:42:40

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.3/zh-CN/700.reference/100.oceanbase-database-concepts/600.data-link/200.database-proxy/100.agent-overview.md)  

OceanBase Database Proxy（简称 ODP ）是 OceanBase 数据库专用的代理服务器。OceanBase 数据库的用户数据以多副本的形式存放在各个 OBServer 节点上，ODP 接收用户发出的 SQL 请求，并将 SQL 请求转发至最佳目标 OBServer，最后将执行结果返回给用户。

## 为什么需要 ODP？

ODP 是代理服务器，代理服务器会让访问数据库的链路多一次跳转，那为什么需要 ODP 呢？我们以下图为例进行说明。

![odp-agent.png](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/700.reference/100.oceanbase-database-concepts/600.data-link/200.database-proxy/100.agent-overview/odp-agent.png)

图中 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 许可证，您可以免费复制和使用源代码。当您修改或分发源代码时，请遵守木兰协议。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
