OceanBase 系统架构
1. 核心架构特点
- Shared Nothing架构:分布式部署,无中心节点
- 硬件要求:通用服务器+本地存储,无特殊硬件依赖
- 进程模型:单进程
observer
运行实例 - 数据存储:
- 本地文件存储数据及Redo日志
- 多副本存储(跨可用区)
- 副本间通过共识协议保持一致性
2. 集群部署架构
graph TD
Cluster[集群] --> Zone1[可用区1]
Cluster --> Zone2[可用区2]
Cluster --> ZoneN[可用区N]
Zone1 --> Server1[服务器]
Zone1 --> Server2[服务器]
Zone2 --> Server3[服务器]
ZoneN --> ServerN[服务器]
Server1 --> Observer[observer进程]
Server2 --> Observer
Server3 --> Observer
ServerN --> Observer
3. 核心组件分层
层级 | 功能 | 关键技术 |
---|---|---|
存储层 | 数据存储与访问 | Tablet/SSTable分层存储 |
复制层 | 多副本一致性 | 自研Paxos协议 |
事务层 | ACID保证 | 两阶段提交/GTS时钟 |
SQL层 | SQL处理 | 分布式执行计划 |
接入层 | 请求路由 | obproxy智能路由 |
4. 存储层结构
graph LR
Tablet --> MemTable[内存表]
MemTable --转储--> L0[L0 SSTable]
L0 --合并--> L1[L1 SSTable]
L1 --每日合并--> Major[Major SSTable]
Major --编码压缩--> Column[列式编码]
Column --> Dict[字典编码]
Column --> RLE[游程编码]
Column --> Delta[差值编码]
Column --> General[通用压缩算法]
5. 复制层机制
sequenceDiagram
participant Client
participant Leader
participant Follower1
participant Follower2
Client->>Leader: DML操作
Leader->>Leader: 持久化Redo日志
Leader->>Follower1: 同步日志
Leader->>Follower2: 同步日志
Follower1-->>Leader: ACK
Follower2-->>Leader: ACK
Leader->>Client: 确认提交
6. 事务处理流程
graph TD
Start[事务开始] --> DML[DML操作]
DML -->|单分区| WAL[Write-Ahead Log]
DML -->|多分区| 2PC[两阶段提交]
2PC --> Coordinator[协调者选举]
Coordinator --> Prepare[Prepare阶段]
Prepare --> Commit[Commit阶段]
Commit --> GTS[获取GTS时间戳]
GTS --> MVCC[多版本控制]
7. SQL处理流程
graph LR
SQL[SQL请求] --> Parser[词法/语法解析]
Parser --> Resolver[语义解析]
Resolver --> Transformer[逻辑改写]
Transformer --> Optimizer[优化器]
Optimizer --> CodeGen[代码生成]
CodeGen --> Executor[执行器]
Executor -->|缓存| PlanCache[执行计划缓存]
Executor -->|并行| Parallel[并行执行]
8. 关键特性
-
多租户:
- 独立数据库实例
- 资源隔离(CPU/Memory/IO)
- 独立部署策略配置
-
高可用:
- 自动故障转移(租约机制)
- 多数派持久化保证
- 无缝扩容/缩容
-
扩展性:
- 自动负载均衡
- 在线水平扩展
- 智能分区管理
这个图表系统展示了:
- 分布式架构设计
- 分层组件协作
- 核心处理流程
- 关键技术创新点
- 高可用保障机制