---
title: github-fill
description: 数据链路介绍 OceanBase 数据库作为一款分布式数据库，数据天然分布于多个节点上。为了屏蔽分布式数据库给应用程序带来的复杂性，使得应用程序访问 OceanBase 数据库像访问单机数据库一样简单，从架构上引入了 ODP，全称是 OceanBase 数据库代理（OceanBase Database Proxy，又…
---
切换语言

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

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

# 数据链路介绍

更新时间：2024-04-24 14:53:01

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.2.3/zh-CN/600.manage/400.high-availability/200.multi-replica-disaster-recovery/100.data-link-introduction.md)  

OceanBase 数据库作为一款分布式数据库，数据天然分布于多个节点上。为了屏蔽分布式数据库给应用程序带来的复杂性，使得应用程序访问 OceanBase 数据库像访问单机数据库一样简单，从架构上引入了 ODP，全称是 OceanBase 数据库代理（OceanBase Database Proxy，又称为 OBProxy），ODP 是 OceanBase 专用的反向服务代理，以解决 OceanBase 数据库的 SQL 路由和 容灾问题。

![数据链路图1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/manage/odp-data-link1.jpg)

ODP 作为数据链路上的核心组件，存在多种部署形态：

- OBServer 端部署：ODP 与 OBServer 部署于同一台机器上，当压力大时可能存在资源竞争，排查问题比较困难。常见于私有云场景。
 - ODP 独立部署：ODP 作为独立集群部署，减少了 ODP 与 OBServer 的相互影响。常见于公有云场景。
 - 客户端部署：在 APPServer 容器旁再运行一个容器运行 ODP，两者位于同一个 Pod 中，可进行独立升级、发布、运维等。该部署形态对控制面要求较高，实际使用较少。

前两种部署形态，APPServer 访问 ODP 需要经过一层负载均衡组件，负载均衡组件负责 ODP 的高可用和负载均衡。例如 F5 将请求分散到多台 ODP 上。

在产品形态上，ODP 除了代理形态，还有 SDK 形态。SDK 形态以库形式集成到业务代码中，相比代理模式，访问链路上少一跳，性能更好，排查问题链路更短。但存在与业务代码耦合度更高，互相影响，且 ODP SDK 升级时需要业务重启等缺点。

引入 ODP 后，OceanBase 的数据链路为 APPServer <-> OBProxy <-> OBServer。APPServer 通过数据库驱动连接 ODP 发送请求，由于 OceanBase 数据库的分布式架构，用户数据以多日志流多副本的方式分布于多个 OBServer 上，ODP 将用户请求转发到最合适的 OBServer 上执行，并将执行结果返回用户。每个 OBServer 也有路由转发的功能，如果发现请求不能在当前节点执行，则会转发请求到正确的 OBServer，该场景需要进行一次远程执行，对请求的 RT（Response Time） 会有一定影响。

![数据链路图2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/manage/odp-data-link2.jpg)

ODP 是 OceanBase 数据库的反向代理层，提供了从用户端到数据库端的路由选择和容灾功能，屏蔽应用程序对分布式数据库的感知。OBServer 包含完整的 SQL 引擎、存储引擎和分布式事务引擎，负责解析 SQL 生成物理执行计划并执行，及事务提交时通过 Paxos 协议达成多数派提交，提供高性能、高可用、高扩展的数据库服务。ODP 和 OBServer 采用松耦合的方式，允许 ODP 上的路由信息更新不及时导致错误的路由选择，OBServer 内部会再转发一次，返回结果时通知 ODP 更新路由信息。

如上所述，应用层将用户请求发送到代理服务 ODP，经过 ODP 的路由后，发送到实际服务数据的数据库节点 OBServer，执行结果沿着反向路径返回给应用层。整个链路中的组件通过不同的方式来达到高可用能力。

## 相关文档

更多数据链路相关的信息，请参见 [数据链路概述](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000749538)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
