OceanBase
官方介绍
OceanBase是一款阿里巴巴自主研发的高性能、分布式的关系型数据库,支持完整的ACID特性。
它高度兼容MySQL协议与语法,让用户能够以最小的迁移成本使用高性能、可扩展、持续可用的分布式数据库服务,同时对用户数据提供金融级可靠性的保障。
产品定位
- 定位金融领域的数据库
- 目前提供云数据库服务(类似RDS)
发展历程
- 2010 开始设计
- 2011 淘宝收藏夹
- 2015 双11全量
架构 & 设计
设计考虑:
通过分析发现,虽然淘宝在线业务的数据量十分庞大,但最近一段时间(例如一天)的修改量往往不多。
因此,OceanBase决定采用单台更新服务器来记录最近一段时间的修改增量,而以前的数据保持不变,称为基准数据。
基准数据以类似分布式文件系统的方式存储于多台基准数据服务器中,每次查询都需要把基准数据和增量数据融合后返回给客户端。这样,写事务都集中在单台更新服务器上,避免了复杂的分布式事务,高效地实现了跨行跨表事务;
另外,更新服务器上的修改增量能够定期分发到多台基准数据服务器中,避免成为瓶颈,实现了良好的扩展性。
- RootServer:(存放元数据)管理集群中的服务器,tablat数据分布及副本管理。
- UpdateServer:存储增量更新数据,往往和RootServer公用一台物理服务器。(只放在内存)
- ChunkServer:存储基准数据,基准数据有多个副本(类似Hadoop)(SSD存放)
- MergeServer:接受客户端请求,合并UpdataServer和ChunkServer的数据返回给客户端,并定期把UpdateServer上的数据合并到ChunkServer上。
架构图
OB特点与实践经验
- 号称0丢失,认为是去Oracle最为关键的地方
- 多数派写,paxos
- 不可用时间为35秒,及Fail Over时间为35秒
- 成本低于Oracle
- 第一个用于金融业务的非商业数据库
- 金融数据库特点:
- 高可用
- IDC容灾
- 数据强一致
- ACID
- 复杂SQL
- 高性能
- 可扩展
- 可灰度切流
- 去O最佳实践
- 中间件来兼容Oracle的SQL
- 具备类似SQL审核的功能
- 故障模拟器,模拟常见故障,做好预案
- 数据一致性
- 上下业务关联对账
- 小时级别对账 ODPS
- 应急方案:切流到Oracle
- 性能优化
- 业务
- 按需加载,减少SQL
- 热点数据模型优化
- OB
- UPS并发提交
- 链路获取策略
- Memcpy优化
- 响应时间,ms级别
- 双11
- 各种预案
- 各种演练
架构分析
以下都为网络引用
- 从上面可以看出,OceanBase融合了分布式存储系统和关系数据库这两种技术。
- 通过分布式存储技术将基准数据分布到多台ChunkServer,实现数据复制、负载均衡、服务器故障检测与自动容错,等等;
- UpdateServer相当于一个高性能的内存数据库,底层采用关系数据库技术实现。
- OceanBase相当于GFS + MemSQL,ChunkServer的实现类似GFS,UpdateServer的实现类似MemSQL,目标是成为可扩展的、支持每秒百万级跨行跨表事务操作的分布式数据库。
- OceanBase最大的亮点在于把写集中到一个单点UpdateServer,这样的好处是可以让一致性和可用性兼得,实现跨行跨表事务,坏处是UpdateServer单点性能有可能成为瓶颈,因此它的配置要非常非高(大内存+SSD+存储Cache)。