蚂蚁金服自研分布式关系数据库OceanBase上线阿里云

OceanBase于2020年3月在阿里云上完成了商业化,在公有云上正式对外开放。同步上线的还有相关的生态产品,包括集群管控(OCP:OceanBase Cloud Platform),诊断(OTA:OceanBase Tunning Advisor),迁移服务(OMS:OceanBase Migration Service)及开发者中心(ODC:OceanBase Developer Center)。

一、公共云OceanBase服务端部署

蚂蚁金服自研分布式关系数据库OceanBase是一款纯原生的分布式关系数据库,在代码层面完全可控。公共云OceanBase产品(图1-1)是基于三份副本3AZ部署,通过paxos协议保证了多节点间的数据一致性,单点故障甚至单AZ故障,也可以保障业务连续性,RPO=0,RTO<30s,做到机房级高可用,未来还将推出三地五中心的产品形态,具备城市级高可用切换能力。同时,OceanBase的资源管理具有非常高的灵活性。它支持多租户部署,在OceanBase集群里面,我们可以按需分配实例,并且可以进行在线资源扩容或者缩容。
从安全性和可用性来讲,OceanBase是非常适合金融业务场景的。因为监管需求,金融业务场景(像银行业务等)不能上公有云。但是这并不影响类金融业务,像保险、基金等。

 

1b0fb1d077710e0f09feeb80017be39a7d3acc40.png

 

图1-1

二、OceanBase架构原理

与大多数分布式系统不同的地方在于,OceanBase这个系统没有单独的总控服务器或者总控进程。分布式系统一般包含一个单独的总控进程,用来做全局管理、负载均衡,等等。OceanBase没有单独的总控进程,它的总控是一个服务,叫做RootService,集成在ObServer里面。OceanBase会从所有的工作机中动态地选出一台ObServer执行总控服务,另外,当总控服务所在的ObServer出现故障时,系统会自动选举一台新的ObServer提供总控服务。这种方式的好处在于简化部署,虽然实现很复杂,但是大大降低了使用成本。

OceanBase通过分区能力做到无限水平扩展(图1-2)。OceanBase跟传统数据库分区不一样的地方,在于传统数据库所有的分区只能在一台服务器,而OceanBase每个分区可以分布到不同的服务器,每个分区都有三副本。从数据模型的角度看,OceanBase可以被认为是传统的数据库分区表在多机的实现。它可以把不同的用户生成的数据全部融合到统一的表里面。无论这些分区在多台服务器上是如何分布的,整个系统对用户呈现的都是一张表,后台实现对用户完全透明。OceanBase在用户入口使用了OBProxy,它是一个访问代理,它会根据用户请求的数据将请求转发到合适的服务器。ObProxy的最大的亮点在于性能突出,它可以在非常一般的普通服务器上达到每秒百万级的处理能力。

 

e9cfe487035d464ae332e817717a855cf391f4dd.jpeg

 

图1-2

如图1-2,多个分区分布在多台服务器上。由于多个分区跨ObServer,内部通过两阶段提交实现分布式事务。当然,两阶段提交协议性能较差,OceanBase内部做了很多优化。它提出了分区组的概念,会把多个经常一起访问,或者说访问模式比较类似的不同表的分区放到一个分区组里面。OB后台会将同一个分区组尽可能调度到一台服务器上,避免分布式事务。同时优化了两阶段提交协议的内部实现。两阶段提交协议涉及多台服务器,协议中包含协调者、参与者这两种角色,参与者维护了每台服务器的局部状态,协调者维护了分布式事务的全局状态。常见的做法是对协调者记日志来持久化分布式事务的全局状态,而OceanBase的做法是,如果出现故障,通过查询所有参与者的状态来恢复分布式事务。这种方式节省了协调者日志,而且只要所有的参与者都预提交成功,整个事务就成功了,不需要等协调者写日志就可以应答客户端。

三、OceanBase存储架构

OceanBase是一个shared noting的架构,每一个OBServer都有独立的存储引擎,将数据保存在本地,这样可以满足容灾场景下的数据连续服务。OceanBase采用LSM-Tree的架构来设计Cache和数据存储,数据首先被写入内存中的MemTable当中,这样最高频和最活跃的数据都在内存访问,极大的提升了热数据的访问效率。当MemTable的写入到达一个阈值的时候,MemTable中的数据会做一次合并,将数据转到磁盘的SSTable中。在很多基于LSM Tree的存储系统中,为了解决写入的性能问题,通常会将SSTable分为多层,当一层的SSTable个数或者大小达到某个阈值时,合并入下一层SSTable。

 

46df4a128570be7e592603db4dd1bf41adf004b9.png

 

图1-3

在OceanBase内部,也会有很多种不同类型的Cache,有类似于Oracle和MySQL的buffer。cache用于缓存sstable数据的块缓存,还有用于缓存数据行的行缓存、日志缓存、位置缓存等等。基线数据缓存到内存中提升查询性能。对于不同租户,每个租户都有自己独立的缓存,可以配置对应租户内存使用的上下限,做到租户隔离或者抢占超卖,适用于不同需求的场景。

在存储成本上,OceanBase采用了多种数据压缩算法,例如lz4、zstd等。OceanBase会对数据集做两层瘦身,第一层是encoding,会使用字典、RLE等算法对数据做瘦身,第二层是通用压缩,使用lz4等压缩算法对encoding之后的数据再做一次瘦身。在zstd算法下,相较传统MySQL Innodb的压缩,可以做到相同数据集只是用MySQL的1/3的存储,帮助用户极大的节省存储成本。更重要的是,传统数据库定长页的设计压缩不可避免的会造成存储的空洞,压缩效率会受影响,而OB这样的LSM-tree架构的存储系统,压缩对数据写入性能是0影响的。

四、OceanBase SQL引擎

OceanBase的租户支持Oracle和MySQL两种SQL兼容性,首先相较于传统MySQL,OB除了硬解析以外,与Oracle一样支持软解析,同时解析器还支持SQL参数化以及绑定变量,如图1-4所示,解析器将解析后的SQL模板以及执行计划放在plan cache中,已经存在plan cache中的SQL就可以省去每一次硬解析带来的开销,提升了SQL运行效率。

 

dbebe03c0400337cc97897441b5c3561a949bdce.png

 

图1-4

基于LSM-Tree的存储架构,OB设计了一套独特的代价模型,引入统计信息,拥有了基于代码模型的优化器,这意味着OB可以根据统计信息,计算每条SQL的最优访问路径,给出最优的执行计划。同时OB也可以根据用户的需求,在线动态绑定固化执行计划,针对应急、效率的场景可以很好的提供便捷性。在执行器方面,OB不仅仅支持Nest Loop的Join方式,同时也支持了Hash Join、Merge Join,针对大表join提高效率。还支持并发执行、分布式SQL等等。

五、OceanBase的AACID特性

OceanBase是一个分布式的关系型数据库,符合ACID原则。在传统ACID的基础上,OceanBase特别强调多了一个A,可用性。基于Paxos协议的多副本日志复制,可以在单点故障的情况下提供无数据丢失的业务连续性。在一致性上,OB采用MVCC的多版本一致读,当数据块被更新时,OB会新开启一个数据块并带上数据版本于事务id,只有事务内的SQL可以访问到,未提交的数据不会被其他会话访问当。隔离性上,OB支持Oracle的提交读和串行化两种事务隔离级别,对Oracle做到了很好的兼容。在持久性上,和大多数传统数据库一样的日志先行,事务提交的时候先保证redo日志的写成功后才写数据,出现异常情况时不会存在数据二义性。

在数据安全上,OB也做了多种保护措施,最大程度的保障数据安全。比如回收站机制,在租户级别设置回收站的开关,当回收站打开的状态下,drop table、truncate的情况下数据不会被立马删除,而是进入了回收站,在回收站保留有效期内,都可以通过flashback的命令将表恢复原状,极大程度上避免了误操作带来的一些风险。

针对delete、update这种数据修改类的操作,OB支持基于位点的Flashback Query来将数据恢复到某一个时间点,这样针对业务或者运维过程中的错误SQL执行,具备数据找回能力。同时在Oracle租户下,还支持as of timestam/scn这种查询。

2019年10月,OceanBase斩获TPC-C性能测试榜首。创造了tpmc6088万的世界记录,是前任榜首Oracle的2倍。同年十一月份,在支付宝的双十一大促中又创造了6100万笔/秒的支付峰值,再次打破世界记录。经过多次极端业务的考验,OceanBase证明,在性能、可靠性、可用性上,分布式数据库是可以和集中式数据库媲美的。传统的商业数据库,如oracle、SQL server、DB2都依赖高端的硬件设备(小机,存储,还有光纤网络),但是OceanBase只需要普通的PC服务器,SSD盘、万兆网络就行。而且它还具有高存储压缩率。OceanBase上云后,目前除了数据库本身是按规格收费、迁移服务按小时收费外,其它管理平台(OCP、ODC、OTA)是免费的。通过OCP可以方便地管理集群、租户、数据库。用户,监控租户和节点的性能。通过ODC可以方便地管理和维护数据库对象(表/视图/函数/存储过程等)。使用其SQLConsole可以便捷地操作数据库。通过OTA,可以及时发现当前业务库存在问题的SQL,提供优化建议,绑定执行计划。使用这些平台可以使运维操作白屏化,降低了运维难度。

未来,OceanBase将会根据用户需求提供更多实用、高效的特性,同时周边生态产品的功能也会越来越完善,敬请期待。

免费看直播并有好礼相送:https://yq.aliyun.com/live/2301
100%自研数据库OceanBase正式对外开放,欢迎前来体验: https://www.aliyun.com/database/oceanbasept

原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/516547.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【远程沟通】“云答辩”“云招聘”双管齐下,解救“最难毕业生”

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 突如其来的新冠病毒来势汹汹&#xff0c;给这届学生带来了梦寐以求的超长豪华假期&#xff0c;同时也让毕业生的论文答辩及毕…

从零开始学网络|搞懂OSI参考模型和TCP/IP分层模型,看这篇文章就够了

来源 | 网络工程师笔记前言今天和大家一起谈谈“网络”&#xff0c;之前写的文章可能不太通俗易懂&#xff0c;有人就问我可不可以写些比较容易理解的文章&#xff0c;我想了想那就从头说起吧&#xff01;那么什么是网络呢&#xff1f;百度百科的定义&#xff1a;网络是由若干节…

升级遗留代码的最佳实践

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 在传统企业甚至互联网企业中往往存在大量的遗留代码&#xff0c;这些遗留代码大多都能够正常工作&#xff0c;有的可能还运行…

字节、腾讯、阿里的开发为啥都在用Python?网友:又酸又香!

毋庸置疑&#xff0c;Python越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员&#xff0c;还是年薪百万的 BATJ 的大牛都无可否认&#xff1a;Python的应用能力是成为一名码农大神的必要项。 所以&#xff0c;很多程序员把Python当做第一语言来学习。 但对于Pytho…

【新冠疫情】5G到底能为抗疫做点啥,这篇文章终于讲清楚了

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 3月24日&#xff0c;工信部网站发布关于推动5G加快发展的五方面18条措施&#xff0c;其中包括推动“5G医疗健康”创新发展。 …

美甲帮:数加平台打造大数据架构

公司简介 美甲帮是牧云网络旗下一款专注美甲行业的社区型垂直电商APP&#xff0c;其核心业务包括美甲资讯、美甲行业认证、培训教学、商城、招聘等板块&#xff0c;目前已汇聚全国80%的美甲师&#xff0c;覆盖国内90%的美甲店&#xff0c;数以百万计的美甲从业人员和爱好者在此…

在容器上构建持续部署,这份超详细实践指南不要错过!

作者 | 倚天码农责编 | 刘静出品 | CSDN 博客要想理解持续集成和持续部署&#xff0c;先要了解它的部分组成&#xff0c;以及各个组成部分之间的关系。下面这张图是我见过的最简洁、清晰的持续部署和集成的关系图。图片来源&#xff08;https://www.sonatype.com/products-over…

docker nacos mysql nginx 集群一台

文章目录服务器编排一、mysql1. 创建挂载目录2. 赋予权限3. 运行容器4. 创建数据库5. 初始化脚本二、nacos-cluster2.1. nacos-cluster012.2. nacos-cluster022.3. nacos-cluster03三、nginx3.1. 运行临时容器3.2. 配置拷贝3.3. 删除临时容器3.4. 添加配置3.5. 运行容器四、验证…

世界备份日,您的数据足够安全吗?

据IDC的统计数字表明&#xff1a;发生过机房灾难的公司中&#xff0c;有55&#xff05;立即倒闭&#xff0c;剩下的45&#xff05;中&#xff0c;因为数据丢失&#xff0c;有29&#xff05;也在两年之内倒闭&#xff0c;生存下来的仅占16&#xff05;。Gartner Group的数据也表…

急速上线 Serverless 钉钉机器人“防疫精灵”

新型冠状病毒疫情肆虐的春节&#xff0c;大家都过得人心惶惶&#xff0c;作为被关在家的程序狗&#xff0c;总觉得要做点什么。于是阿里云 IoT 事业部的几个同学就开始了防疫精灵的开发之路。 从点子到防疫宝&#xff0c;只花了一个下午时间&#xff1b;从防疫宝到钉钉全域机器…

可怕!公司部署了一个东西,悄悄盯着你……

来源 | 编程技术宇宙责编 | Carol封图 | CSDN付费下载自视觉中国我是一个网络监控软件&#xff0c;我被开发出来的使命就是监控网络中进进出出的所有通信流量。这个网络中所有人的上网内容我都看的清清楚楚&#xff0c;是不是很可怕&#xff1f;我被一家公司老板买来运行在一个…

docker nacos mysql nginx 集群多台

文章目录服务器编排一、mysql1. 创建挂载目录2. 赋予权限3. 运行容器4. 创建数据库5. 初始化脚本二、nacos-cluster2.1. 192.168.92.1292.2. 192.168.92.1322.3. 192.168.92.133三、nginx3.1. 运行临时容器3.2. 配置拷贝3.3. 删除临时容器3.4. 添加配置3.5. 运行容器四、验证和…

【开发者成长】5 分钟搞定 Linux 正则表达式

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 正则表达式是一种字符模式&#xff0c;用于在查找过程中匹配制定的字符。 元字符通常在Linux中分为两类&#xff1a; Shell…

【开发者成长】每个人都在编写草率代码

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 所有开发人员都认为自己写的代码完全能让人看懂&#xff0c;然而&#xff0c;他们却无法解密彼此的代码(更不用说维护代码了)…

疫情与资本寒冬双重危机下,智领云为何能拿到数千万融资?

经济下行&#xff0c;资本收缩&#xff0c;加之中美贸易摩擦&#xff0c;2019年可谓“难熬”。转眼2020年&#xff0c;资本寒冬未消退&#xff0c;疫情再来雪上加霜&#xff0c;募资搁置、投资放缓、退出暂停&#xff0c;本已残酷的一级市场寒冬再次被拉长。据清科研究中心数据…

云原生基础架构的最佳状态,就是没有架构?

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 云原生基础架构是通向云原生时代的基石&#xff0c;对于很多架构师来说&#xff0c;上云之后&#xff0c;架构为什么成为了云…

美军开发远程人脸识别系统,实现1公里内目标识别

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 编者按&#xff1a;本文来自微信公众号“学术头条”&#xff08;ID:SciTouTiao&#xff09;&#xff0c;作者&#xff1a;小婷…

“蚂蚁漫步”背后的定位原理思考

作者 | 陆春晖责编 | 李雪敬头图 | CSDN下载自视觉中国蚂蚁的里程表最近看了一本很有意思的书&#xff0c;克利福德皮寇弗所著的《数学之书》。其中一篇《蚂蚁的里程表》&#xff0c;讲述蚂蚁惊人的定位导航能力&#xff0c;对机器人及无人车的设计者们有强烈的启示作用。笔者对…

10个 Python 工程师,9个不合格!!

毋庸置疑&#xff0c;Python越来越被认可为程序员新时代的风口语言。 无论是刚入门的程序员&#xff0c;还是年薪百万的 BATJ 的大牛都无可否认&#xff1a;Python的应用能力是成为一名码农大神的必要项。 所以&#xff0c;很多程序员把Python当做第一语言来学习。 但对于Pytho…

漫谈新零售:疫情对新零售的十大影响

云栖号资讯&#xff1a;【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯&#xff0c;还在等什么&#xff0c;快来&#xff01; 席卷全球的新冠疫情&#xff0c;骤然影响了全人类的生活和工作方式。作为一起震动全球的黑天鹅事件&#xff0c;它对整个世界…