OceanBase
2016-02-03 16:28:23 11 举报
AI智能生成
OceanBase是一款高性能、高可用、可扩展的关系型数据库管理系统,由阿里巴巴集团自主研发。它基于分布式架构,支持海量数据的存储和处理,具有高并发、低延迟、高可扩展性等特点。OceanBase广泛应用于金融、电信、互联网等行业,为企业提供了稳定可靠的数据存储和处理解决方案。
作者其他创作
大纲/内容
OceanBase 架构初探
设计思路
常见做法
水平拆分
添加机器需人工介入
范围查询需访问所有分区
针对机械硬盘无法优化SSD
大表化子表
子表之间有序解决范围查询
无法支持事务
系统架构
整体架构
RootServer
管理所有子服务器
管理子表数据分布
管理副本(主备模型)
UpdateServer
增量更新数据
ChunkServer
基线数据(多份)
MergeServer
解析SQL、查询优化
查询结果合并
客户端
MySQL 客户端
Java 客户端
C 客户端
RootServer
集群管理
UpdateServer
每时只有一个提供写
强一致性
MergeServer
心跳
ChunkServer
心跳
数据分布
主键分割为子表
副本管理
MergeServer
协议解析
SQL 解析
请求转发
结果合并
多表操作
ChunkServer
存储子表
提供读取服务
定期合并
低锋期
数据分发
UpdateServer
唯一提供写服务
架构剖析
一致性选择
数据结构
可靠性与可用性
多个副本
可同时提供服务
读写事务
单点性能
内存
网络
磁盘
SSD 支持
数据正确性
数据存储校验
数据传输校验
数据镜像校验
数据副本校验
分层结构
分布式存储引擎
公共模块
内存管理
全局定长内存池
>64KB
Glibc 分配
<64KB
模块内部还有内存池
基础数据结构
哈希表(hash索引)
链式冲突
与普通Hash不同
位锁
延迟初始化
B树
写时复制B树
锁
共享锁
互斥锁
任务队列
锁冲突问题
每个工作线程分配一个任务队列
线程轮寻在任务队列上
网络框架
全局任务队列
客户端
同步请求
异步请求
压缩与解压缩
插件化
动态链接库实现.so
RootServer 实现机制
数据结构
子表复制与负载均衡
子表分裂与合并
UpdateServer 选主
RootServer 主备
UpdateServer 实现机制
存储引擎
操作日志
MemTable
B树索引(支持Hash)
内存优化
SSTable
任务模型
Tbnet(生产者消费者模型)
Libeasy(收发小数据包)
多线程收发数据包
(短任务)收到立即处理减少上下文切换
网络读写线程(Linux epoll)
(长任务)放入队列
长任务处理线程(线程池)
线程之间负载均衡问题
套接字转移
主备同步
主 UpdateServer
日志缓冲区(内存)
日志文件(磁盘)
备 UpdateServer
日志回放线程
日志缓冲区(队列)
日志文件
ChunkServer 实现机制
子表管理
SSTable
缓存实现
底层实现
访问次数、最近频繁访问时间
惊群效应
增加 flag,线程检测 flag
缓存预热
IO 实现
Libaio 实现异步 IO
双缓冲区
定期合并 & 数据分发
定期合并限速
消除更新瓶颈
读写优化回顾
网络框架优化
多块网卡负载均衡
高性能内存数据结构
B树(尽量无锁)
写操作日志优化
成组提交
降低日志缓冲区锁冲突
先占位后并行拷贝
日志文件并发写入
内存容量优化
数据旁路导入
数据分区
数据库功能
0 条评论
下一页