[OceanBase] 架构设计

本文深入探讨了OceanBase的产生背景、架构设计及其如何通过单台更新服务器集中写操作,以及分布式存储系统与关系数据库的融合,实现高效、可扩展的跨行跨表事务支持。

最近花了点时间研究了下OceanBase,非常有意思,写点东西记录一下学到的东西。

参考文档:https://github.com/alibaba/oceanbase/wiki/OceanBase%E6%9E%B6%E6%9E%84%E4%BB%8B%E7%BB%8D

OceanBase的产生背景

OceanBase最初是为了解决淘宝网的大规模数据而产生的(数百亿条的记录、数十TB的数据、数万TPS、数十万QPS),传统的如Oracle单机数据库肯定无法支撑(加再多硬件也不行,RAC的可扩展性太差),于是乎,有段时间,淘宝就开始用MySQL取代Oracle,然后就是疯狂分库(通常的做法是根据某个业务字段,通常取用户编号,哈希后取模,根据取模的结果将数据分布到不同的数据库服务器上,客户端请求通过数据库中间层路由到不同的数据库服务器上),这种方式有如下弊端:

1)添加节点比较复杂,往往需要人工介入;

2)有些范围查询需要访问几乎所有的分区数据库,性能变的更差;

接着Hadoop如火如荼,于是这些技术人员又在考虑是否可以使用HBase,但HBase有个致命缺陷:只能支持单行事务(HBase的体系架构可参考我的另一篇博文:http://blog.youkuaiyun.com/u010415792/article/details/8902746,因为写在HBase里是针对某个HRegion,而HRegion是分布在各个结点中,所以至多只能保证单行事务的原子性),而淘宝的业务必须支持跨行跨表事务。

因此,需要开发出一个新的数据库,即有良好的可扩展性,又能支持跨行跨表事务,于是OceanBase应运而生!

OceanBase的架构设计



通过分析发现,虽然淘宝在线业务的数据量十分庞大,但最近一段时间(例如一天)的修改量往往不多,因此,OceanBase决定采用单台更新服务器来记录最近一段时间的修改增量,而以前的数据保持不变,称为基准数据。基准数据以类似分布式文件系统的方式存储于多台基准数据服务器中,每次查询都需要把基准数据和增量数据融合后返回给客户端。这样,写事务都集中在单台更新服务器上,避免了复杂的分布式事务,高效地实现了跨行跨表事务;另外,更新服务器上的修改增量能够定期分发到多台基准数据服务器中,避免成为瓶颈,实现了良好的扩展性。

  • RootServer:(存放元数据)管理集群中的服务器,tablat数据分布及副本管理。
  • UpdateServer:存储增量更新数据,往往和RootServer公用一台物理服务器。
  • ChunkServer:存储基准数据,基准数据有多个副本(类似Hadoop)
  • MergeServer:接受客户端请求,合并UpdataServer和ChunkServer的数据返回给客户端,并定期把UpdateServer上的数据合并到ChunkServer上。

架构分析

从上面可以看出,OceanBase融合了分布式存储系统和关系数据库这两种技术。通过分布式存储技术将基准数据分布到多台ChunkServer,实现数据复制、负载均衡、服务器故障检测与自动容错,等等;UpdateServer相当于一个高性能的内存数据库,底层采用关系数据库技术实现。OceanBase相当于GFS + MemSQL,ChunkServer的实现类似GFS,UpdateServer的实现类似MemSQL,目标是成为可扩展的、支持每秒百万级跨行跨表事务操作的分布式数据库。

OceanBase最大的亮点在于把写集中到一个单点UpdateServer,这样的好处是可以让一致性和可用性兼得,实现跨行跨表事务,坏处是UpdateServer单点性能有可能成为瓶颈,因此它的配置要非常非高(大内存+SSD+存储Cache)。

### OceanBase 架构设计原理及组件组成 OceanBase 是一款面向大规模分布式环境设计的高性能关系型数据库,其架构设计遵循分布式优先、强一致性、高可用性与线性扩展等核心原则[^1]。其底层采用 Paxos 协议实现多副本一致性,确保在节点故障或网络分区的情况下仍能保持服务连续性和数据一致性。这种设计摒弃了传统主备架构中“主从”被动同步的模式,转而采用多主平等架构,任何副本理论上都可成为 Leader,通过分布式协议自动完成选举和一致性保障[^2]。 OceanBase 的系统架构由多个核心组件构成,各组件职责明确、协同工作: - **OBServer(OceanBase Server)**:是 OceanBase 的核心组件,负责 SQL 处理、事务管理和数据存储。其内部采用多层架构设计,包括 SQL 引擎、事务引擎、存储引擎、分区服务、网络层等多个模块,支持高并发查询与复杂事务处理[^3]。 - **RootServer**:负责集群元数据管理,包括数据分区的位置信息、副本状态、负载均衡策略等。它作为整个系统的控制中枢,协调数据分布与副本调度。 - **UpdateServer**:专门负责事务日志的写入与提交,是 OceanBase 实现高并发写入能力的关键模块,支持事务的持久化和一致性保障。 - **MergeServer**:用于合并多个 OBServer 上的查询结果,尤其适用于复杂查询或聚合操作,提升查询效率。 OceanBase 支持水平扩展,用户可以通过增加 OBServer 节点来线性提升系统的吞吐能力和存储容量。每个 OBServer 可承载多个数据分区副本,系统通过 Paxos 协议实现副本间的一致性与故障自动切换,从而保障高可用性[^1]。 在数据分布方面,OceanBase 支持分区表机制,用户可根据业务需求选择按时间、哈希或范围进行分区,实现数据的高效分布与负载均衡。此外,OceanBase 还支持多租户机制,允许在同一个集群中为不同业务系统分配独立的资源池,实现资源隔离与共享并存的灵活部署[^1]。 以下是一个典型的 OceanBase 分布式部署结构示意: ```text +-----------------------------+ | MergeServer | +-----------------------------+ | +-----------------+ | | +----------------+ +----------------+ | OBServer A | | OBServer B | | Partition P1 | | Partition P2 | | Replica 1 | | Replica 1 | +----------------+ +----------------+ | +-----------------+ | | +----------------+ +----------------+ | RootServer | | UpdateServer | +----------------+ +----------------+ ``` 该架构设计使得 OceanBase 能够在金融级场景中实现高并发、低延迟、强一致性和高可用性的统一,广泛应用于交易、支付、风控等关键业务系统。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值