极客视点
极客时间编辑部
极客时间编辑部
113243 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/05:04
登录|注册

高并发业务如何利用云开发进行优化?

讲述:初明明大小:4.64M时长:05:04
你好,欢迎收听极客视点。
高并发对于任何服务来说都具有不小的技术挑战,面对高并发的问题,相较于耗时耗力且成本昂贵的传统解决方案,云开发模式提供了足够的轻量和弹性,可以随着请求量的增长自动扩缩容量,确保允许在云开发上面的业务高性能、高可用。而且,按需使用资源使得开发者不需要为了应对高并发而提前部署大量资源,这大大节约了资源成本。
日前,腾讯高级前端开发工程师艳杰介绍了开发者在面对高并发需求时,通过云开发做优化的方法,简要总结如下。
通常高并发业务按并发量上涨模型来划分,可以分为以下两种形式:
业务量相对平缓上涨,并发量逐步上升,上升速度平缓,系统有充足的预热时间;
业务并发量爆发上涨,并发量瞬间上升,上升速度很快,例如常见的秒杀类业务。
对于第一种并发量以较均匀的速度上涨的业务,直接使用云开发就可以轻松应对。对于第二种呈爆发式上涨的业务,通过一定的策略和技术上的优化,也能较轻松应对。
云函数在应对高并发请求的难点在于弹性,弹性支持了服务资源的按需部署,因此可以为开发者节省大量资源和成本。但也是因为弹性,在面对瞬时高并发需求时,服务瞬间面对比之前大几十倍甚至上百倍的并发请求,云函数伸缩系统难以预料这种爆发性上涨。因为冷启动耗时相对较长,弹性扩容机制难以在秒级时间内实现大量云函数实例部署,无法跟上并发上涨的速度。热启动率降低,启动时间变长,导致部分请求超时,甚至出现超并发的情况,进而导致活动参与者因参与失败而放弃,活动效果达不到预期。
如何解决这个问题呢?

策略的优化方案

提前评估活动并发量及 QPS 等指标;
充分进行活动预热,在活动预热阶段统计、再评估参与人数及并发量;
在活动预热页面通过埋点代码的方式对业务云函数进行预热,通过参数控制不执行业务逻辑即可,也可以通过其他方式进行预热;
在评估并发量之后也别忘记评估套餐是否能满足业务需求,云开发提供按量计费和包年包月两种计费模式,业务方可以根据实际情况调整套餐,或者切换为按量计费,避免因套餐限制影响业务。

技术的优化方案

技术方面的优化核心就一点:降低耗时。
云函数方面,通过以下方式进行优化:
减少调用依赖服务的次数,如进行请求合并;
降低依赖服务的响应时间,如数据查询耗时、其他接口调用耗时等;
并发调用依赖服务;
根据业务逻辑合并多个函数到单个函数、或拆分单云函数到多个云函数;
精简代码、减少依赖、降低函数体积,缩短冷启动时间。
数据库方面,尽管云开发已经针对数据库查询进行了自动化的索引优化,但是系统对于用户业务逻辑和数据的设计是远远不及业务方的,所以业务方研发团队可以在查询性能等多方面进行优化。针对高并发的场景,一些优化建议如下:
通过创建高效索引,提升数据库查询效率;
通过优化设计,减少数据库查询;
采用高效的查询条件;
减少返回数据的条数以及字段数,降低数据库的查询时间以及网络数据传输时间;
减少事务的使用,尽量用替代方式;
聚合类需求如排行榜等,可保存中间结果到数据库或缓存,避免每次进行统计计算;
数据量较大,可对集合水平拆分,降低单集合数据量,提升查询效率。
实际上,尽管云开发数据库资源层从云服务的角度来说是海量的,但是单个数据库实例计算能力是有硬件上限的,当出现较多慢查询时,数据库系统将会大打折扣,将会影响大量数据库操作,整体上会拖慢开发者自身业务响应时间,影响业务能力。云开发也计划推出慢查询日志、慢查询告警等方面的能力,提供数据库优化最佳实践。
还有一些其他建议,比如:
对系统进行一定程度的实际压测,验证设计实现是否符合预期,并提前解决,避免活动上线之后达不到效果;
独立活动业务实现,避免活动影响现有业务。
以上就是今天的内容,希望对你有所帮助。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
32
沉浸
阅读
分享
手机端
快捷键
回顶部