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

蘑菇街 11.11:流量超过预期,系统曾被冲垮

  • 2014-11-12
  • 本文字数:2276 字

    阅读完需:约 7 分钟

以导购起家的女性时尚电商蘑菇街目前已经上线自己的电商交易平台,全面转型为垂直电商。据官方数据显示,蘑菇街双十一交易额已突破一亿元,并提前完成了此前的预定目标。蘑菇街今年第一次自己做交易,虽说总的交易量只有天猫几分钟的量,但峰值时期系统的压力同样不小,并且他们也才刚刚开始。那蘑菇街是怎么准备这场战争的?相应做了哪些预案?带着这些问题,InfoQ 专门采访了蘑菇街的 CTO 岳旭强。岳旭强于 2004 年加入淘宝,参与并主导核心业务系统搭建,2007 年开始负责淘宝服务化体系建设。2010 年底离职创业,组建并带领蘑菇街技术团队,支撑蘑菇街的高速发展和业务转型,有丰富的架构设计和技术团队管理经验。

InfoQ:请介绍下双十一当天蘑菇街的交易情况,当天有多少的成交额?

岳旭强:截至 11 月 11 日 24 时,蘑菇街总成交额超过 3.37 亿,移动端成交占比持续稳定在 75% 以上,客单超过 250 元。双十一当天的成交额近 2 亿,虽然也就天猫几分钟的交易量,但是我们还是很激动,今年也是蘑菇街新的开始。

InfoQ:嗯,其实也很不错,蘑菇街第一次做交易就能交出了这么好的一份答案。双十一高峰时期系统的压力也不小吧,为了保证系统在这样的短时高并发场景下的稳定性以及高可用性,蘑菇街在架构方面做了哪些调整?

岳旭强:我们从去年年底一直到今年上半年一直在做架构方面调整。以前蘑菇街整个架构是混在一起的,没有什么架构可言,因为那个时候最主要的诉求就是灵活、简单、快速实现需求,所以技术方面没有太多东西。可以说从 2010 年底开始做蘑菇街一直到去年下半年,整个架构上没有太大的优化和调整,所有的东西就跟小网站一样的,代码都写在一起,只有一个大的代码库,也没有什么太多分层。

随着蘑菇街从导购网站向垂直电商的转型,系统也就开始变得越来越复杂。从去年年底开始,我们就着手架构方面的调整。其实所有的系统都一样,当大到一定程度后所要做的第一件事情都是拆分,也就是微服务化。拆分主要是从两个层面去做,我们先从垂直层面(业务)做了一些拆分,把交易、资金、评价、商品等服务化,每一个是单独的系统,系统与系统之间通过接口通信。

水平层面的话,我们把比较重要的应用的核心服务抽取出来,比如说资金业务、交易业务、商品业务。以前它们是一个单独的系统,可能从 Web 访问到中间的业务处理,再到 DB 都是在一起的,拆分之后,Web 服务和业务处理就被隔离开来,业务处理的服务也会被其它业务调用。拆分之后中间也就会用一些异步的消息机制来提高系统的稳定性。

拆分之后系统之间相互隔离,一定程度上提高了系统的稳定性。比如这次双十一活动中,11 号凌晨的时候活动系统垮了,但只是活动的相关业务不能访问,其它的业务不会受影响。

当然为了保证拆分后系统的稳定性,我们也开发了很多基础的组件,比如我们跨语言通讯的框架、缓存集群方案、内部系统负载均衡方案、数据库中间层。

InfoQ:交易场景下,数据库的读操作远大于写操作,这个时候数据库的负载也特别大。针对这次双十一,蘑菇街在数据库方面做了哪些优化?

岳旭强:数据库这块其实我们也是按照服务、业务来拆分的,比如负责交易的团队会全权负责交易系统的数据库,交易的数据库是独立的一个集群,使用的是 MySQL,有做读写分离,主要是使用我们自己研发的中间层 donquixote(堂吉柯德),它的主要功能是连接池、屏蔽非法 SQL、读写分离。

针对这次双十一,我们主要做了两件事,一个是硬件层面的扩容。一个是数据库 SQL 查询优化,我们大概花了两个月时间,把所有的 SQL 查询全部优化了一遍,虽然每一个都比较细小,但是最后综合起来的效果非常明显。同样的配置下,没有优化之前每秒处理的订单数大概是 900 单,优化之后每秒的可以处理的订单翻了一倍,1700 单。

InfoQ:秒杀这样的场景下,蘑菇街是如何保证数据的一致性的?

岳旭强:这个其实蛮麻烦的,以前蘑菇街做导购社区的时候,一致性的问题基本不用考虑。但是做交易的话,这个事就变得非常复杂,
秒杀这样的场景下,主要需要解决超卖和错单的问题。解决超卖,我们主要将秒杀交易全部异步化, 库存、优惠券的扣除都是异步队列消费时处理,同时保证最先入队的人先下单。解决错单的问题,会在交易下单时, 第一步 push 异步队列, 第二步日志打点, 后台处理同时校验日志、队列中的消息,以保证数据的正确性。

InfoQ:在双十一之前蘑菇街应该也做了很多次演练,双十一高峰期有没有出现演练时没有预想到的情况?

岳旭强:哈哈,当然有。一开始我们根据去年的交易情况以及最近的业务量对双十一的交易量做了个预估,我们觉得一天 1 个亿差不多了,数据库按照六七月份数据库的线上峰值为基准,放大八倍压测,Web 服务器按照十五倍压测,这是双十一前的准备。但是没想到 10 号凌晨就达到我们的预案值了,当时很紧张,但是也很开心。我们先是紧急做了处理,砍掉了很多短期影响不是很大的功能和业务,尽量的优化和减少系统的压力。接下来的一天时间又对数据库做了优化调整,包括限流等应急措施。Web 那块我们觉得 8 台机器问题不大,并且扩展也很容易之前的准备也比较充分,所以也没有把精力放在这上面。

11 号还没到 0 点的时候,11:56,活动系统就被冲垮了。限流保护都没有产生作用,瞬间被冲垮了,因为限流是需要延后一小点时间,数据过来后才做限制操作的,当时还没来得及,几台机器就垮掉了,这是没想到的。当时我们加了几台机器,终于在 0:11 的时候恢复正常了。第二天我们回放当天的日志,活动系统超过了我们当时预案的 10 多倍。这 10 多分钟,按照 10 号的量,可能损失就有 1000 万。

这两天我们也会复盘,总结一下这次遇到的问题,后续也希望能分享给 InfoQ 的读者。

2014-11-12 09:256512
用户头像

发布了 219 篇内容, 共 134.9 次阅读, 收获喜欢 190 次。

关注

评论

发布
暂无评论
发现更多内容

钟燕清 | AI+开源时代,金融行业的机遇与挑战

开源雨林

灞桥康养论坛成功举行 多方聚力共创康养文旅产业高质量发展新篇章

联营汇聚

JavaScript 循环:拥有最佳性能的最佳实践

树上有只程序猿

JavaScript break continue

PAI BladeLLM推理引擎: 超长上下文、更高性能

阿里云大数据AI技术

阿里云

浅谈USDToch(优多趣)模式系统开发源码搭建(成熟技术)

西安链酷科技

DAPP系统开发

实时云渲染,元宇宙核心支持技术之一

3DCAT实时渲染

元宇宙 实时云渲染

区块链链游合约系统开发项目模式技术方案

西安链酷科技

DAPP系统开发 区块链开发DAPP开发

哈希竞猜游戏开发源码部署方案(成熟技术)

西安链酷科技

哈希竞猜 区块链开发链游开发

国产自主研发,完全可控 IDE!

桑小榆呀

推进史

使用 Amazon EC2 预留实例最大限度地节省成本和提高灵活性

亚马逊云科技 (Amazon Web Services)

云计算 sdk Amazon EC2

云原生DevOps思考

薛猫

DevOps 云原生 kubernetes 运维

HarmonyOS 管理页面跳转及浏览记录导航

HarmonyOS开发者

HarmonyOS

Mysql中的InnoDB和MyISAM

程序员万金游

Java MySQL 程序员 后端

穿越人海遇见你:精细化运营神器Mobpush是如何实现智能化精准投放的

MobTech袤博科技

人工智能 大数据 智能投放 智能推送

2023数字化转型发展大会暨首届数字原生大会在京召开

信通院IOMM数字化转型团队

数字化转型 IOMM 数字化转型峰会

香港多IP站群服务器,构建多站点网络的强大支持

一只扑棱蛾子

站群服务器

数字货币swap交易所逻辑系统开发分析方案

西安链酷科技

交易所开发 swap链游 swap开发

亚马逊云科技 Amazon Lightsail :在云服务器上使用 14 个区域个全球控制台

亚马逊云科技 (Amazon Web Services)

Amazon EC2

DAPP去中心化模式应用开发 | 智能合约模式系统搭建

V\TG【ch3nguang】

融云观察:AI Agent 是不是游戏赛道的下一个「赛点」?

融云 RongCloud

AI 娱乐 社交 AIGC AI Agent

使用 Amazon Lightsail 的优势:为初创企业简化基础架构并提升运营效率

亚马逊云科技 (Amazon Web Services)

数据库 Linux API

《可观测性成熟度模型白皮书》正式发布,龙蜥致力打造更好用户体验

OpenAnolis小助手

开源 云原生 可观测性 白皮书 龙蜥社区

搭建期货合约币币交易所,挖矿APP开发

V\TG【ch3nguang】

OpenHarmony AI框架开发指导

OpenHarmony开发者

OpenHarmony

微服务是个坏主意吗?

这我可不懂

微服务 单体

亚马逊云科技 Amazon Lightsail :一种在云服务器上运行容器的简单方法

亚马逊云科技 (Amazon Web Services)

容器

Proxyman for mac(HTTP调试代理工具) 4.11.0永久激活版

mac

苹果mac Windows软件 Proxyman 网络代理工具软件

程序编译运行时,提示找不到某些组件

矩视智能

机器视觉

蘑菇街11.11:流量超过预期,系统曾被冲垮_DevOps & 平台工程_小盖_InfoQ精选文章