oceanbase具备“高可用”和“线性扩展”能力,其底层架构是如何实现的?与传统分库分表方案有何本质区别?
OceanBase 的“高可用”与“线性扩展”能力底层架构实现及与传统分库分表方案的本质区别
一、高可用架构的实现
OceanBase 通过以下核心技术实现了高可用性:
1. 多副本机制与 Paxos 一致性协议
- 多副本架构:OceanBase 将用户数据按日志流和分片(Tablet)组织,每个日志流会在多个节点上创建副本(Replica)。
- Paxos 协议:同一日志流的多个副本构成一个独立的 Paxos 组,其中一个副本为主副本(Leader),其他为从副本(Follower)。主副本负责处理读写请求,从副本仅支持弱一致性读,所有副本通过 Paxos 协议保持数据强一致。
- 无共享架构(Shared-Nothing):节点之间没有共享存储,消除了单点故障风险,提高系统的可靠性和可扩展性。
2. 容灾部署模式多样化
- OceanBase 支持多种高可用部署模式,包括:
- 单机房部署
- 同城多机房部署(双机房)
- 两地三中心
- 三地五中心
- 同时也支持部署仲裁服务来降低成本并提升容灾能力。
3. 故障自动恢复
- 当某个节点发生故障时,系统会自动切换到另一个副本继续提供服务,保障服务的连续性。
- 结合 Observer 节点健康检查机制和 RootServer 的元数据管理,快速定位和隔离故障节点。
二、线性扩展能力的实现
OceanBase 的线性扩展能力主要体现在以下几个方面:
1. 基于 Tablet 的数据分片与负载均衡
- 用户数据被划分为多个 Tablet,每个 Tablet 是数据迁移和均衡的最小单位。
- 当新增节点后,系统会将 Tablet 迁移到新节点,从而实现负载均衡。
2. 在线扩缩容
- 扩缩容不影响业务运行:可在不中断服务的前提下,动态增加或减少 OBServer(数据节点)或 Zone(可用区)。
- Zone 级别扩展:可以通过增减 Zone 来改变集群的容灾能力。
- OBServer 级别扩展:可通过增减 OBServer 来提升或降低集群的计算与存储负载能力。
3. 性能线性增长
- 根据 OceanBase 的 TPC-C 报告,性能随着机器数量增加呈现近似线性增长的趋势。
- 这得益于其分布式架构下任务调度的高效性与资源利用率的优化。
三、与传统分库分表方案的本质区别
OceanBase 与传统分库分表方案在架构和能力上有显著差异,主要体现在以下几个方面:
对比维度 | OceanBase | 传统分库分表 |
---|---|---|
架构透明性 | 应用层无需感知数据分片逻辑,由系统自动完成数据路由与分布 | 应用层需显式管理分片键、分片策略,复杂度高 |
事务一致性 | 支持跨节点的 ACID 事务和全局一致性读写 | 一般只支持本地事务,跨分片事务通常需要额外工具(如 ShardingSphere + 两阶段提交) |
扩展方式 | 在线无缝扩展:加节点即可触发自动负载均衡,整个过程对应用透明 | 扩容需手动重新分片,操作复杂,停机时间长 |
容灾能力 | 多副本+Paxos 协议保障高可用,故障自动切换 | 需要依赖 MySQL 主从复制或其他中间件实现容灾,存在数据丢失风险 |
运维复杂度 | 自动化程度高,OCP 提供统一管理平台 | 需人工维护多个实例配置、监控、备份等,易出错 |
SQL 能力 | 支持完整的分布式 SQL 查询,包括 JOIN、GROUP BY、子查询等复杂操作 | 通常受限于中间件的能力,复杂 SQL 可能无法下推 |
总结来说,OceanBase 作为一个原生分布式数据库,在高可用、线性扩展、一致性事务等方面具有明显优势,适用于对系统稳定性、可扩展性要求较高的金融级场景;而传统分库分表方案更依赖应用层的设计和中间件的支持,适用于中小型应用场景。
OceanBase 的分布式架构通过多副本、Paxos 一致性协议、无共享(Shared-Nothing)架构以及在线扩缩容等关键技术实现了高可用和线性扩展。
-
多副本机制:OceanBase 采用多副本机制,数据会被复制到多个节点上,确保即使某个节点发生故障,系统仍然可以继续提供服务,保证了高可用性。
-
Paxos 一致性协议:通过 Paxos 协议,OceanBase 保证了数据的一致性。Paxos 协议确保了即使在网络分区的情况下,数据仍然能够保持强一致性。
-
无共享(Shared-Nothing)架构:OceanBase 采用 Shared-Nothing 架构,每个节点都是独立的,没有共享的存储资源。这种架构避免了单点故障,提高了系统的可靠性和扩展性。
-
在线扩缩容:OceanBase 提供了灵活的在线扩缩容能力。在集群持续可用的前提下,可以通过增加或减少节点来动态调整系统的负载能力,从而实现线性扩展。
与传统分库分表方案的本质区别在于:
-
透明性:传统分库分表方案需要应用层手动管理和路由数据,而 OceanBase 通过分布式架构实现了透明的水平扩展,应用层无需关心数据的分布和管理。
-
一致性:传统分库分表方案难以保证数据的一致性,尤其是在分布式事务场景下。OceanBase 通过 Paxos 协议和多副本机制,确保了数据的强一致性。
-
高可用:传统分库分表方案在单个节点故障时,可能会影响整个系统的可用性。而 OceanBase 通过多副本和 Paxos 协议,确保了系统的高可用性。
检索到的文档如下:
OceanBase 实现高可用与线性扩展的核心在于其分布式架构的设计。
高可用实现
- 多副本架构:OceanBase 采用基于无共享(Shared-Nothing)的多副本架构,确保系统中没有单点故障。每个数据分片(Tablet)会有多个副本,分布在不同的机器上。
- Paxos 一致性协议:同一日志流的多个副本通过 Paxos 一致性协议保证数据的一致性。其中一个副本为主副本(Leader),负责强一致性的读写操作,其他副本为从副本(Follower),提供弱一致性读能力。
- 高可用部署方案:支持单机房、同城多机房、两地三中心、三地五中心等多种高可用部署方案。在发生机器或机房故障时,集群内部多副本可以自动切换,确保数据不丢失。
- 租户级主备:自 4.1.0 版本起,物理备库的产品形态变更为租户级主备,进一步提升了高可用性。
线性扩展实现
- 水平扩展:OceanBase 支持透明的水平扩展,可以在不停机的情况下动态增加或减少集群节点。通过分区表技术,实现数据的水平拆分,无需分库分表。
- 高性能处理:通过准内存处理架构实现高性能,支持集群节点超过数千个,单集群最大数据量超过 3PB,最大单表行数达万亿级。
- 数据均衡:数据分片(Tablet)是最小的数据均衡单位,支持在机器之间迁移,确保数据在集群中的均匀分布。
与传统分库分表方案的本质区别
- 透明性:OceanBase 的水平扩展对业务透明,业务无需关心数据如何分片和分布,SQL 和事务对业务完全透明。
- 强一致性:通过 Paxos 一致性协议,确保数据在多个副本之间的一致性,避免了传统分库分表方案中可能出现的一致性问题。
- 高可用性:多副本架构和自动故障切换机制使得 OceanBase 在机器或机房故障时仍能保持高可用,而传统分库分表方案通常需要手动干预。
- 灵活扩展:OceanBase 支持在线动态扩缩容,而传统分库分表方案在扩展时往往需要复杂的迁移和重新配置。
详情请参考: