oceanbase的分布式架构是如何实现高可用与线性扩展的

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)架构以及在线扩缩容等关键技术实现了高可用和线性扩展。

  1. 多副本机制:OceanBase 采用多副本机制,数据会被复制到多个节点上,确保即使某个节点发生故障,系统仍然可以继续提供服务,保证了高可用性。

  2. Paxos 一致性协议:通过 Paxos 协议,OceanBase 保证了数据的一致性。Paxos 协议确保了即使在网络分区的情况下,数据仍然能够保持强一致性。

  3. 无共享(Shared-Nothing)架构:OceanBase 采用 Shared-Nothing 架构,每个节点都是独立的,没有共享的存储资源。这种架构避免了单点故障,提高了系统的可靠性和扩展性。

  4. 在线扩缩容:OceanBase 提供了灵活的在线扩缩容能力。在集群持续可用的前提下,可以通过增加或减少节点来动态调整系统的负载能力,从而实现线性扩展。

与传统分库分表方案的本质区别在于:

  • 透明性:传统分库分表方案需要应用层手动管理和路由数据,而 OceanBase 通过分布式架构实现了透明的水平扩展,应用层无需关心数据的分布和管理。

  • 一致性:传统分库分表方案难以保证数据的一致性,尤其是在分布式事务场景下。OceanBase 通过 Paxos 协议和多副本机制,确保了数据的强一致性。

  • 高可用:传统分库分表方案在单个节点故障时,可能会影响整个系统的可用性。而 OceanBase 通过多副本和 Paxos 协议,确保了系统的高可用性。

检索到的文档如下:

  1. 高可用架构概述
  2. 集群级别的扩容和缩容
  3. OceanBase 集群高可用部署方案简介
  4. 分布式数据库对象概述
  5. OceanBase 概述
  6. OceanBase 数据库概述

OceanBase 实现高可用与线性扩展的核心在于其分布式架构的设计。

高可用实现

  1. 多副本架构:OceanBase 采用基于无共享(Shared-Nothing)的多副本架构,确保系统中没有单点故障。每个数据分片(Tablet)会有多个副本,分布在不同的机器上。
  2. Paxos 一致性协议:同一日志流的多个副本通过 Paxos 一致性协议保证数据的一致性。其中一个副本为主副本(Leader),负责强一致性的读写操作,其他副本为从副本(Follower),提供弱一致性读能力。
  3. 高可用部署方案:支持单机房、同城多机房、两地三中心、三地五中心等多种高可用部署方案。在发生机器或机房故障时,集群内部多副本可以自动切换,确保数据不丢失。
  4. 租户级主备:自 4.1.0 版本起,物理备库的产品形态变更为租户级主备,进一步提升了高可用性。

线性扩展实现

  1. 水平扩展:OceanBase 支持透明的水平扩展,可以在不停机的情况下动态增加或减少集群节点。通过分区表技术,实现数据的水平拆分,无需分库分表。
  2. 高性能处理:通过准内存处理架构实现高性能,支持集群节点超过数千个,单集群最大数据量超过 3PB,最大单表行数达万亿级。
  3. 数据均衡:数据分片(Tablet)是最小的数据均衡单位,支持在机器之间迁移,确保数据在集群中的均匀分布。

与传统分库分表方案的本质区别

  1. 透明性:OceanBase 的水平扩展对业务透明,业务无需关心数据如何分片和分布,SQL 和事务对业务完全透明。
  2. 强一致性:通过 Paxos 一致性协议,确保数据在多个副本之间的一致性,避免了传统分库分表方案中可能出现的一致性问题。
  3. 高可用性:多副本架构和自动故障切换机制使得 OceanBase 在机器或机房故障时仍能保持高可用,而传统分库分表方案通常需要手动干预。
  4. 灵活扩展:OceanBase 支持在线动态扩缩容,而传统分库分表方案在扩展时往往需要复杂的迁移和重新配置。

详情请参考:

  1. OceanBase 数据库概述
  2. 部署生产环境
  3. 集群级别的扩容和缩容
  4. 分布式数据库对象概述
  5. OceanBase 概述