【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

大促都“内卷”了 ,数据库工程师如何顶住 10 倍流量压力?

  • 2021-11-08
  • 本文字数:2739 字

    阅读完需:约 9 分钟

大促都“内卷”了 ,数据库工程师如何顶住10倍流量压力?

一年一度的 11.11 又双叒叕来了,给技术人最好的礼物就是技术指南! 而经过这些年的发展,购物节早已不仅仅局限于电商行业,现在各行各业其实都会采用类似方式做运营活动,汽车界有 818,小米有米粉节等等,这对包括数据库在内的基础软件提出了很多新挑战,同时也积累了诸多最佳实践。

 

在 11.11 到来前,PingCAP 与汽车之家、易车网、京东、中通等用户展开一系列深入探讨,希望为大家揭秘逐年飙涨的销量背后隐藏着什么样的技术难题?用什么技术架构才能平稳地抗住流量洪峰?


京东 11.11 的技术挑战

 

每年的 618、11.11 对于京东而言都是一次大考,而京东云作为京东集团技术保障的基石,在此期间需要扛住京东零售核心业务和京东物流系统 PB 级别的数据增长压力。面对每年京东 11.11 订单量和成交额迅猛的增速,京东云数据库作为大部分京东背后业务系统的核心,压力自然不小。

 

京东云资深产品经理杨牧对此深有感触:许多和京东 11.11 有关的业务系统都需要数据库的支持,如分析看板、报表数据、运单数据等等。受商品活动和优惠时间的影响,用户下单高峰往往在固定时间段,这些数据库的访问量会急速上升。

 

他所在的数据库团队,从后台监控可以很明显地看到一个个峰值。当京东 11.11 全面开启的瞬间,海量消费者和订单涌入,大量品牌和商家迅速创造了新的纪录,CPU、QPS 等也开始飙升,有时候持续若干分钟,有时候则会持续数小时不等。

如何做好保障?

 

京东云数据库需要在京东 11.11 期间平稳支撑京东集团已经上云的上千个核心业务系统,前期的预案准备和压测、预案演练和实时监控都是必不可少的环节。而京东云数据库团队对此已经积累起丰富的经验,他们将备战分为 8 个步骤:(1)识别保障范围;(2)业务量预估及预检查;(3)预案整理;(4)监控及报警梳理;(5)业务压测;(6)预案演练;(7)11.11 值班;(8)技术复盘。

 

根据以往经验,杨牧认为京东 11.11 时的业务量会达到平时的 10 倍之多。这个数据量的峰值增长必须准备额外的资源来满足,但由于京东云的数据库已经跑在云上,他们只需根据预先估计好的数据量做好资源规划和分配,并做足压力测试,确保后面数据库的存储容纳量和性能就可以满足要求。到流量洪峰真正到来时,往往只需要静静等待就会平稳度过,并不会出现什么极端情况。

 

特别像京东物流大部分业务已经上云,保障和准备其实是无时无刻都在进行中。云数据库通过高可用架构、自动故障切换、弹性扩容机制等一系列数据库级别的技术手段,保证数据可备份,故障可切换,增量可扩容,从容应对京东 11.11 期间海量数据压力。

 

而在应用 TiDB 后,这些工作变得更加简单。TiDB 采用的分布式架构支撑海量数据扩展,可以有效地解决单机 MySQL 容量和性能的瓶颈问题。杨牧形容,在扩容时只需根据业务方需要提前对 TiDB、TiKV 进行扩容。而扩容的工作也仅需在控制台上点一点鼠标,然后安心地喝着茶等待就行了,大大提高了 DBA 的工作效率。同时,TiDB 是开源的,不存在技术锁定问题,也更容易在云上使用,甚至跨云部署。

 

为了降低集团内部各团队使用 TiDB 的技术门槛,京东云与 PingCAP 联合推出了云上的分布式数据库 —— Cloud-TiDB,在京东云上提供 TiDB 服务。这样一来,业务方所有和数据库服务有关的事情不再需要设置自己的 DBA,完全委托给京东云即可。

 

今年的 京东 618 和 11.11 中,Cloud-TiDB 就已成功应用于京东物流内的物流业务费用系统、物流大件分拣系统、运单计提明细系统等多个业务中,应用规模总体接近 6000 核,达到 30 个 TiDB 集群,在成本、效率和体验三大方面带来了大幅提升。杨牧笑言,研发再也不用整天忙着优化系统了,可以早点回家。运维同学也不用再熬夜支持系统运维,头发都可以少掉几根。

物流某业务系统

 

11.11 中,大家买买买后最期盼的事情就是收到快递。而在京东中,京东物流就承担了将下单物品送到买家手中的职责。可想而知,京东物流业务系统的数据量肯定非常大,几个主表的数量分别是 20 亿、50 亿和 100 亿,系统上线半年后数据翻倍到了 220 亿。原先 MySQL 分库分表的架构就遇到了一些复杂的 SQL 不支持、跨分片统计报表难于实现等问题。


系统迁移到 TiDB 之后,整体的性能表现优秀,写入和更新的效率在 100 毫秒左右,查询和 Sum 查询只有二三十毫秒。一个几百亿数据量的系统从 MySQL 迁移到 TiDB,实际业务代码零修改,系统只是更换了 JDBC 连接的用户名和密码,真正地实现了从 MySQL 到 TiDB 的零代码修改和无缝迁移。TiDB 和 MySQL 良好的兼容性,降低了用户的试错、测试和迁移的成本,且收益周期短,见效快。

 

此外,杨牧特别指出,迁移到 TiDB 还给业务方带来一个意外的惊喜。如果按两年的周期计算,TiDB 的使用成本只有 MySQL 的 37%。这主要是因为 TiDB 对数据的压缩率非常好。比如在 MySQL 里数据占到 10.8 TB,迁移到 TiDB 之后只有 3.2TB,而且这还是三副本的总数据量,TiDB 实实在在地帮助整个业务部分极大降低了 IT 的投入成本。

物流大件分拣系统

 

京东物流大件分拣系统的一些实时看板和核心报表跑在 MySQL 上。随着数据量增加,而且 SQL 比较复杂,报表和看板的性能比较低,用户体验不佳。分库分表的方式对代码侵入性比较大,架构需要大幅调整,风险较高。



在 618 期间,京东物流采用 TiDB 支撑业务的实时看板和核心报表,在 MySQL 和 TiDB 之间,用自研的蜂巢系统进行数据的准实时同步。从 MySQL 迁移到 TiDB 后,总共数百个指标,整体性能实现了 8 倍提升。

运单计提明细系统

 

运单计提明细系统用来记录部分运单的明细数据,每天的数据增长在千万级别,单表最大记录接近 200 亿条。从数据量看用 MySQL 难以支撑,京东物流尝试过使用 Presto,但使用成本比较高,后来使用 ElasticSearch 做查询,但也存在着不稳定的情况,维护工作量很大。

 


业务系统迁移到 TiDB 之后解决了海量数据的问题,TiDB 可以毫无压力地支撑百亿级的数据量。TiDB 成本比起以前使用的 MySQL + ElasticSearch 方案降低了 30%。TiDB 性能满足业务的要求,从百亿的单表里面查询出业务数据的 TP99 大概在 500 毫秒左右。此外,TiDB 整个表结构的调整修改操作非常简单,带来了运维敏捷和成本下降。

 

经过 618 、11.11 的严酷考验,TiDB 在京东集团的多个 0 级系统中应用稳定,没有出现任何事故,各业务方反馈都比较好,已经成为集团内部的标杆案例。这也给了杨牧他们充足的信心,在接下来的时间中可以继续在集团内部推动使用 TiDB ,以技术的进步推动业务发展,预计 2021 年底规模还将再翻一倍,达到 10000 核规模。

 

大促对于企业而言,除了支持业务创新,也是一次对自身技术架构的大练兵和全链路演练。通过大促的极致考验,企业的 IT 架构、组织流程、人才技能都获得了大幅提升。而在大促中的经验和思考,也会加速企业日常的业务创新节奏,提升技术驱动的创新效率,打造增长新引擎。

 

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2021-11-08 15:169109

评论 1 条评论

发布
用户头像
牛逼
2021-12-14 15:09
回复
没有更多了
发现更多内容

STM32单片机上RGB数据转为JPEG格式办法

DS小龙哥

6 月 优质更文活动

探讨开源法律共识|2023开放原子全球开源峰会开源法律与合规分论坛成功举办

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 开源知识产权

《中国电子报》专访简丽荣:“模型热”将引发云计算与数据库行业大变革

酷克数据HashData

WiFi7来了,WiFi6会下岗吗?

脑极体

wifi

深度学习应用篇-元学习[13]:元学习概念、学习期、工作原理、模型分类等

汀丶人工智能

人工智能 深度学习 元学习 元强化学习 6 月 优质更文活动

万物云原生下的服务进化 | 京东云技术团队

京东科技开发者

Java 云原生 镜像 GraalVM 企业号 6 月 PK 榜

TiDB 7.1 LTS 发版:为关键业务提供业务稳定性和多租户场景支持

PingCAP

数据库 开源 TiDB

助力数字门户搭建--小程序容器技术

没有用户名丶

用友发布《数智化赋能泛地产行业高质量发展白皮书》,推动地产行业数智化3.0

用友BIP

数智人力,打造伯恩光学人力资源管理新生态!

用友BIP

人力资源 数智人力

linux常见命令总结

Studying_swz

6 月 优质更文活动

常用的表格检测识别方法-表格内容识别方法

合合技术团队

文字识别 表格识别 表格检测

Windows控制关机锁屏

代码的路

C语言编程—内存管理

二哈侠

C语言 内存管理 6 月 优质更文活动

阿里云PAIx达摩院GraphScope开源基于PyTorch的GPU加速分布式GNN框架

阿里云大数据AI技术

人工智能 机器学习 gpu GNN 企业号 6 月 PK 榜

易安联新品EnDTA天织·DNS威胁分析平台,开放公测!

权说安全

DNS 零信任 威胁检测

手把手教你实战TDD | 京东云技术团队

京东科技开发者

测试 DDD TDD 企业号 6 月 PK 榜

直播App必看!消息收发技巧,让你实力up up!

山东布谷科技

App 源码搭建 视频语音直播app开发 开发软件 直播APP源码

大促质量备战之三化战役:“常态化、精细化、一体化” | 京东云技术团队

京东科技开发者

测试 质量 电商大促 企业号 6 月 PK 榜

Django笔记四十二之model使用validator验证器

Hunter熊

Python django model validator

Capture One Pro 23 for Mac(Raw图像处理软件) 中文最新版

背包客

深度学习 macos Mac软件 图像处理软件 Capture One

开源赋能,普惠未来丨浪潮数字企业亮相2023开放原子全球开源峰会

科技热闻

消失的死锁:从 JSF 线程池满到 JVM 初始化原理剖析 | 京东云技术团队

京东科技开发者

JVM 线程池 jsf 企业号 6 月 PK 榜

小程序的快速渲染机制是如何实现的?

Onegun

小程序 移动应用开发 小程序容器

综合指南|如何为平台工程选择关键 KPI

SEAL安全

KPI 平台工程

Disk Xray for Mac:Mac磁盘精准分析工具

背包客

macos Mac软件 MacBook Pro Mac磁盘管理 Disk Xray

C4D主流渲染器,到底选哪一款?

Finovy Cloud

2023 年最适用于工业物联网领域的三款开源 MQTT Broker

EMQ映云科技

物联网 mqtt mqtt broker

北京国际开源社区正式启航

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 北京国际开源社区

线性代数(一)矩阵和方程组

Studying_swz

6 月 优质更文活动

大促都“内卷”了 ,数据库工程师如何顶住10倍流量压力?_AI&大模型_PingCAP技术团队_InfoQ精选文章