前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OcceanBase介绍

OcceanBase介绍

作者头像
心平气和
发布2020-09-11 11:31:00
7090
发布2020-09-11 11:31:00
举报
文章被收录于专栏:程序员升级之路

一、OcceanBase是什么

以下是oschina的介绍:

OceanBase是一个支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务,由淘宝核心系统研发部、运维、DBA、广告、应用研发等部门共同完成。在设计和实现OceanBase的时候暂时摒弃了不紧急的DBMS的功能,例如临时表,视图(view),研发团队把有限的资源集中到关键点上,当前 OceanBase主要解决数据更新一致性、高性能的跨表读事务、范围查询、join、数据全量及增量dump、批量数据导入。 https://www.oschina.net/p/oceanbase

OcceanBase是淘宝开源的一个分布式关系数据库,以下是其官方地址:https://oceanbase.alipay.com/

二、OcceanBase的开发背景

我们来大概了解下淘宝为什么要开发这个数据库,在去IOE之后,淘宝核心场景都使用了Mysql,Mysql的好处是免费,并且可以运行在普通PC机上,但Mysql的扩展性是个大问题,虽然可以通过分库分表等中间件来做,但这些中间件多多少少有如下问题:

1、运维复杂 因为引入新的中间件,所以系统链路会延长,并且运维的工作量增加,需要对Mysql中间件做好监控,配置等操作。

2、扩容麻烦

现有Mysql中间件扩容都比较复杂,即如果某个表原来分成8张子表,现在业务量增大,需要再增加即扩充成16张表,整体过程操作比较复杂,需要运维、开发一起配合,并且可能有不少手工操作,整个过程工作量大并且容易出错,对于淘宝前几年业务量增长迅猛的情况下肯定就不适合了。

当然还有其他原因,但主要是以上2点。

三、OcceanBase功能介绍

我们看下Occeanbase有哪些功能:

1、兼容MySQL 协议

兼容MySQL 5.6 版本大部分功能;

因为现有业务大量使用Mysql,如果业务升级还要改代码,则升级就会有不少阻力,所以设计的时候就采取兼容的方案,这样业务方只改改配置就可以快速上线了。

2、分布式,可水平扩展

  • 水平扩展,在线扩容缩容,服务不停;单集群规模超 100 台,数据量超 2PB;单表最多记录数超 3200 亿条。

注意:扩容时不停机这个功能,这个主要就是解决上面说的问题2的。

3、高可用

基于 Paxos 协议,少数派故障,数据不丢,服务不停;

这个是趋势,Mysql官方8.0也有这个功能了。

4、强一致

  • 分布式事务,ACID 强一致。

5、高性能

  • 准内存数据库性能,4200 万次/秒处理峰值的记录。

四、整体架构分析

接下来我们分析Occeanbase的架构设计,是如何做到这么高性能,又强一致的。

先看下整体架构

RootServer:管理集群中所有服务器,及数据分布和副本管理,即元数据服务器;

UpdateServer:存储OcceanBase增量更新数据;

ChunkSerrver:存储基线数据,即不会变的数据;

MergeServer:接入用户请求,做完词法分析、查询优化等工作后转发给ChunkServer或UpdateServer;

可以看到,整个OcceanBase的计算和存储是分离的,MergeServer负责计算,ChunkServer和UpdateServer负责存储。

另外元数据是中心化的,这个也是目前分布式系统设计的趋势,只要元数据不要参与每一次请求,通过客户端缓存、增量更新等措施可以大大减少元数据服务器的压力。

OcceanBase独特的设计在于将增量更新数据全放到UpdateServer上 。

这个设计也决定了OcceanBase使用场景为一段时间更新不是特别多,像电商主要是写少读多,特别适合这样的场景。

这个设计有好有坏,好处有:

1、完美地支持分布式事务

因为修改只在一次,就不存在数据同步和一致性的问题,事务就可以很好地支持,这样的设计也是为了淘宝这样的场景:一段时间内写入不多,但又要求强一致性

2、大大简化系统设计

因为淘宝的场景是读多写少,在整体OcceanBase架构里写是单点,但读是可充的,即一段时间内没有修改,直接从ChunkServer返回,根本不用走到UpdateServer,而ChunkServer是可以水平扩充的,这样就可以在支持业务的条件下简化系统的设计,不用做数据同步,面对分布式锁等复杂问题。

当然这么设计的弊端也很明显,最大的问题就是单点,即整体系统写入都必须经过UpdateServer,但UpdateServer又无法水平扩容,当然OcceanBase做了很多设计来减少UpdateServer的负担,像读写分离,定期整理基线数据,这个后面慢慢分析。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员升级之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档