OceanBase 采用的是无共享(Shared-Nothing)架构,请解释这种架构在分布式数据库中的优势,并说明 OceanBase 是如何通过该架构实现高可用和水平扩展的?

OceanBase 采用的是无共享(Shared-Nothing)架构,请解释这种架构在分布式数据库中的优势,并说明 OceanBase 是如何通过该架构实现高可用和水平扩展的?

蹲一个答案

OceanBase 采用的 Shared-Nothing 架构优势及实现高可用与水平扩展的方式

  1. Shared-Nothing 架构的核心优势

无单点故障与高可用性

每个节点完全独立,计算、存储和事务引擎均分布于不同节点,消除单点故障风险。通过跨可用区(Zone)部署多副本(默认3副本),即使某个节点或整个机房故障,其他副本仍可接管服务,实现 RPO=0 和 RTO<8秒

线性扩展能力

节点间资源完全独立,可通过增加节点水平扩展计算和存储资源。数据通过哈希(Hash)、范围(Range)等规则拆分到多个分区(Partition),分区可动态迁移至新节点,实现负载均衡和容量弹性扩展

资源隔离与高性能

每个节点独立管理资源(CPU、内存、IO),多租户间资源相互隔离,避免相互干扰。分布式 SQL 引擎支持并行执行查询,结合本地存储减少网络开销,实现接近内存数据库的性能

低成本与灵活性

基于普通 PC 服务器部署,无需专用硬件,存储成本仅为 Oracle 的 1/10。支持按需扩展,仅在需要时增加节点,降低整体拥有成本

  1. 高可用的实现机制

多副本与 Paxos 协议

数据分片后,每个分片(Tablet)的多个副本(默认3副本)分布于不同可用区。通过 Paxos 协议保证副本间强一致性,确保故障时快速切换且数据零丢失

跨可用区部署策略

支持单机房、双机房、两地三中心或多地区部署。例如,三副本分别存放在三个不同 Zone,即使一个 Zone 故障,剩余副本仍能提供服务,实现机房级或城市级容灾

  1. 水平扩展的实现机制

数据分片与动态均衡

数据按规则拆分为多个分区,每个分区可分布到不同节点。新增节点后,系统自动将分区迁移至新节点,均衡负载。租户可按需在线扩容,无需停机

分布式引擎与弹性架构

存储层(Tablet)和计算层(SQL 引擎)解耦,支持独立扩展。例如,增加计算节点可提升查询性能,增加存储节点可扩展容量。多租户架构允许每个租户独立设置分布式策略