自主研发的蚂蚁金服数据库oceanbase背后的技术秘密
oceanbase作为自主研发的蚂蚁金服数据库,多年来稳步支持蚂蚁金融双十一峰值流量,2017年创下25.6万笔支付每秒的世界纪录。oceanbase作为新一代的关系数据库,在扩展性、高可用性、高性能、低成本等方面解决了一系列世界性的技术问题。今天,我们将为您逐一解开oceanbase背后的“技术秘密”。
oceanbase的核心优势可以概括为五点线性扩展、高可用性、一致性、低成本、易用性,下面逐一介绍。
1、线性扩展:由于单机能力的限制,传统的单机数据库对可扩展性有很大的影响。oceanbase通过Paxos分布式协议、数据分区等机制提供一致性保证,通过动态添加机器获得水平扩展能力。
2、高可用性:传统企业更依赖高端硬件来解决高可用性的问题,性能会随着成本的增加而受到损害,因为它不考虑软件设计中的硬件失败。蚂蚁金服在选择普通PC机的前提下,通过底层分布式数据库解决方案保证了系统的高可用性。
3、一致性:对于数据库来说,很难在解决前两个问题的基础上保证一致性。oceanbase在线性扩展和高可用性的基础上,保证了数据库ACID的一致性。
4、低成本:随着双十一交易量的超线性增长,数据库的性能最终体现在吞吐量的逐年提高上。oceanbase大大降低了系统的硬件成本,通过对单机性能的极端优化,有效降低了整个系统的运行成本,同时保证了高性能。
要解决一致性、高可用性和可扩展性的问题,我们需要知道分布式数据库的高可用性和一致性与传统数据库有什么区别?
传统的数据库通常是一主一备或一主多备模式,用户必须在最大可用性和最大一致性之间进行选择,在实际故障中难以切换。如果数据同时落入主库和备库,则牺牲可用性;如果数据异步到备库,则很难保证故障时的数据一致性。
综上所述,传统数据库很难给出有效的系统容灾方案。
oceanbase的底层是基于分布式一致性协议Paxos。当有多个数据时,只要大多数组形成一致性,客户就可以得到回应。只要大多数派存活下来,服务就不会受到影响,系统的可用性也会得到最大限度的考虑。
在业务层面,oceanbase可以保证RTO小于30秒,RPO等于0。这意味着数据库可以在30秒内恢复任何故障,并确保在恢复过程中没有数据丢失。
通过数据分区实现了oceanbase的一致性。在传统数据库中,数据分区的一致性。它是数据逻辑层的概念,可以按照预定义逻辑来划分数据。在oceanbase中,该分区也是一致性或同步单元。
目前,企业普遍采用的异地多活方案基本上是两地三中心,这也是蚂蚁金融内部早期使用的部署方案。所需的硬件条件是两地三机房。假设深圳有两个机房,杭州有一个单机房,三个机房形成大部分投票,只要两个副本存在,服务就可以正常使用。此时,任何单机房或单机故障都可以容忍。但是,如果深圳整个城市崩溃,大多数就不存在,系统就不能提供服务,但也不会丢失数据,因为所有同步方案都必须保证大多数,如果两个失败,日志就不会同步或提交。
此外,该方案的问题是缺乏二次灾难容忍能力,只允许单个节点失败,三份是灾难容忍最基本的部署方法。
蚂蚁金服提出的解决方案是三地五中心五副本架构。例如,假设上海、杭州和深圳都有机房,并按照五份方式部署,这里的大部分都是三份,这意味着五份至少要同步三份。与两地三中心的结构模式相比,新的结构增加了城市容灾能力,其中两份仍符合大多数派协议,具有抗二次故障能力。
该计划的缺点是两个城市之间的延迟,每次提交都需要等待,延迟约为几毫秒。为了部署该计划,企业必须具备三个以上机房的部署能力,这使得该计划不适合所有用户。