作者 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
有程序员自称自己是“CURD工程师”,日常工作是用封装好的方法简单地调用数据库。假如较少用户或者数据量较少时,选择何种数据库或如何调用数据库都没有关系。假如有千万级别或以上的数据处理量,稍有不慎数据库可能就要挂了。
而在2019 双11抗住6100万笔/秒的数据处理峰值,阿里自研数据库OceanBase到底是用了哪些硬核黑技术呢?
11月19日,在巅峰洞见·聚焦金融新技术发布会上,蚂蚁金服高级研究员阳振坤、蚂蚁金服研究员韩鸿源为我们讲述OceanBase的前世今生。
随着互联网兴起,传统企业级数据库的局限
韩鸿源表示,从上90年代和本世纪初,关系数据库成为企业级应用开发的主要支撑平台。那时在传统企业里的业务系统,接入终端的数量是有限的,所以数据是集中存储和处理,且企业内部的使用场景可通过垂直扩展满足要求。
随着互联网的发展,企业里的业务系统不能只是给内部人员使用,而是广泛地暴露在海量的外部用户使用,仅凭数据库的垂直扩展无法解决此问题。传统关系数据库的集中式架构已无法有效地支撑用户访问的请求。
随着互联网的发展,我们发现了一些变化。随着用户量和并发度暴增,这导致:
1、单体数据库支撑业务系统逐渐变得不可能;
2、数据价值密度差异很大,低价值密度数据放松一致性要求;
3、从数据库拆分走向分布式架构设计和演进;
4、应付特定负载类型的NoSQL开始出现和发展;
5、互联网公司的用户规模带来的基础设施的扩充带来了新的可能性——多数据中心,全局选路与负载均衡等。
另外,大规模部署的通用硬件催生了对运维自动化和自主高可用的需求,我们可以看到:
1、以Paxos为代表的分布式选主协议开始取代主备的保护方式进入生产环境的存储系统;
2、通用硬件的能力不断增强了数据库技术新的发展机会;
3、公有云提供商的区域都是三个可用区起步。
所以新一代企业级数据库平台应该具备新能力:消除特定的软硬件架构以来,充分配合公有云通用资源提供的发展趋势;有效配合跨代的应用构建和运行方式,兼顾传统企业级和云原生分布式环境;支持数据在运行环境间灵活迁移;多租户及混合负载数据库云服务提供能力。
由此,金融级分布式关系数据库OceanBase应运而生。
OceanBase的发展历程
2011年:OceanBase 0.1版本发布,并应用在淘宝收藏夹。
2014年:OceanBase 0.5版本发布,引入Paxos协议保证主库故障不丢数据,处理当年双11的10%交易数据链。
2015年:OceanBase 0.5版本在支付宝的交易库和支付库上线,同年OceanBase上线网商银行,成为全球首个应用在金融核心业务系统的分布式关系数据库。OceanBase在当年双11处理100%交易数据链和50%支付数据链。
2016年:OceanBase 1.0版本在支付宝账务系统上线,支撑当年双11的12万笔/秒的支付峰值。
2017年:OceanBase发布1.4版本,增加转储功能、层次查询功能。在当年双11里,包括整个账务库在内的全部核心系统都100%运行在OceanBase上,创造了4200万次/秒数据库处理峰值的纪录。
2018年:OceanBase 2.0版本发布,支持MySQL/Oracle双兼容模式,是第一款支持存储过程的原生分布式数据库;在OLTP场景性能较1.4版本提升50%以上,存储成本下降30%。
2019年:OceanBase2.2版本发布,在TPC-C测试中跑赢Oracle一举夺冠,并在双11里达到6100万笔/秒数据处理峰值。
OceanBase的特性
阳振坤表示,传统数据库采用主库+备库的设计,如果需要备库跟主库完全一致,每一笔事务主库实时同步给备库。如此一来,可靠性主要依赖于硬件,如果备库出现异常或者主备库之间的网络异常,主库上的事务就会积压,可能将在很短时间内撑爆主库,导致业务不可用。
而OceanBase在传统的主备镜像的基础上增加一个备库,主库同步事务到两个备库,只要有一个备库收到,加上主库自己至少两个库收到就可以。如此一来,每一笔事务至少在三个库中的两个库落地,任何一个库出问题了,每笔交易至少存在于一台机器上,这样便实现高可用。
在架构上,OceanBase采用Share-Nothing架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎和存储引擎:
如此一来,OceanBase拥有以下特性:
1、强一致:采用分布式事务,并进行多重数据校验,ACID(原子性、一致性、隔离性、持久性)强一致。
2、高可用:基于 Paxos 协议,少数派故障,数据不丢,服务不停;RPO(Recovery Point Objective,复原点目标)=0;RTO (Recovery Time Objective,复原间目标)<30s。
3、高可扩展:水平扩展,在线扩容缩容,服务不停;单集群规模超100台,数据量超2PB;单表最多记录数超3200亿条。
4、低成本:基于普通 PC 服务器,高存储压缩率;金融单账户成本为传统方案的1/10 - 1/5。
5、高性能:准内存数据库性能,6100 万次/秒处理峰值的记录。
6、高兼容:兼容MySQL和Oracle。
在会上,韩鸿源宣布OceanBase2.2版正式发布,兼容MySQL和Oracle两种模式,并在Oracle模式中引入了多种功能,相对2.0版本,集群稳定性大幅提升,分布式事务运行稳定,最大单表行数达万亿级,单集群最大数据量超过3PB。OLTP性能相比2.0版本提升50%以上,部分复杂场景提升100%。
目前,网商银行、南京银行、中国建设银行、西安银行、招商证券、常熟农商银行、苏州银行等多家金融机构已经在生产系统中使用OceanBase。
在未来两年的时间里,OceanBase 预计实现大部分Oracle 业务的平滑迁移,并将进一步完善商业智能分析的功能,以一套系统、一份数据实现交易处理+商业智能分析的混合负载。
从一开始OceanBase应用到“边缘性”业务——收藏夹,到处理10%交易链数据,再到整个账务库在内的全部核心系统100%运行在OceanBase。其处理峰值从12万次/秒,到4200万次/秒,再到今年的新峰值6100万次/秒,我们每年见证OceanBase的“不可思议”与“再创新高”。
下一年双11,OceanBase又将给我们带来怎样的惊喜呢?
又或许OceanBase仅仅只是将“所有不可思议,终将化为寻常。”
【End】
每个 Python 学习者都值得一试,快看!
热 文 推 荐
☞携号转网移动用户转出最多;微软称 8 万台电脑感染病毒;TensorFlow 2.1 rc0 发布 | 极客头条
☞Java 9 ← 2017,2019 → Java 13 ,Java 两年来都经历了什么?| CSDN 博文精选
☞大白话讲解比特币白皮书,十年后它依然是学习区块链的最佳资料,你真的读懂了吗?
点击阅读原文,即刻参加调查!
你点的每个“在看”,我都认真当成了喜欢