简介: 第十一届中国数据库技术大会(DTCC2020),在北京隆重召开。大会以“架构变革 高效可控”为主题,重点围绕数据架构、AI与大数据、传统企业数据库实际和国产开源数据库等内容开展分享和探讨。在数据库智能运维专场上,邀请了阿里云数据库高级技术专家王涛为大家介绍阿里巴巴电商数据库上云的抉择、思考与实际。阿里巴巴电商数据库原先是在本人独立的IDC保护的,随同着阿里巴巴上云我的项目,数据库轻松实现上云。阿里云云原生管控以及云原生数据库技术能够帮忙业务实现平滑上云指标,进而实现资源最大化老本最优化的指标。阿里巴巴心愿利用阿里云的技术体系,帮忙客户大规模上云,打造本人的运维管控平台。

演讲嘉宾简介:

王涛,阿里云数据库高级技术专家,来自阿里云数据库产品事业部,喜爱并酷爱数据库。
职业生涯:程序员->DBA->DevOps架构师。2007年开始参加、设计、主导了阿里巴巴数据库体系演进,主导参加了阿里巴巴数据库体系演进,经验了数据库去IOE,规模化MySQL运维,阿里数据库异地多活,数据库上云等多个外围我的项目。目前为阿里云RDS管控负责人,为大家提供平安、稳固、经济、智能的数据库服务。

本次分享次要围绕以下四个方面:
一、阿里巴巴电商数据库利用场景介绍
二、数据库管控平台演进
三、数据库上云的抉择与思考
四、将来瞻望

一、阿里巴巴电商数据库利用场景介绍

1. 阿里业务个性介绍 —— RDS三节点企业版

什么是阿里巴巴电商数据呢?大家看到的淘宝、天猫、盒马、饿了么上的数据都属于阿里巴巴电商数据,这些业务说应用的数据库目前都在云上。阿里巴巴之前的数据库是RDS高可用版,采纳一主多备模式,然而发现实例无奈做到RPO为零。尝试应用了MySQL半同步等措施,但仍然无奈解决RPO为零的问题。其次是思考采取CAP实践或者BASE实践的问题。CAP指的是一致性(Consistency)、可用性(Availability)、分区容忍性(Partition tolerance)。但事实上数据库是无奈做到同时满足CAP中的三点个性的,只能满足其中一到两项。对于BASE实践大家或者不太熟悉,其外围在于能够做到两头不统一,A和B机器可能独自的时候不统一,然而一旦连上之后就会统一。数据管控零碎上通常恪守BASE实践,数据库更多的时候是抉择CAP原理。解决RPO等于0的问题有几种实现形式,首先是MySQL半同步、还有MySQL Group Replication,这是MySQL 5.7版本之后推出的新性能,然而要求三份数据一样,这个老本是无奈承受的。因而阿里逐步走向了RDS自研的方向。

阿里巴巴在抉择数据库协定也是在Paxos协定 or Raft协定中彷徨,最终抉择了Paxos协定。

阿里巴巴在抉择数据库协定也是在Paxos协定 or Raft协定中彷徨,最终抉择了Paxos协定。Why Paxos,No Raft? 从下图右侧能够看到后面都在提交数据X、前面来了数据Y,在S3中先执行了P3.1,P4.5,A4.5 Y,这意味着Paxos协定不肯定要有序,而Raft是有序的。Raft协定会要求S3先执行P3.1、A 3.1 X而后再执行P4.5,A 4.5 Y。这是Paxos协定和 Raft协定最大的不同。其次,Paxos协定有三种角色,提交者(Propose),接收者(Accept)以及Learn。阿里巴巴自研的RDS对这三种角色进行了转化,Propose叫做Leader,指的是可读可写的数据库节点,Accept叫做Follower,多数派,有全量的数据,能够将本人变成Leader。还有Logger(阿里自研角色),只负责接管日志,没有数据。Leader和Follower有全量数据,Logger只是日志接管节点,如此CPU和内存老本就会升高。Learn叫做Learner,属于观察者角色,有全量数据但没有投票权,即便Learner挂掉,也不会影响Learner少数提交。

2. 阿里业务个性介绍 —— 异地多活

家喻户晓,阿里巴巴的业务还有一个个性,就是异地多活。异地多活有两点益处,都是能够具备Region级别逃逸能力,用户能够在任意单元进行交易。下图右侧是User通过规定分流,在数据中心及其它单元都能够进行交易。异地多活能够做到程度扩大和异地容灾,在每年的双11能够长期建设站点,在9月份建好,在双11之后2周撤掉。

3. 阿里业务个性介绍 —— 数据库异地多写

那么RDS如何应答异地多活?异地多活意味着异地多写。下图展现了反对异地多活的数据库散布状况,首先要有一个核心DB,对应多个核心环境,别离是交易、购物车、商品等。核心数据库写的数据会到对应的Store,Store能够防止调多个线程时影响数据库性能的问题。Writer负责将数据写到对应的单元DB。单元DB中的数据通过Store回到核心的Writer,回到核心DB。能够发现数据的push出现星状,而不是网状,这是出于几点思考,首先很难做DTL,大家都在做DTL,很容易被复制;其次,星状构造能够至多保障一个节点数据是全局统一的,哪怕单元DB挂掉,在核心DB中也有全量数据。

4. 阿里业务个性介绍 —— 数据库异地只读

阿里业务个性使得数据库须要有反对异地只读的个性。Learner节点,具备全量数据,不影响Paxos协定,每个Learner节点都要灾备节点。基于数据库原生复制一致性高。要保障MySQL外部数据的一致性。因而数据库架构会如下图右侧所示,核心有三种节点:Follower、Logger、Learner,它们之间能够相互切换。每个单元有Learner节点和备用的Learner节点,单元利用也在单元Learner中。假如要做一级容灾,那么能够将单元写权重路由到核心,通过核心再Put到各个单元中,如此不仅能够做的全局一致性还能够做到异地多写。

二、数据库管控平台演进

1. 数据库管控平台定义

大家往往会误以为做数据库管控就是做数据库运维,但事实上并不是那么简略。数据库管控要做的事件有十分多:
首先,数据库高可用是独立的模块,业界罕用的有HA策略;数据备份,业界有备份策略,如全量备份、日志备份、数据轨迹备份等;数据库运维包含实例创立、实例变更、实例销毁、备库重大搭等;建设基础设施,如IDC、服务器选型、硬件运维、CMDB;数据库监控链路和数据告警链路两个不同的模块;还有数据库的计量计费;资源调度;控制台;数据库底层服务,如网关、服务发现等;数据库安全;智能数据库,如数据库智能诊断、数据库智能调参、性能调优等,也是目前次要的一个模块;数据巡检,如配置、参数、状态巡检;网络管理;故障演练;异地多活等等。

能够发现,即便粗略的列举完数据库管控平台蕴含的内容,也会十分多的模块,这导致平台的系统性、复杂性都很高,因为对数据库的依赖性很高,必然造成对其可用性的要求的晋升。那么这些要求应该如何满足?

2. 阿里巴巴数据库管控平台演进

阿里巴巴的数据库管控平台也是经验了若干代前辈的致力:
1) 2003年,过后并没有DBA这个职业。阿里从SA(系统管理员)团队拆出了一位同学做DBA,属于纯人工运维。
2) 2006年,开始应用业界风行的Nagios、Cacti等开源工具。
3) 2009年,阿里开始自研,自主研发了第一代运维零碎“北斗”,替换了Nagios、Cacti等开源工具。
4) 2010年,阿里巴巴开始进行去IOE工作,减速了管控的规模化运维,阿里第一代MySQL运维零碎诞生,“天机”。次要面向监控、可用性、备份。属于单体利用。
5) 2013年,随着业务规模不断扩大,阿里第二代MySQL运维零碎诞生,“DBFree”。次要面向自动化运维。
6) 2016年,阿里第三代数据库运维零碎“DBPaaS”诞生,满足异地多活、混合云等业务需要。
7) 2018年,底层IaaS上云,应用云资源。
8) 2020年,阿里电商数据库全面开始上云,开始应用云管控。所有外围数据库(交易、购物车、商品、优惠等)及外围链路都采纳云数据库专属集群(MyBase)模式。基于云原生数据库,构建了上万个节点,实现了RPO=0。

数据库上云的抉择与思考

1. 上云计划抉择 —— 数据上云计划抉择

数据上云计划有很多抉择。首先是数据上云形式的抉择,是应用逻辑迁徙还是物理迁徙?下图这两种数据上云形式的比照,绝大多数迁徙都是逻辑迁徙,应用的是MySQL/DTS的形式。然而阿里巴巴的业务个性导致数据规模的体量微小,须要应用物理迁徙,XtraBackup云原生物理迁徙。上云之后在2020年12月底,MyBase会推出物理机房push的上云模式。从下图能够发现迁徙的效率、数据对象平滑线、数据一致性、权限等相比于逻辑迁徙都是较高的。对于小规模数据上云时逻辑迁徙是足够的,然而大规模体量下,物理迁徙更适合。

2. 上云计划抉择 —— 网络计划抉择

在网络方面也有几种抉择,首先是ALB,它最好的长处是绝对成熟,然而也存在很显著的毛病,就是所有的包都要通过ALB,这不合乎极致性能要求。NGLB,能够解决ALB的痛点,只有首包通过XGW,前面的包不须要通过。然而在0点场景中,NGLB确实是扛不住的。NGLB也不反对ECS。ENI(弹性网卡),业界主推的弹性网卡计划。然而弹性网卡计划仍然有个问题,就是不反对物理机。这使得阿里巴巴又往ENI+RDS走了一步,然而目前还没有打算推出这个产品,而且因为网卡都是双向联通的,会存在平安危险。阿里目前应用的是ENI+MyBase计划,此计划的长处是利用和数据库在同一个网络立体,两头没有代理层,效率较高。但对于管控而言,复杂度晋升了不少。一个机器上有两块网卡,用户用到的网卡和物理机网卡。机器不得不做两次操作,别离是数据链路和管控链路。思考到数据须要双向联动和性能问题,所以应用了ENI,又思考到安全性问题,应用了ENI+MyBase形式。

3. 上云计划抉择 —— 网络拓扑图

如下图,最上层是数据库管控立体,下一层是RDS售卖区VPC,用户核心VPC与用户单元VPC之间通过CEN买通,使得全链路买通,这里应用了阿里云产品撑持整个云上架构。在云下,反对用户自建网络,通过专线买通用户自建网络与用户核心VPC,用户单元VPC。用户自建网络之间通过专线买通。保障整个数据库在用户之间是联通的。

4. 上云计划抉择 —— 裸金服务器

阿里巴巴没有应用一般的金属服务器,而是应用了裸金服务器。它们之间区别在于裸金服务
器最上层有一个叫做X-Dragon芯片,也叫MOC卡。机器自身是消耗资源的,但应用“神龙”服务器当前能够齐全剥离掉这部分,就是说如果买了96C,768G的机器,那么就是这么多的资源,不会再因为虚拟化的老本带来额定的开销。MOC卡还有一个作用是下层的组件,如VPC/SLB、EBS云盘都会通过MOC卡进行虚拟化,大大减少其它开销,也就是把一台机器变成和虚拟机一样的用户体验。

应用X-Dragon架构能够分钟级的去创立100%物理机性能和性能的云服务器,兼容VPC、SLB、RDS,撑持云盘启动和挂载云盘,兼容虚拟机镜像,保障物理机的性能和隔离性,。免去了人肉主动运维的事件。应用ECS还能够在宕机后,10分钟内原地拉起一台数据库,迁徙复原。

基于下图中几方面的思考,在比照了物理机,虚拟机KVM,裸金属服务器ECS之后,阿里巴巴抉择了裸金属服务器。运维自动化方面裸金属服务器撑持分钟级交付。应用MOC卡机器是无损耗的。在存储方面,裸金属服务器操作系统应用了云盘,能够疾速重置系统盘。在网络方面,物理机局部反对网络一致性。裸金属服务器计划和虚拟机都兼容ECS现有管控。

上云计划抉择 —— 存储抉择

上面简略讨论一下存储为何应用云盘?原来云盘最大的下限是16T,当初这个值曾经变成了32T,根本能够满足99%以上用户的数据库需要,而物理机可能最多只有6T。云盘能够反对分钟级备份,而之前的办法迁徙1T数据就须要3个小时。云盘分钟级实例Clone、分钟级实例跨Region Clone、数据在线扩盘。运维人员在设置数据库的性能时十分头疼,没有可选的方法,云盘可反对磁盘IOPS可配置,意味着能够运维人员强制设置数据库IO吞吐,目前最高的吞吐是500MB/秒。MySQL有double write的个性,云盘撑持MySQL原子写,少了一次write的开销。可靠性方面物理机总是没有分布式存储高。一个ECS,外面是POD,拉起一个容器,应用ESSD存储,最上面是分布式存储。

上云计划抉择 ——异地只读(GAN)

目前阿里云还没有凋谢异地只读的上云个性。阿里巴巴心愿做到各个Region独立,次要是基于Global Database Network解决方案。上海的APP通过MaxScale到上海的数据库,同理,深圳的APP通过MaxScale一部分分流到原生的数据库Leader中,一部分到深圳的数据库,从而实现异地多写。

7. 上云计划抉择 —— 充分利用MyBase个性

为什么应用MyBase? 如下图,买了一对云主机,左侧备份几个Leader,几个Follower,右侧同理。节点之间做到亲和、穿插、超卖、弹性。MyBase能够做到穿插,两主两备,性能最好,其次是亲和,购物车的数据和其它数据库在一起,但又相互独立。因为业务个性须要进行长期扩容,这种状况十分常见,而MyBase能够做到动静的调参。因为底层应用了云盘,能够满足弹性需要。

8. 上云的计划9大个性

总结而言,上云的计划别离要满足以下9个个性:

  • 高可用:数据库主备架构,高可用性保障,宕机主动切换、修复。
  • 高牢靠:数据库多正本保障、数据同步可调一致性保障(RPO优先)、三节点企业版RPO=0保障。
  • 高性能:内核性能晋升,相比开源版本MySQL(1.5x)Redis(3x)。
  • 高平安:SSL链路加密、TDE落盘加密、审计日志体系等。保障事先,事中,预先的数据库安全。
  • 运维能力:备份复原、监控报警、智能运维诊断等全套数据库运维解决方案。
  • 自主可控:凋谢OS、数据库残缺权限;凋谢数据库管控平台标准化底层接口;用户可深度自定义数据库治理逻辑。
  • 混部:混合部署MySQL、Redis等,并提供云数据库治理个性。
  • 资源调度:用户专属一片物理主机资源池,可自定义实例调配、散布策略,高度适配业务需要。
  • 超配能力:用户物理资源100%隔离,反对CPU、内存(Redis)、空间等资源的超配。

数据库上云是出于几点思考,首先自建数据库不反对很多的数据库管控平台个性,RDS反对局部个性,如弹性网卡等。而MyBase是在RDS根底之上衍生进去的产品,目前根本都能够反对这9个个性。

四、总结及将来瞻望

1.上好云,用好云

阿里巴巴数据库上云是思考到业务自身场景,还有云原生技术,以及促成阿里云外部革新等起因。目前2020年双11期间交易额达到了4982亿,顶峰订单58.3万笔/秒,云原生数据库能够很平滑的反对这些业务。阿里巴巴电商数据库上云不仅仅是把数据库搬上云,更多的思考是如何上好云,用好云。为了反对阿里巴巴的业务,阿里云外部做了很多的革新。通过应用阿里云云原生管控以及云原生数据库技术帮忙业务实现平滑上云指标,进而实现资源最大化老本最优化的指标。

2. 将来瞻望

数据库上云会经验几个大的阶段。最早是物理机阶段,之后是存计拆散,阿里巴巴在2016年就开始存计拆散,之后到当初的MyBase状态。置信之后在多样性方面会有很多倒退,将来不仅仅应用MySQL这一种数据库,还会有很多OLTP的数据库。最初,数据库的智能化肯定是将来的大趋势。

作者:stromal
原文链接
本文为阿里云原创内容,未经容许不得转载