OceanBase架构解析(一)

OceanBase架构解析(一)

一下内容来自一份PPT,只是大概介绍了OceanBase功能和突出的架构,没有详细的细节实现,有待后续继续学习和分析。

介绍

OceanBase是阿里巴巴、蚂蚁金服自主研发的通用关系型数据库;
它基于分布式架构和普通PC服务器、实现了金融级可靠性及数据一致性;
它具备持续可用、线性扩展、低成本、高性能等核心技术优势。
在这里插入图片描述
分布式数据库解决了线性扩展问题
基于普通PC机,系统成本低
原生分布式查询支持
支持分布式事务,确保全局一致性
灵活的部署方式和负载均衡能力

基本架构

在这里插入图片描述多副本:OceanBase一般部署为三个Zone,每个Zone由多个节点/服务器(OBServer)组成

全对等节点:每个节点均有自己的SQL引擎和存储引擎,各自管理不同的数据分区,完全对等

无共享:OceanBase数据分布在各个节点上,不基于任何共享存储结构
在这里插入图片描述
数据分区:OceanBase数据架构的基本单元,是传统数据库的分区表在分布式系统上的实现。
高可用+强一致:多副本+Paxos协议,保证数据(日志)写(持久化)到三台机器中至少两台 (每个Zone中基线数据分布在ChunkSever上,有两个或三个副本,增量数据在UpdateSever上是一主一备)

Q1:不同Zone里存储的数据是完全相同的吗?Paxos协议具体怎么实现的?
在这里插入图片描述ObProxy:百万级处理能力的代理,路由转发,轻量级SQLParser,无状态
•反向代理功能
•性能需求
•运维需求
Q1:ObProxy的详细作用?

核心特性

可扩展
•水平扩展 •按需在线扩容,缩容,不停服务 •单集群突破100台服务器
高性能
•25.6万笔/秒交易支付•写入性能超百万TPS•单表最大3200亿条记录
高可用
•基于Paxos协议,强一致性 •单机故障,数据不丢,服务不停 •RPO=0; RTO<30s
多租户
•DBaas架构 •资源隔离 •自动负载均衡
兼容性
•MySQL全兼容 •部分Oracle兼容功能 •业务零成本迁移

OceanBase存储引擎

一、面向内存的设计
在这里插入图片描述1、读写分离的架构(写是在updateServer里,读的话先读updateServer,没有的话再读chunkServer)
准内存处理性能
消除磁盘随机写
全量数据 = 基线数据 + 增量数据ü避免写入放大
2、高效存储引擎:
缓存:基线数据不修改,缓存效率高
合并:内存数据落盘

二、存储成本低
MySQL vs. OceanBase
•相同主板、相同CPU、相同内存、相同网卡
•MySQL:不仅有大量随机读盘,还有大量随机写盘,必须使用高端读写型SSD,成本大幅度增加
•OceanBase:没有随机写盘,读时不写、写时不读,使用普通读密集型SSD,成本低

三、高数据压缩率
在这里插入图片描述
传统数据库:实时数据压缩
•压缩率低 •可用CPU少
•OceanBase:离线数据压缩
•压缩率高 •可用CPU多
•支付宝某业务从Oracle迁移到OceanBase,数据由100TB压缩到33TB

OceanBase事务引擎

ACID的实现
1、原子性(A)
使用两阶段提交,保证跨机事务的原子性
在这里插入图片描述难点:
依赖两阶段提交协议保证事务原子性
两阶段提交:状态多、复杂、状态机容易卡住

OceanBase两阶段提交协议特点:
所有参与者都是高可用的
协调者不写日志,无持久化状态
Commit操作延时低(所有参与者都prepare成功即认为事务进入提交状态,立即返回客户端commit)
全自动处理异常情况

2、一致性(C)
保证主键唯一等一致性约束

3、隔离性(I)
采用MVCC进行并发控制,实现read-committed的隔离级别

•采用多版本并发控制(MVCC)+ 两阶段锁,实现Read-Committed隔离级
•写- 写并发 ü所有修改的行加互斥锁,实现写- 写互斥
•读- 写并发 ü读操作读取特定快照版本的数据ü大部分场景,读写互不阻塞

4、持久性(D)
事务日志使用Paxos协议做多副本同步

OceanBase SQL引擎

•兼容MySQL 5.6语法
•业务零成本迁移
•社区回馈(200+ bugs)
•部分Oracle兼容功能
•Explain、hint •Analyticfunction(窗口函数)
•外连接语法
•二级分区
•层次查询
•部分特色功能/限制
•弱一致性读
•Outline使用
•回收站
在这里插入图片描述•基于规则的优化器

•基于代价的优化器
每日合并时自动收集、更新统计信息
考虑行长、行数、列NDV、列极值

•执行计划缓存:
优化一条SQL的代价从几毫秒到几秒不等
执行计划缓存为每条SQL保存了优化后的执行计划,避免了重复执行时的查询优化过程

部署方式

•分布式集群,由多台Server组成
•应用双机房/三机房部署
•交叉部署,2/3或3/5的数据库服务器用于服务
•正常情况下只访问本机房的ObServer
•数据库单机故障影响极小
•机房级故障短暂的增加异地同步延迟
•需要避免跨可用区的分布式事务
(Q3:跨可用区的分布式事务是?)

--------------------------------------------分割线----------------------------------------------
以上只是大概介绍了OceanBase的功能,但是没有具体实现细节,还需要后面继续学习。

发布了19 篇原创文章 · 获赞 2 · 访问量 1245

猜你喜欢

转载自blog.csdn.net/weixin_38377637/article/details/99971352