2017双11技术揭秘—X-DB支撑双11进入分布式数据库时代

摘要: 今年双11是X-DB的第一次大考,本次双11X-DB服务于天猫/淘宝核心交易系统、核心物流系统、核心IM系统,经受了零点业务32.5万笔/秒峰值的性能考验,同时X-DB支撑起了新一代单元化架构.

作者:章颖强(江疑)、胡炜

X-DB 1.0(X-Cluster)是阿里自主研发的,100%兼容MySQL生态的,全球级分布式强一致的关系型数据库系统。今年双11是X-DB的第一次大考,本次双11X-DB服务于天猫/淘宝核心交易系统、核心物流系统、核心IM系统,经受了零点业务32.5万笔/秒峰值的性能考验(对应数据库峰值每秒破亿次的SQL调用);同时X-DB支撑起了新一代单元化架构,在分布式一致性算法Paxos的统一框架下,第一次提供了跨Region分布式强一致能力,实现高效的跨Region数据同步、跨Region容灾,保证金融级的数据质量服务。

X-DB为了降低用户的迁移和学习成本,选择了兼容成熟的MySQL生态,并且做到了真正100%兼容MySQL生态,为业务,为传统数据库赋能。基于MySQL的业务可以无缝从MySQL迁移到X-DB上来,不需要任何评估和兼容测试,完全零成本迁移。基于MySQL的周边工具平台,甚至是MySQL DBA都可以非常平滑的转移到X-DB上来。阿里内部从今年6月初第一个业务应用灰度切流,到目前为止5个月的时间里,X-DB已覆盖了阿里集团及多个关联公司旗下的多个事业群,为海量的线上业务提供服务,整个过程绝大部分业务都是无感知的。

X-DB拥有真正的跨Region/跨国的数据强一致能力,并已得到实践的检验。双11前夕,核心物流系统、核心IM系统首次完成了中心Region所有数据库不可用的“中心城市容灾演练”,验证业务拥有在整个中心Region均不可用情况下,X-DB和应用仍可以正常提供服务的能力,并保证数据零丢失。

X-DB的核心优势和技术解析
X-DB是阿里自研的全球级分布式关系型数据库。现在业界各种类型的分布式数据库不断涌现,互联网巨头、传统数据库厂商、数据库创业公司都在不断跟进。那么X-DB到底有什么优势能战胜这些竞品,快速获得业务价值呢?

X-DB生态100%兼容MySQL
新一代分布式关系型数据库是对传统关系型数据库的传承和革新。分布式数据库虽然在高可能、强一致、高性能、低成本、高伸缩等多个方面作出了划时代的变革;但其依旧传承了传统数据库强大的SQL接口,系统管理能力。NoSQL的衰弱和NewSQL的兴起,恰恰证明了这一点。一个新的分布式数据库,如果没有传承,自建一个新的生态,将会极大的提高用户的学习和使用成本,整个工具和支持配套也将面临很大的困难。

因此,X-DB作为一个新一代分布式关系型数据库,设计之初就选了业界相对开放和成熟的MySQL开源生态作为自己的基础。这样不单可以让MySQL生态中的用户零成本的切换到X-DB中,快速赋予业务分布式数据库所带来的多种能力;同时可以让MySQL生态中的各种周边工具和DBA等生态的参与者平滑的切换到分布式时代,赋予其支撑分布式数据库的能力。

事实证明X-DB选择的这条路是正确的。在阿里集团及生态下的子公司内部,X-DB在短短的几个月内、在非常少的人力参与下,迅速的完成了对大量传统MySQL/AliSQL集群的换代升级,使得阿里数据库整体进入了分布式时代,整个过程业务几乎零参与。同时X-DB对MySQL生态下的运维系统/工具、知识体系也实现了兼容,整个MySQL时代的支撑平台,支撑人员都可以平滑的过度到分布式数据库时代,拥有了支撑下一代数据库的能力,这个是非常难得的。

跨Region/全球强同步能力
业界支持分布式强一致的数据库很多,但是其强一致都是有范围的,有些支持AZ内强一致,有些支持跨AZ强一致,真正能做到跨Region/跨国强一致的却是凤毛麟角。目前业界主流数据库中,只有Spanner宣称自己是Global Distribution,包括Amazon
Aurora在内的其他主流数据库目前都不支持跨Region的强一致。X-DB是真正做到了跨Region/跨国强一致的分布式数据库,并且在业务上得到了验证。今年音视频服务全站迁移X-DB,同时X-DB支撑了音视频服务国际化等多个国际化项目,实现跨国部署。包括核心交易系统、核心物流系统、核心IM系统在内的大量业务集群以跨Region强同步模式部署,使得业务拥有了城市级容灾情况下,数据零丢失,服务秒级恢复的能力。核心物流系统、核心IM系统在双11前夕分别进行了中心Region全不可用的容灾演练,X-DB在15秒内自动完成跨Region的重新激活,数据零丢失,这在整个行业都是先行者。

技术解析:X-Paxos——高性能Paxos独立库
Paxos是一种分布式一致性算法,其最基础也是最重要的功能是保证分布式系统中多个节点的数据(日志)的强一致,它是分布式系统的基石。虽然Paxos算法被图灵奖获得者Leslie Lamport首次提出到现在已经19年了,离第一个工业实现(Chubby)也已经11年了,但是近几年,顶级会议/业内文章中Paxos的优化和讨论还是非常的多,而且到目前为止真正工业级的、高性能的、高可扩展的Paxos算法库还是非常的少见。

X-Paoxs是阿里独立设计/研发的,真正工业级的Paxos独立库,其在性能上好于业界对手1、2个数量级以上,同时其强大的扩展性和完善的生态系统都是竞品所没有的,X-Paxos为分布式高性能数据库X-DB奠定了坚实的基础。

X-Paxos从基础架构,到网络模型,再到算法本身都有大量的创新:

基于SEDA架构的异步并发调度框架
由于Paxos的内部状态复杂,实现高效的单实例多线程的Paxos变成一个非常大的挑战。大部分竞品例如Oracle/MySQL的Group Replication等针对单个Paxos对象都是单线程实现。X-Paxos实现了一整套高效的异步并发调度框架,并基于SEDA(Staged Event-Driven Architecture)思想,对整个Paxos协议进行了并发切分和实现,采用了大量无锁设计;由异步并发调度框架进行调度和执行,充分利用多核资源,实现高性能。
基于Batching & Pipelining的网络优化
跨Region/跨国场景下对X-Paxos来说最大的挑战就是如何在高延迟网络下保持高吞吐和相对低延迟,X-Paxos针对高延迟网络做了大量的协议优化尝试和测试,并结合学术界现有的理论成果通过合理的Batching和Pipelining,设计并实现了一整套自适应的针对高延迟高吞吐和低延迟高吞吐网络的通信模式,极大的提升了X-Paxos的性能。类似的优化大部分还在理论阶段,在同类竞品中还非常的罕见。
图片描述

Jepsen/TLA+的分布式原理/实现验证
《Paxos made live》中有过一个说法,证明一个Paxos实现是正确的,比实现这个Paxos本身会更难。因此我们在设计和实现X-Paxos的时候,投入了大量的精力在Paxos的原理证明了实现验证上。我们用TLA+对X-Paxos进行建模,验证其理论正确性。我们将Jepsen对X-Paxos/X-DB进行适配,同时增加了大量的验证Case和注入错误,7X24小时运行,验证其实现正确性。
强一致下的高性能
业界习惯性的认为,强一致一定会带来性能的下降,开强MP的Oracle,在Semi-Sync的MySQL,MySQL Group Replication甚至于跨Region部署以后的Spanner,会面临大幅度的性能下降的问题。

今年双11 X-DB在核心交易系统、核心物流系统等交易核心链路上100%切流,经历了多轮全链路压测和双11零点业务32.5万笔/秒,数据库SQL上亿次/秒的峰值的性能考验,证明了X-DB完全有能力实现强一致和高性能的鱼熊兼得。

X-DB从Paxos协议的实现,到X-Paxos和AliSQL的日志结合,再到AliSQL本身的提交逻辑,锁策略都做了大量的优化。保证X-DB无论是在多机房部署还是多Region部署下,都能保证性能和单节点模式(非强一致)下无大幅度劣化。特别是在跨Region部署时,和其他分布式数据库相比,优势尤为明显。这也是业务能够接受X-DB跨Region部署的主要原因。

X-DB是AliSQL和X-Paxos的紧密结合而产生的。高性能的X-Paxos为不单为X-DB带来了高可用和强一致的能力,同时为X-DB的在强一致下的高可用奠定了坚实的基础。除此以外,我们在AliSQL和X-Paxos的结合上也做了大量的优化,例如一体化日志设计和异步事务提交。

技术解析:一体化日志设计
X-DB的Consensus日志采用了单一事务日志的方案(区别于MySQL的binlog和relay_log两份日志),单一事务日志格式MySQL binlog的事务日志格式。这份日志被用于集群节点间数据的同步以及下游应用的消费。

一体化日志设计带来的好处是显而易见的,首先是日志量的减少。MySQL接收到主库的网络消息后会先本地落一份relay_log日志,在消费后再产生一份binlog日志。虽然relay_log会很快被回收,但是日志的写入量是实实在在的两份。反观X-DB在统一了日志后,同一个事务在一个实例节点上只需要记录一份日志。其次统一日志能够让日志真正按照产生的先后续做到逻辑和物理上的一致,这对于日志的检索效率来说是大有裨益的。首先是顺序扫描日志的时候可以做到物理IO上的顺序性,其次Paxos算法的运转对于日志的检索和获取都有较高的要求,如果检索一份日志需要先后扫描两份日志跳转来判断比较,那对于效率来说是非常低下的。
图片描述

技术解析:异步事务提交
在数据库中,服务端的线程池是非常有效降低线程上下文切换开销,提升系统吞吐的技术。但是在跨城/跨国环境下,巨大的网络延迟使得线程池本身会成为一种瓶颈。例如X-DB集群的节点分布在网络RTT达到几十毫秒级别的两个Region中,那么在实际的运行中会发现线程池中绝大部份线程都在等待日志跨Region同步回包,而客户端的请求就没有足够的线程去处理了,这其实造成了服务器资源的严重浪费。

重新回到非线程池的状态不是一个明智之举,既要低上下文开销又要有高资源利用率。我们采取的解决方案是将事务处理中可能最为费时的等待事务日志回报做成异步化。 这样就把一个完整的事务流程拆成了:处理请求->等待同步->事务提交的三个步骤,
三个步骤可以分别由线程池的不同线程来完成。每个步骤X-DB可以精确控制并发量,例如可以用最少的线程数量来处理事务等待日志同步的工作,用大量的线程来处理事务提交等等。在异步化改造后,只要用户的并发请求量足够多,系统吞吐量上可以有明显的提高。

图片描述

丰富灵活的部署模式
针对电商双11这种,不同时期不同需求的业务模型,X-DB提供了非常丰富并且灵活的部署模式,例如核心交易系统、核心物流系统,在今年双11前夕,将部署模式从跨城强同步模式一键切换回同城强同步模式,并动态调整拓扑,在保证机房级强一致的前提下,有效的降低了RT,提升了吞吐。

集团内外不同的业务对数据库的部署需求各不相同,为了更广泛的支持不同的业务X-DB支持的部署模式非常的灵活。业务可以根据自己的容灾和业务需求,在不同的部署范围内(同城多机房/国内多Region/跨国等)选择任意数量、任意角色的节点进行部署,节点的部署和角色同样可以在线修改以适应业务的不同时期的不同需求,例如双11。这样说有点抽象,这里举2个实际的案例

案例:同城跨机房模式
图片描述
上图是一个经典的同城跨机房强同步方案,满足以下需求

机房级容灾数据零丢失,10秒级容灾切换
相对于主备方案零成本增加(2数据副本,1日志副本,日志副本资源需求可忽略)
RPO < 1S(通过X-Paxos SDK持续备份)
当然业务可以在这个模式的基础上做多种扩展,例如增加只读无选举权的learner节点;增加有选举权的follower节点等来提升容灾等级和读能力。
案例:跨城单元化模式
图片描述
上图是一个经典的跨城强同步方案,满足以下需求

真正的跨城强一致能力:任意城市整体不可用不影响集群可用性,零数据丢失
高性能:在跨城强同步下依然保持高性能
灵活的切换策略:可分别设置同城节点,跨城节点切换优先级
高伸缩能力:可任意增加/删除/动态修改任意Region的数量和角色
目前核心交易系统、核心物流系统、核心IM系统等核心集群均采用类似部署方案保证跨城容灾能力。
更重要的是X-DB支持动态切换部署模式,例如核心交易系统、核心物流系统等集群在双11期间一键动态将跨城模式切换到同城模式,在保持机房级容灾能力的前提下,获得更高的性能;音视频服务通过在海外Region动态扩展一个Leaner角色的节点实现国际化。

图片描述

技术解析:Paxos框架下的角色定制和动态变更
在分布式数据库中经典的Paxos用法是将Paxos作为一个整体来解决高可用和强一致问题。然而Paxos算法不单单能解决高可用强一致问题。在X-Paxos中我们对Paxos算法进行了扩展,将Paxos算法中节点的三个角色(Proposer/Accepter/Learner)进行了剥离和重组,形成了多种不同角色的节点,这些节点组合后,可以形成多种适合不同业务的部署模式,同时X-Paxos设计了一整套动态Configure Change算法支持所有部署模式之间的动态切换,对业务非常友好。

图片描述

X-DB的演进
X-DB 1.0是整个X-DB的计划的一部分,整个X-DB计划将按照三步进行

X-DB 1.0(X-Cluster): 集成X-Paxos,实现金融级分布式强一致能力、一体化的架构设计以及统一的生态环境。
X-DB 2.0: 基于自研高性能低成本存储引擎X-Engine,与分布式存储结合打造的计算与存储分离架构,能独立扩展计算和存储的能力,为业务在不同场景的负载下,提供灵活的伸缩能力。同时得益于全新设计的存储引擎,能够提供其他同类产品难以匹敌的性能。
X-DB 3.0: 新一代分布式关系型数据库,同时支持了数据自动分片负载均衡,多点可读可写,跨域强同步,AZ内快速扩充计算节点的计算存储分离架构,应用了一系列技术:为充分发挥硬件性能的软硬件结合技术以及根据数据冷热特点的分层混合存储技术,无论上是在扩展性和高可用性,还是成本和性能上都做到极致,是X-DB计划数据库系统演进的最终形态。

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

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

相关文章

ifix虚拟服务器,ifix的客户端和服务器

ifix的客户端和服务器 内容精选换一换介绍使用同一VPC内弹性云服务器ECS上的C# Redis客户端连接Redis实例的方法。更多的客户端的使用方法请参考Redis客户端。已成功申请Redis实例&#xff0c;且状态为“运行中”。已创建弹性云服务器&#xff0c;创建弹性云服务器的方法&#…

一张图看懂阿里云网络产品【四】NAT网关

摘要&#xff1a; NAT网关&#xff08;NAT Gateway&#xff09;是一款企业级的VPC公网网关&#xff0c;提供SNAT和DNAT功能&#xff0c;支持多IP&#xff0c;支持共享带宽&#xff0c;具备Tbps级别的集群转发能力和Region级别的高可用性。

Failure to find com.oracle:ojdbc6:jar:11.2.0.1.0

报错原因&#xff1a;oracle的ojdbc.jar是收费的&#xff0c;maven的中央仓库是没有的&#xff0c;需要下载到本地&#xff0c;然后打包进maven仓库 1.下载ojdbc6-11.2.0.1.0.jar包 http://central.maven.org/maven2/com/jslsolucoes/ojdbc6/11.2.0.1.0/ojdbc6-11.2.0.1.0.ja…

c++文件流读取一行_「软帝学院」Java挑战者专栏:IO流详解2

软帝学院笔记Day18IO流(字符流FileReader)1.字符流是什么字符流是可以直接读写字符的IO流字符流读取字符, 就要先读取到字节数据, 然后转为字符. 如果要写出字符, 需要把字符转为字节再写出.2.FileReaderFileReader类的read()方法可以按照字符大小读取FileReader fr new FileR…

“AI捡垃圾”上热搜了!46城垃圾分类将投200亿,你怎么看?

自动上海开始推行垃圾分类&#xff0c;上海人民就成为了广大网友的快乐源泉。据说有一位“机智”的程序员由于加班太忙&#xff0c;把垃圾寄快递到昆山去扔。快递员表示&#xff1a;天才操作&#xff01;并拒绝了他&#xff0c;然后花半小时教他垃圾分类。在哈哈哈的同时&#…

解决“Failure to find com.oracle:ojdbc6:jar”,手动安装ojdbc的jar包到maven私仓

在使用mvn进行编译的时候&#xff0c;遇到如下错误&#xff1a; Could not resolve dependencies for project com.bairong.platform:auth:jar:3.0: Failure to find com.oracle:ojdbc6:jar:11.2.0.1.0 in http://maven.aliyun.com /nexus/content/groups/public/ was cached …

2017双11技术揭秘—阿里数据库进入全网秒级实时监控时代

摘要&#xff1a; 2017双11再次创下了32.5万笔/秒交易创建的纪录&#xff0c;在这个数字后面&#xff0c;更是每秒多达几千万次的数据库写入&#xff0c;如何大规模进行自动化操作、保证数据库的稳定性、快速发现问题是一个巨大的难题&#xff0c; 这也是数据库管控平台要完成的…

混合云发展之路:前景广阔,巨头混战

戳蓝字“CSDN云计算”关注我们哦&#xff01;知名云管理服务商RightScale(目前已经被Flexera公司收购) 每年都会对企业使用云的情况进行调查&#xff0c;以此分析全球企业云的采用情况。RightScale 发布的2019年全球云计算市场调查显示&#xff0c;在众多云平台中&#xff0c;混…

2017双11技术揭秘—阿里数据库计算存储分离与离在线混布

摘要&#xff1a; 随着阿里集团电商、物流、大文娱等业务的蓬勃发展&#xff0c;数据库实例以及数据存储规模不断增长&#xff0c;在传统基于单机的运维以及管理模式下&#xff0c;遇到诸多如成本&#xff0c;调度效率等问题&#xff0c;因此&#xff0c;2017年首次对数据库实现…

unoconv 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件功能环境搭建

接上一篇&#xff1a; SpringBoot 在线预览 doc&#xff0c;doxc&#xff0c;xls&#xff0c;xlsx&#xff0c;ppt&#xff0c;pptx 文件 https://blog.csdn.net/weixin_40816738/article/details/102847228 文章目录服务器环境为linux1.切换到root用户&#xff1a;2.执行unoco…

2017双11技术揭秘—阿里巴巴数据库技术架构演进

摘要&#xff1a; 每年电商双11大促对阿里技术人都是一次大考&#xff0c;对阿里数据库团队更是如此。经过9年的发展&#xff0c;双11单日交易额从2009年的0.5亿一路攀升到2017年的1682亿&#xff0c;秒级交易创建峰值达到了32.5万笔/秒。支撑这一切业务指标的背后&#xff0c;…

SpringBoot 使用unoconv 在线预览 doc,doxc,xls,xlsx,ppt,pptx 文件

接上一篇&#xff1a;linux环境源码安装unoconv Linux环境_源码安装Unoconv实现文件在线预览doc&#xff0c;doxc&#xff0c;xls&#xff0c;xlsx&#xff0c;ppt&#xff0c;pptx 文件 https://gblfy.blog.csdn.net/article/details/103540694 接上一篇&#xff1a;linux环境…

解码2017双11:全球狂欢新记录背后的阿里云存储

摘要&#xff1a; 2017天猫双11再次刷新纪录&#xff0c;这背后是大数据的支撑和阿里云计算的能力的体现。手淘、天猫APP主站的所有图片和视频都存储在阿里云对象存储OSS之上&#xff0c;全球数以亿计的消费者&#xff0c;对这些商品的访问的流量和并发次数&#xff0c;比成交笔…

开发者,什么是你真正关心的问题?| AI ProCon 2019

2018 年&#xff0c;上千名开发者与上百名技术专家齐聚一堂&#xff0c;在 CSDN 2018 AI开发者大会上以“AI技术与应用”为核心&#xff0c;深度聚焦人工智能的技术创新与行业应用&#xff0c;真正做到了“只讲技术&#xff0c;拒绝空谈”。今年&#xff0c;在产业智能化的浪潮…

最大值_Leetcode2 | 滑动窗口最大值(Q239)

:)Sliding Window MaximumQ 239今天也是好心情Problem Description DifficultyYou are given an array of integers nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the w…

PCDN实现flash无延时直播的技术原理与优点

摘要&#xff1a; PCDN是以P2P技术为基础&#xff0c;通过挖掘利用边缘网络海量碎片化闲置资源而构建的内容分发网络&#xff0c;它具有低成本、高品质的特点&#xff0c;十分适用于视频直播这一业务场景。针对直播中延时的情况&#xff0c;PCDN也进行了一系列优化&#xff0c;…

CDN新品发布:阿里云SCDN安全加速开放公测

摘要&#xff1a; SCDN(SecureCDN)安全加速产品是CDN推出的一款集合安全能力的内容加速服务&#xff0c;用户就近取得所需内容解决因分布、带宽、服务器性能带来的访问延迟问题&#xff0c;提升网站访问速度。同时防护DDoS&#xff0c;CC&#xff0c;Web应用攻击&#xff0c;恶…

美企调查华为设备安全性,华为发长文质疑;摩根大通预计苹果2020年将推5G iPhone;谷歌拟联手Dish成立美国第四大运营商...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

实现mvcc_MySQL 的多版本并发控制(MVCC) 是干啥的?

点击蓝色“架构文摘”关注我哟加个“星标”&#xff0c;每天上午 09:25&#xff0c;干货推送&#xff01;来源&#xff1a;https://segmentfault.com/a/1190000037557620作者&#xff1a;白菜1031一、什么是多版本并发控制多版本并发控制 技术的英文全称是 Multiversion Concur…

网站访问速度提升200%以上,阿里云虚拟主机支持PHP最新版本

摘要&#xff1a; 日前&#xff0c;阿里云虚拟主机推出了新功能&#xff0c;支持PHP的最新版本 7.0和7.1&#xff0c;并支持用户在多个不同PHP版本之间切换。 PHP 作为最好的Web编程语言&#xff0c;最新版本已经更新到了7.0和7.1。阿里云作为国内虚拟主机的领头羊&#xff0c;…