阿里云数据库已连续多年稳定支撑天猫双11,历经极端流量场景淬炼。除了保障稳定顺滑的基本盘,今年大促期间数据库通过全面云原生化,大幅提升用户体验,让技术帮助业务产生更有价值的消费者体验,持续通过技术创新赋能用户,引领技术发展路径。
双11已圆满落幕,但技术的探索,仍未止步。
“阿里云数据库” 公众号特此推出《好科技的新起点——2021双11阿里云数据库技术揭秘》系列干货文章,为你讲述年度“技术大考”背后的故事,敬请关注!
前言
阿里云一站式在线数据管理平台DMS,从最早的服务于集团内部业务的各个工具型产品,经历了阿里集团数据库各个时期的技术及架构演进、历年双十一的大促考验、云原生转型,演进到今天以统一的云架构,向阿里集团内部以及外部云客户提供一站式的数据管理服务,产品不断的拓展边界,提升技术深度,将阿里集团超大规模数据的管理方法,推向和服务于所有开发者。
关键组件
数据管理DMS: 作为数据库团队2009年上线给研发同学使用的一站式数据库开发平台,为集团、蚂蚁以及公有云客户提供数据库实时访问、数据库研发规范落地、数据安全管理以及安全生产等能力。同时结合数据库备份DBS能力为用户提供一站式公共云,混合云,线下自建数据库备份,除了稳定的备份恢复外,在2019年发布了云原生CDM(Cloud Data Management)能力,实现备份数据秒级恢复,支撑了金融、教育、游戏等广泛的客户业务场景。
数据备份DBS:是数据库团队2017年发布的数据库备份产品,为用户提供一站式公共云,混合云,线下自建数据库稳定的备份服务,同时在2019年release了阿里云第一款云原生CDM产品,利用云的特性帮助客户数据秒级恢复,秒级恢复产品已经支撑了教育,游戏,等重要客户场景。
数据传输DTS:(Data Transmission Service,简称DTS),从2011开始支撑阿里集团容灾到异地多活到阿里云官网上云,于2015年4月命名为DTS完成产品化,是全球第一个公有云数据传输产品,融合了阿里集团的性能和业务特点与公有云的数据源多样性。集数据迁移、订阅及实时同步功能于一体,能够解决公共云、混合云场景下,远距离、秒级异步数据传输难题。其底层基础设施采用阿里双11异地多活架构,为数千下游应用提供实时数据流,已在线上稳定运行6年之久。DTS支持关系型数据库、NoSQL、大数据(OLAP)等数据源,在传统商业数据库迁移尤其是Oracle、DB2 大机&小机系列等商业数据库具备兼容评估转换和实时同步能力。
DMS 总述
DMS : 结合数据管理、数据备份、数据传输的技术沉淀,统一打造为全新DMS产品,为用户提供一站式的全域数据资产管理、数据库设计开发、数据集成与开发的全链路能力,在2021双十一期间,为集团用户提供全方位的数据资产管理服务。
业务挑战
- 部分业务由于历史数据堆积,使得存储水位过高、表越来越大RT上升,面对这类问题DMS提供了历史数据清理的功能,能够让业务无感的进行历史数据的删除清理,部分场景在清理完成后碎片率大增,存储回收效果一般,面对这种情况,研发需要自行选择一个时间做优化表操作,操作审批繁琐,如何简化操作降低存储水位变成了一个业务侧迫切希望解决的问题。
- 在数据库的变更中,DDL的变更是风险较高的一个操作,特别在分库分表的场景下如何控制DDL变更风险是业务同学对DMS提出的问题。
- 数据订阅作为众多中台产品的上游,提供了诸如应用缓存失效、广告推送、搜索推荐以及双十一独有的GMV大屏等业务场景的功能基础,今年新引入的库仓一体化架构OLTP到OLAP能力,为手淘交易订单搜索功能带来的能力提升和用户体验大幅优化
- 手淘订单搜索,用户订单搜索命中率低,用户可能只记得商品名的模糊信息和商品店铺的信息,老链路的订单搜索只能根据查询关键字在数据库进行like匹配,如果输入的关键词不准确可能搜不到订单;如果搜索词过短,用户查找订单时间长,用户为了增大命中率,会输入较短的关键词,这样查询的订单数量过多,同时搜索的结果又没有分类,用户要在搜索结果中找目标订单,只能滑动下一页,查寻时间长,只能在双十一大促期间进行功能降级。
- 2021年双11大促,首次所有集团数据库100%上云,海量实例同时部署在中心站,集团作为VIP客户和公有云客户同region部署,这样会使得备份存储的流量压力非常大,如果没有相关的技术方案,会导致集团上云和公有云客户相互影响,而增量备份又是这里面的核心问题,当备份存储流量压力非常大的时候,增量数据堆积会导致客户日志磁盘空间打满导致实例RO,以及无法恢复到任意时间点。
技术升级
无锁数据变更、无锁表优化
通常在历史数据删除场景下,delete语句会携带时间等条件,而时间条件并不一定存在索引,会导致删除速度极慢,且占用数据锁;同时如果删除数据量较大,会受binlog事务大小约束导致失败。
DMS通过将大事务转化为小事务的方式,控制执行时间、控制事务影响行数,通过优化后400GB的表删除一千万条数据约40g,缓慢删除占用时长5个小时,0条慢SQL。
通过无锁数据变更完成对超大表的历史数据清理之后,再通过DMS的无锁变更技术,重新对表数据做一次搬迁,达到优化表空间的目的。
DDL灰度变更
业务同学在对数据表进行结构变更时,通常DDL是一个整体事务,一旦出现问题整张表不可访问。而在分库分表场景下,在逻辑表维度上的业务被拆分为了多份,如果仍然整体进行变更,将不会发挥分库分表在变更上的优势。
利用这些分片来降低变更风险进行灰度是一个比较好的选择,通过灰度策略控制,定义分库分表的灰度策略为单表级别灰度、单库下灰度、单实例下灰度三种方式。有了灰度,用户结构变更更加淡定。
高效数据备份
大促峰值日志备份PITR能力不降级,DMS对集团XDB产生Binlog的数据进行了压缩裁剪,同时结合集团XDB多副本节点的日志特性做到只备一份日志的能力。
流量分流:DMS对XDB的日志进行实时备份,在内部加了流量规则,可以将部分XDB Cluster的实例备份到其他存储上,达到分流的作用。
少流量产生:DMS对XDB产生的binlog数据进行了压缩裁剪,只备份了XDB leader上面的数据,由于XDB leader&follower上binlog完全一致,所以在异常恢复流程,只要找到对应的binlog断开的位置,衔接上follower的日志即可。
流量隔离:考虑到集团上云客户和公有云客户在备份流量和数量上的相互影响,所以对集团上云全量/增量,公有云其他客户全量/增量,进行了bucket隔离,同时对全量bucket进行了业务流量预测的限流,保证了公有云客户&集团上云客户增量有较大的上限,不至于流量不够导致无法满足秒级RPO。
0点峰值表现:第一次实现了双十一大促日志备份不中断,保障了秒级RPO,集团峰值流量日志写入备份存储流量和总流量达到了数百Gb/s,保证了实时写入RPO。
库仓一体技术架构
之前是通过数据库T+1到数据仓库再回流到数据库展示相应的计算结果,链路较长,维护使用成本高,数据延迟大,高峰期对源库影响大,往年的大促过程淘宝的历史订单搜索功能是限流使用的。
今年通过DMS+ADB一键实现的库仓一体化架构实现了实时的数据获取、实时传输与加工、实时查询与展现,实现了全实时支持多维数据分析场景的交易订单搜索能力,0点峰值DMS写ADB在RPS百万级别的流量下全程毫秒级延迟,ADB实时查询结果毫秒级返回。经过库仓一体技术架构升级后,手淘订单搜索增加了“猜你想搜” 和 “类目搜索”的能力:
- 猜你想搜:根据搜索词推荐联想词和店铺名,用户可以点击联想词和店铺名进行搜索,增加用户搜索的命中率;
- 类目搜索:增加了按店铺名进行搜索的功能,使得用户搜索得到的订单列表按类目进行分类,用户订单根据tab页分类,减少每个tab的下拉数量。
最终通过库仓一体架构,解决了过去大促功能降级给用户带来的使用影响,在本次双十一过程中的功能完全开放使用。
库存业务
基于阿里巴巴单元化架构的基础,用户购买商品时下单流量会被分流到各单元。DMS数据实时同步能力保障了各单元间数据库中数据的实时一致,同时DMS提供的数据实时订阅功能是库存应用基于数据库变化实时更新缓存服务的功能基础。这些能力保证了用户在客户端的下单流程中对于剩余库存所见即所得,提升了整个购物体验。
DMS在库存业务百万级别RPS的流量压力下,保证了全链路高效稳定。
交易&GMV大屏
在交易业务上,DMS为面向社会的GMV媒体大屏和面向内部高管的大屏提供最上层实时数据消费的能力。链路上的问题会直接影响到大屏上的数据准确性,为了保障稳定性,DMS在交易链路上采用了全链路主备服务的双活架构,最终在交易峰值百万级别RPS的流量下保障了GMV全链路高可用。
DMS支撑大促小结
DMS在2021天猫双十一期间:
- 用数据脱敏方式保护了近50万次敏感数据的动态实时访问和静态访问,首次上线的精细封网管控,使得安全生产效率提升50%,有效拦截大查询千余次,拦截DDL变更百余次。
- 支撑了100%集团上云实例恢复秒级RPO的功能,引入技术方案将流量带宽占用降低了50%,首次支持使用非OSS存储分担大促峰值流量,保证了峰值流量增量备份不降级,全面保障了集团上云核心交易场景可以随时将数据恢复到任意时间点,提升了整个双11的稳定性。
- 全网同步链路上万条,订阅任务几十万个,大促0点流量峰值期间,数分钟内累计从源库拉取PB级日志数据,累计向目标库写入上千亿条事务,期间全网任务无中断,核心任务无延迟。