Skip to content

OceanBase 整体架构设计

架构分层

OceanBase采用完全分布式架构设计,基于云原生理念构建,具备高可用性、强一致性、水平扩展性和多租户支持等特性。整体架构分为三层:

  1. 接入层:处理客户端连接和请求路由
  2. 计算层:执行SQL解析、优化和执行
  3. 存储层:负责数据存储和管理

核心组件

OBServer

OBServer是OceanBase的核心节点,每个OBServer节点包含以下主要模块:

SQL引擎

  • SQL解析器:将SQL语句解析为抽象语法树(AST)
  • 查询优化器:基于代价模型选择最优执行计划
  • 执行器:执行SQL查询计划,调用存储引擎获取数据
  • 事务管理器:处理分布式事务,确保ACID特性

存储引擎

  • MemTable:内存中的数据结构,用于快速写入和查询
  • SSTable:磁盘上的有序数据文件,采用LSM-Tree结构
  • Compaction:合并MemTable和SSTable,优化查询性能
  • Checkpoint:将内存数据持久化到磁盘,确保数据安全性

事务引擎

  • 分布式事务管理器:协调多个节点的事务执行
  • Paxos协议实现:确保多副本数据一致性
  • MVCC:多版本并发控制,提高并发处理能力

RootService

RootService是OceanBase的集群管理组件,负责:

  • 集群元数据管理:存储和管理集群的元数据信息
  • 节点管理:处理节点的添加、删除和状态监控
  • 负载均衡:确保各节点资源利用率均衡
  • 故障检测与恢复:检测节点故障并触发自动恢复
  • 资源管理:管理租户资源和资源池

UpdateServer

UpdateServer是OceanBase早期版本的组件,负责:

  • Redo Log管理:存储和管理全局Redo Log
  • 数据同步:确保各节点数据一致性
  • Checkpoint协调:协调各节点的Checkpoint操作

注意:在OceanBase 4.0及以上版本中,UpdateServer的功能已被整合到OBServer节点中,不再作为独立组件存在。

MergeServer

MergeServer是OceanBase的查询合并组件,负责:

  • 分布式查询合并:合并多个节点的查询结果
  • 数据路由:将查询请求路由到正确的节点
  • 结果处理:对合并后的结果进行处理和返回

注意:在OceanBase 4.0及以上版本中,MergeServer的功能已被整合到OBServer节点中,不再作为独立组件存在。

OBProxy

OBProxy是OceanBase的客户端代理组件,负责:

  • 客户端连接管理:处理客户端的连接请求
  • 请求路由:将SQL请求路由到合适的OBServer节点
  • 负载均衡:在多个OBServer节点间均衡请求负载
  • 故障切换:当节点故障时,自动切换到可用节点
  • 协议转换:支持MySQL和Oracle协议

数据分布与复制

分区机制

OceanBase采用分区技术将数据分布到多个节点:

  • 范围分区:按照指定字段的范围值进行分区
  • 哈希分区:基于字段的哈希值进行分区
  • 列表分区:按照指定的值列表进行分区
  • 复合分区:结合多种分区策略

副本管理

  • 多副本设计:默认三副本,支持五副本等更高冗余配置
  • Paxos协议:确保副本间数据一致性
  • 副本分布策略:跨可用区、跨地域分布,提高容灾能力
  • 副本角色:主副本、备副本、日志副本等不同角色

数据流向

  1. 写入流程

    • 客户端发送写入请求到OBProxy
    • OBProxy将请求路由到主副本所在的OBServer
    • 主副本写入MemTable并生成Redo Log
    • 主副本通过Paxos协议将Redo Log同步到备副本
    • 备副本应用Redo Log,更新本地数据
    • 主副本返回写入结果给客户端
  2. 查询流程

    • 客户端发送查询请求到OBProxy
    • OBProxy将请求路由到合适的OBServer节点
    • OBServer解析SQL并生成执行计划
    • 执行计划分发到各个数据节点
    • 各节点执行查询并返回结果
    • OBServer合并结果并返回给客户端

多租户架构

租户隔离

OceanBase实现了严格的租户隔离机制:

  • 资源隔离:CPU、内存、存储等资源的精细化隔离
  • 安全隔离:租户间数据完全隔离,无法相互访问
  • 网络隔离:租户间网络流量隔离
  • 配置隔离:租户可独立配置参数

租户资源管理

  • 资源池:为租户分配资源的基本单位
  • 资源规格:定义租户的资源配额
  • 资源弹性调整:支持动态调整租户资源
  • 资源监控:实时监控租户资源使用情况

高可用设计

故障检测

  • 心跳机制:节点间定期发送心跳消息
  • 超时检测:检测节点超时情况
  • 状态监控:监控节点CPU、内存、磁盘等资源状态

自动故障转移

  • 主备切换:当主副本故障时,自动选举新的主副本
  • 数据恢复:故障节点恢复后,自动同步数据
  • 服务恢复:恢复节点的服务,确保业务连续性

容灾设计

  • 跨可用区部署:将副本分布到不同可用区
  • 跨地域部署:支持跨地域的数据同步和容灾
  • 多活架构:支持多地域同时提供服务

云原生支持

容器化部署

  • Docker支持:提供官方Docker镜像
  • Kubernetes集成:支持K8s部署和管理
  • Helm Chart:提供Helm Chart简化部署

弹性伸缩

  • 自动扩容:根据资源使用情况自动增加节点
  • 自动缩容:根据资源使用情况自动减少节点
  • 在线伸缩:伸缩过程不影响业务运行

云存储集成

  • 对象存储支持:支持使用S3兼容的对象存储
  • 云盘支持:支持使用云厂商提供的块存储
  • 分层存储:冷热数据分离,降低存储成本

架构演进

架构发展历程

  1. V1.0 - 中心化架构

    • 单节点设计,中心化元数据管理
    • 基本的分布式事务支持
  2. V2.0 - 半分布式架构

    • 引入分布式事务管理
    • 分离计算和存储
    • 支持多副本数据冗余
  3. V3.0 - 完全分布式架构

    • 所有组件分布式设计
    • 强一致性保证
    • 水平扩展性提升
  4. V4.0 - 云原生架构

    • 容器化支持
    • 弹性伸缩
    • 多租户增强
    • 云存储集成

未来发展方向

  • Serverless支持:按需使用,自动扩缩容
  • AI集成:智能优化和自动调优
  • 边缘计算支持:支持边缘部署场景
  • 更广泛的生态集成:与更多云服务和工具集成

架构优势

高可用性

  • 多副本数据冗余
  • 自动故障转移
  • 跨可用区/跨地域部署

强一致性

  • 基于Paxos协议的分布式事务
  • 严格的ACID特性保证
  • 数据一致性验证机制

水平扩展性

  • 无缝水平扩展
  • 自动负载均衡
  • 在线扩容缩容

高性能

  • 分布式并行处理
  • 优化的存储引擎
  • 智能查询优化

成本效益

  • 高资源利用率
  • 支持混合存储
  • 云原生设计降低部署成本

常见问题(FAQ)

Q1: OceanBase的分布式架构与传统集中式数据库有什么区别?

A1: 传统集中式数据库采用单节点设计,所有数据和处理都在一个节点上,存在单点故障和扩展性瓶颈。而OceanBase采用完全分布式架构,数据分布在多个节点上,具备高可用性、强一致性和水平扩展性,能够支撑大规模分布式应用场景。

Q2: OceanBase的Paxos协议实现有什么特点?

A2: OceanBase的Paxos协议实现针对分布式数据库场景进行了优化,具有以下特点:

  1. 高吞吐:优化了Paxos的通信协议,提高了事务处理吞吐量
  2. 低延迟:采用异步复制和批量提交机制,降低了事务提交延迟
  3. 弹性配置:支持不同的副本数配置,适应不同的可用性要求
  4. 分区级Paxos:每个分区独立运行Paxos协议,提高了系统的并行处理能力

Q3: OceanBase的多租户架构如何实现资源隔离?

A3: OceanBase通过资源池机制实现资源隔离,每个租户分配独立的资源池,资源池包含CPU、内存、存储等资源配额。系统通过严格的资源调度和监控,确保租户间资源不相互影响,实现了精细化的资源隔离。

Q4: OceanBase的云原生设计体现在哪些方面?

A4: OceanBase的云原生设计体现在:

  1. 容器化支持:提供Docker镜像和Kubernetes集成
  2. 弹性伸缩:支持在线扩容和缩容
  3. 云存储集成:支持使用对象存储和云盘
  4. 微服务架构:组件化设计,便于独立部署和扩展
  5. 自动化运维:支持自动化部署、监控和故障恢复

Q5: OceanBase的架构如何支持跨地域部署?

A5: OceanBase支持将副本分布到不同地域,通过Paxos协议确保跨地域数据一致性。同时,OceanBase提供了多活架构支持,允许不同地域的节点同时提供服务,提高了系统的可用性和访问速度。跨地域部署可以有效应对地域级故障,提高系统的容灾能力。