战疫期,钉钉如何扛起暴增百倍的流量?

简介: 疫情期间,在线教育、在线办公需求持续井喷,钉钉作为很多企业首选的在线办公软件,用户量激增,特别是钉钉视频会议、直播的需求随之飙升。同时,钉钉为了响应教育部门“停课不停学”的号召,宣布老师们可以免费试用钉钉在线课堂。

​疫情期间,在线教育、在线办公需求持续井喷,钉钉作为很多企业首选的在线办公软件,用户量激增,特别是钉钉视频会议、直播的需求随之飙升。同时,钉钉为了响应教育部门“停课不停学”的号召,宣布老师们可以免费试用钉钉在线课堂。

流量如洪流般涌入钉钉,一场资源扩容的技术挑战拉开了帷幕。中小学生集体对钉钉展开了五星分期与在线写歌“泄愤”的策略,钉钉本钉不得不在线求饶。而在大战间隙,一声感叹传出:

流量这么大,钉钉为什么不崩?

1.jpg

从1月28日开始,钉钉音视频会议、直播的访问流量倍数级增长。作为一个在云上成长起来的产品,钉钉开启了在阿里云的资源扩容之路,满足了用户在家办公及在家上课的需求,保证了用户良好的体验,钉钉如何做到的?

如此大型的扩容,面临着两大困境:效率与资源供应

人工扩容困境:效率低下

时间太短。面对流量暴增,留给钉钉技术团队时间只有几天。从1月29日起,钉钉团队就已在阿里云上24小时开始全力扩容,截止2月2日,从最初的2W vCPU扩容到3W vCPU,仅做到了数倍扩容,还远未达到业务需求。

购买与配置非常复杂。钉钉的系统架构包含多种资源,不同于单一的云服务器ECS服务集群,还包含SLB、MongoDB、Redis、EIP等产品。这些资源都需要一个个购买,其之间的关系也需要技人工自行配置。

人工部署效率低、失误率高。钉钉用户群量级大。如果人工部署集群,一个人部署1个集群需要1小时左右,同时也只能操作3-4个集群,还需要大量的配置操作,很容易失误。

部署复杂度高。集群的服务能力自闭环,支持无限扩展,但也会相应提升部署复杂度,而这次扩容涉及8个地域、16个可用区,传统部署方式扩容场景效率低下
大规模集群管理难度大。需要快速扩容近千集群,才能满足几亿人在家办公及学生在家上课的需求。当资源上千后,就很难管理资源之间的关系了,更何况超百万的资源规模。

人工部署,容错率比较差,排查困难。集群之间经常出现偏差,某个集群的SLB监听端口是300,另一个集群是3000,出现问题很难排查。

除却以上困难,建立和运维如此巨大的集群规模还会带来更多的技术挑战。

利用资源编排服务ROS,实现快速自动部署

早在2月2日流量洪峰带来之前,钉钉就通过阿里云的资源编排服务(Resource Orchestration Service,简称 ROS)提高集群部署效率、帮助其快速扩容。而这款服务不负重托,帮助钉钉在短短2小时内新增部署了超过1万台云服务器,这个数字也创下了阿里云上快速扩容的新纪录。

什么选择资源编排服务?

资源编排服务是一款帮助阿里云用户简化云资源创建、更新和删除的自动化服务。其通过资源栈 (Stack) 这种逻辑集合来统一管理一组云资源(一个资源栈即为一组阿里云资源)。利用资源编排服务,云资源的创建、删除、克隆等操作都可以以资源栈为单位来完成。在 DevOps 实践中,资源编排可以轻松地克隆开发、测试、线上环境;同时,也可以更容易实现应用的整体迁移和扩容。

基础设施即代码(Infrastructure as Code)

资源编排服务是阿里云提供的基础设施即代码(Infrastructureas Code,简称IaC)的云产品,使用ROS可以帮助最快速地实践DevOps中关于IaC的理念。

**全自动托管服务
**
ROS产品为全托管服务,无需购买维护IaC模板本身执行所使用的资源,只需要关注业务所需要使用的资源,即模板中定义的资源。尤其需要创建多个项目(对应多个资源栈)时,全托管的自动化可以更快地完成任务。

可重复部署

无论客户是需要部署的环境是开发,测试和生产环境,都可以使用同一套模板进行创建。指定不同的参数可以满足环境的差异化,例如,测试环境的ECS实例数是2台,而生产环境的ECS实例数是20台。或是客户需要进行多地域的部署,使用同一套模板可以进行重复的部署,从而提高部署多地域的效率。

标准化部署

在实践中,不同环境的细微差异往往带来非常复杂的管理成本,延长了问题诊断的时间,从而影响了业务的正常运转。通过使用ROS重复部署,可以将部署环境标准化,减少不同环境的差异,将环境的配置沉淀到模板中。再通过类似代码的严格管理流程,从而保证部署的标准性。

统一的身份认证、安全和审计

和其它的同类产品对比,阿里云官方出品的ROS与其它阿里云产品有着最佳的集成。集成资源访问管理(RAM)提供了统一的身份认证,而无需为单独建立用户认证体系。所有的云产品操作都通过OpenAPI调用,意味着您可以使用操作审计服务(ActionTrail)来审查所有的运维操作,包括ROS本身。

2.jpg

ROS如何服务钉钉扩容?

定义资源模板

ROS帮助钉钉快速创建了描述其所需要用到的阿里云资源(如 ECS 实例、数据库实例等)的模板,以定义它的集群架构。ROS提供可视化编辑器能力,可自动可使用的模板。模板完成后,ROS将自动地创建并配置这些资源,即可实现基础设施即代码(Infrastructureas Code)的理念。

3.jpg

模板解析与执行

当ROS接收到用户创建资源栈的请求时,在执行创建前,首先会对模板进行解析。解析包括语法检查、参数校验、依赖分析等。

依赖分析就是分析出资源间的依赖关系,目的有两个:

保证资源创建的正确性:被依赖资源创建完成后才会创建依赖资源。
提供并行化创建的能力:无依赖关系的资源可以并行化创建。

模板解析完成后,ROS会按照依赖关系创建资源,只有所有前置资源完成创建,后面的资源才会开始创建,类似状态机的机制。

该资源模板可以快速地重复部署,尤其多地域、多可用区部署的情况;同时也可以减少环境之间的偏差,将部署过程和结果标准化,减少因为环境偏差引入的系统问题。

4.jpg

总结

钉钉使用资源编排服务ROS,扩容效率就提升了100倍,陆续为钉钉完成了10万台云服务器的快速扩容和部署,创下了阿里云上快速扩容的新纪录。

目前ROS已经拥有平均每分钟1个集群的扩容效率、每天超百万vCPU弹性能力。未来,可以预见到,疫情结束后,数百万资源回收释放也将是一个浩大的工程。资源编排服务ROS具有一键销毁功能,自动回收集群内所有资源,避免繁琐操作及遗漏。

弹性是云计算最大的优势,也是云计算对整个社会提供的普惠和便利,而阿里云弹性计算资源编排服务ROS作为阿里云上原生的自动化编排部署服务,让云计算的弹性发挥到极致,为钉钉提供了强有力的支持,让钉钉成为使用最频繁最流畅的平台。

目录
相关文章
|
前端开发
bladex中自定义分页的写法~
bladex中自定义分页的写法~
|
Kubernetes 安全 Cloud Native
云原生|kubernetes|pod或容器的安全上下文配置解析
云原生|kubernetes|pod或容器的安全上下文配置解析
699 0
|
6月前
|
敏捷开发 存储 API
《小型开发者在鸿蒙Next上的成本与收益平衡之道》
鸿蒙Next系统的开发对小型开发者存在一定挑战。学习成本方面,需掌握新架构和API;开发成本受功能复杂度影响,经验不足会增加支出;设备成本因多设备测试需求较高;市场推广成本受限于资金资源。然而,鸿蒙系统也带来机遇:用户群体庞大、创新空间广阔、华为激励政策支持。通过利用开源资源、敏捷开发、聚焦垂直领域及合作,小型开发者可在鸿蒙生态中实现成功并获得收益。
227 4
|
6月前
|
人工智能 算法 测试技术
AI 研发产品进化论:从 AI 编码助手到 AI 程序员
本次分享由阿里云资深技术专家陈鑫主讲,主题为“AI研发产品进化论:从AI编码助手到AI程序员”。内容涵盖通义灵码在落地过程中的挑战与突破,包括精准度提升、企业级检索增强、自定义扩展及智能体的应用。通过全工程理解、个性化适配和智能体的引入,通义灵码已实现代码补全、单元测试生成、缺陷修复等核心功能,并显著提升了开发者的工作效率。目前,通义灵码已在Vs Code和JetBrains插件市场上获得超过500万次下载,月均采纳率超过30%,并持续优化中。
190 9
|
9月前
|
前端开发 JavaScript 开发者
UI 框架:element-ui(二)
在当今快速发展的前端开发领域,用户界面的设计和交互体验日益成为软件成功的关键因素之一。Element UI,作为一款基于Vue.js的组件库,以其精美的界面和丰富的功能受到了广泛的关注与应用。它为开发者提供了一整套高质量的组件,帮助他们快速构建具有现代感的应用程序。 Element UI不仅注重美观的设计,还提供了良好的文档支持和社区活跃度,使得开发者能够轻松上手并解决实施过程中的各种问题。在这篇文章中,我们将深入探讨Element UI的基本特点、安装步骤,以及如何利用其强大的组件系统高效地构建用户友好的界面。无论您是初学者还是有经验的开发者,这篇文章都将为您开辟一条通向更高效开发的道路。
599 4
|
9月前
|
机器学习/深度学习 存储 人工智能
2024 年 AI 辅助研发趋势
这篇文章讨论了2024年AI辅助研发的趋势,包括技术进展、行业应用案例、面临的挑战与机遇、未来趋势预测、与法规的影响以及人才培养与教育。文章强调了AI在医药、汽车和电子等行业的应用,并指出了AI辅助研发面临的技术挑战、伦理问题和数据安全问题,同时也提出了技术创新、伦理规范和数据安全技术等方面的机遇。文章还预测了AI与研发流程的深度融合、智能研发平台的崛起和AI驱动的创新模式等未来发展方向,并讨论了政府政策和法规对AI辅助研发的影响,以及教育体系如何适应这一变革,培养具备AI技能的研发人才。
373 1
|
12月前
|
供应链 监控 调度
ERP系统中的销售订单管理与订单跟踪解析
【7月更文挑战第25天】 ERP系统中的销售订单管理与订单跟踪解析
865 2
|
9月前
|
机器学习/深度学习 人工智能 算法
人工智能-大语言模型-微调技术-LoRA及背后原理简介
人工智能-大语言模型-微调技术-LoRA及背后原理简介
188 0
|
机器学习/深度学习 存储 算法
基于贝叶斯算法的邮件过滤管理系统的设计和实现(Vue+SpringBoot)(一)
基于贝叶斯算法的邮件过滤管理系统的设计和实现(Vue+SpringBoot)
366 0
|
机器学习/深度学习 算法
大模型开发:解释反向传播算法是如何工作的。
反向传播算法是训练神经网络的常用方法,尤其适用于多层前馈网络。它包括前向传播、计算损失、反向传播和迭代过程。首先,输入数据通过网络层层传递至输出层,计算预测值。接着,比较实际输出与期望值,计算损失。然后,从输出层开始,利用链式法则反向计算误差和权重的梯度。通过梯度下降等优化算法更新权重和偏置,以降低损失。此过程反复进行,直到损失收敛或达到预设训练轮数,优化模型性能,实现对新数据的良好泛化。
417 4