写点什么

腾讯云 Serverless 云函数并发管理能力解读

2021 年 4 月 07 日

腾讯云 Serverless 云函数并发管理能力解读

近期,腾讯云 Serverless 云函数发布了并发管理能力升级版,提供了 3 个维度的并发额度管理的功能。该功能究竟提供了哪些能力,有哪些使用场景?本文将为您全方位解读并发管理功能,并对多种使用场景提供配置建议。


背景介绍


原先,创建一个函数,默认具有 300 的并发数量上限。针对小的低频业务,300 的并发值足够使用。但是遇到业务量上涨、支撑大型运营活动等大并发的情况,开发者就需要通过提工单联系平台方,申请提升函数并发额度。这样可能导致:


  1. 每遇到一次大并发,就需要联系一次平台方来提升配额,时效性弱。

  2. 申请等待周期时会导致上涨的业务部分有损。

  3. 在评估量级时,也可能出现评估不足,导致需要再次申请,低效。


并发能力升级


相对于原有的函数默认固定的并发值,本次上线的并发管理能力,有以下方面的优化:


  1. 将单一函数的并发调整放开给了出来,用户可以自行来控制并发数。

  2. 并发额度由单一的函数维度,移到了账号维度。

  3. 账号下默认具有一定的并发额度,由账号下的函数所共享的,不需要单独为其中一个大并发的函数申请额度。


因此,在当前的模式下,默认账号具有的 128000 MB 的额度,可以供 128 MB 配置内存函数启动运行 1000 个并发;在这种情况下,用户无需去寻找平台申请,就可以获得比调整前更高的一个并发额度,用于支撑上涨的业务。



并发的处理


由于账号级别的额度是在账号下的多个函数间共享的,在多个函数同时运行的情况下,因为流量突增、业务上涨导致并发增高的函数在占用完全部空闲额度后,可能会和平稳运行的函数之间产生冲突。


这种情况下,有两种解决方案:


一方面可以通过平台申请提升更高的账号额度,来满足上涨业务带来的并发上涨;

另外一方面,也可以通过将部分额度分配给具体函数,来保障具体函数的运行可靠性。


下面我将具体说一下第二种方式。举个例子,在同样的账号下,函数 A 提供 H5 页面用于秒杀的运营活动,函数 B 在进行后台的流式数据处理。在 B 函数启动了 300 并发进行业务处理时,运营活动会受限于 A 函数,最大仅能跑到 700 并发;而函数 A 的业务压力下,如果 B 函数也有业务量上涨,将无配额可用导致无法启动更多实例。



在上面的例子中,如果要保证 B 函数数据处理流程的可靠性,可以为这个函数设置到 350 的保留并发配额;此时,这个额度将从账号维度划给这个函数单独使用,而运营活动所使用的 A 函数将仅仅可以最大使用的 650 并发的额度。函数 B 在设置到 350 的保留并发额度后,在业务持续上升后,最大也仅仅可以使用到配置的这个额度,此时,就算是账号维度的额度仍然有剩余时,B 函数也无法去使用。



通过保留额度的设置,一方面,我们可以对函数的运行进行保障,避免多个函数共享额度时,由于其他业务的函数占用导致本函数无法运行产生损失,另外一方面,保留配额也定义了函数的运行额度上限。

因此,针对函数的并发管理控制,可以基于业务来进行更精细的控制,有以下三点建议:


  1. 针对开发测试阶段的函数,由于请求量小,无业务压力,并发也极少,可以不配置保留额度而仅仅使用账号维度的共享额度;

  2. 针对稳定运行的函数,并发通常是确定的,浮动范围也不会很大,这个时候可以给这个函数设置稍微有一点余量的保留额度,来保障函数的额度不受共享的影响;

  3. 针对运营活动、有可能性突增并发的函数,可以利用账号维度的高额度,来充分利用和支撑业务爆发。



当前预置额度的设置,是设置在函数的版本上,也是从账号维度的并发配额或函数上的保留额度中扣减下来的。


通过设置预置额度可以预想启动所需量的并发实例,完成实例的初始化并等待事件的到来。针对函数的请求将不会有冷启动时间,直接就可以在已经完成准备、初始化完成的实例中得到运行。


在时延敏感的业务,例如前端的 SSR 页面响应;或者是初始化时间较长的业务,例如 AI 推理的模型加载过程;这些场景下,通过给函数设置上一定的预置可以保障业务更好的运行。


同时,预置的配额也不是实例并发的上限,在业务量上涨到超过已经预置的实例可以承载的时候,函数平台仍然会根据函数的保留配额或者是账号的配额,拉起更多的实例来支持业务运行。



并发使用场景设置建议


一个账号下有多个业务都在同时使用云函数进行支撑时,函数的并发配额就需要进行按需调度。根据不同的业务特性来进行合理合适的设置。


例如有波峰波谷的前端业务,有平稳运行波动不大的数据处理业务,有偶尔才运行一次的定时运维任务,也有并发不大但是计算量重、计算时间长的视频处理业务;


在这些业务中,根据重要性、是否接受一定损失来说,又有不同的区分:前端业务保障用户体验,要求加载速度快,但是可以有一定的错误容忍度;数据处理的要求高,不能接收延迟、波动或失败;定时运维任务偶尔运行,不用投入过多的关注,运行正常即可;而视频处理业务,可以接受按需调度,失败时能自动重试就行。


根据不同的业务特性、容错额度、业务波动情况、时延要求,我们就可以按照不同的情况来进行不同的设置。上述几项业务中,并发设置有以下几点建议:


  • 对前端业务来说,要求加载速度快,但是有波峰波谷,这种情况我们就可以为函数配置一定量的预置额度,例如按最大使用量的 60%来设置,但是同时不设置函数的保留额度,确保在高峰到来时能充分利用总配额;

  • 针对数据处理业务,波动不大但是容错低,我们可以为函数配置一定量的保留额度,确保不会有其他业务使用的共享额度导致数据处理业务的问题;

  • 运维任务定时运行,没有高要求,可以不做任何配置,使用账号维度的配额来处理就行;

  • 针对视频处理业务,计算量大,而且可以按需排队处理任务,我们设定好一定的保留额度,让业务跑满并发额度,充分利用好且控制好计算资源。





保留配额另一种用法


保留配额还有另外一种用法——对业务的限制或关停。在有紧急事项发生,例如漏洞攻击、循环调用失控等情况出现时,为了避免有重大损失,可以通过设置保留配额,将额度控制在极小的值上来避免运行失控,甚至可以设置为 0 来关闭函数的运行。



内存和并发额度的关系


当前额度按内存进行计算,配置内存大的函数,并发运行时占用的额度多,而配置内存小的函数在多并发运行时占用的额度小;


由于函数服务的资源用量计费项和函数的配置内存强相关,通过内存进行额度控制,一方面可以让我们尽量采用合适的内存来实现业务,另外一方面,针对整体的支出也可以进行有效的控制。



总结


通过提供多层次的并发配额管理能力,目前我们可以获得更强的函数并发管理控制的权限,无需再等待平台方的调整就可以自行根据业务需求快速调整。


目前并发管理功能已经上线,函数可以配置保留并发,同时预置并发功能也处于内测阶段,欢迎大家申请试用。针对并发管理的更多场景、用法,也欢迎大家留言探讨和反馈。


头图:Unsplash

作者:Alfred

原文:https://mp.weixin.qq.com/s/bCbADa7KFsg9PuztZrnURw

原文:腾讯云 Serverless 云函数并发管理能力解读

来源:TencentServerless - 微信公众号 [ID:ServerlessGo]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021 年 4 月 07 日 09:33898

评论

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

基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台

阿里巴巴云原生

Java 云原生 监控 存储 消息中间件

刚火了的中台转头就拆,一大波公司放不下又拿不起来!

小傅哥

Java 架构 中台 小傅哥 海盗奇兵

微信业务架构和学生管理系统架构设计

鹿洺

架构实战营

什么!?金三银四,2021年阿里最新面试题惨遭泄露?

Java成神之路

Java 程序员 架构 面试 编程语言

企业与员工的三种共同体关系

石云升

28天写作 职场经验 管理经验 4月日更

2021金三银四程序员面试必问总结

Java架构师迁哥

HW Y7 2018

无名

架构实战营 作业1

solider

Web安全

Machine Gun

Flink程序结构与数据流

大数据技术指南

flink 4月日更

架构实战营模块 1 作业

Lukefang

架构实战营

数字签名在信息安全是什么?

Machine Gun

网络安全 信息安全 WEB安全 数字签名

聪明人的训练(七)

Changing Lin

四月日更

架构实战营模块1第1课-学习总结

吴建中

架构实战营

第一周作业

Damon

架构实战营 | 模块一 | 作业

curtis

再聊 TCP backlog

AI乔治

Java 架构 TCP TCP/IP

2021版最新!字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

Java成神之路

Java 程序员 架构 面试 编程语言

保护云管理控制台的5个最佳实践

龙归科技

云计算 安全 风险管理

c语言思维地基搭建(c语言介绍)

-jf.

学习笔记 大学作业 四月日更

test

大肚皮狒狒

抖音春晚幕后 | 支撑 12 亿红包雨的云原生基础设施

火山引擎

数据库 分布式 云原生 边缘计算

​程序员的二十多个防猝死指南小妙招

Java架构师迁哥

微信业务架构图&学生管理系统

刘敏

由 JVM Attach API 看跨进程通信中的信号和 Unix 域套接字

AI乔治

Java 架构 jdk JVM

# 模块1作业

灯火阑珊

二本渣渣辛酸面试之旅:5面阿里Java岗侥幸上岸,定级P6

神奇小汤圆

Java 编程 程序员 架构 面试

架构实战营模块一作业

梦寐凯旋

架构实战营模块一 作业

我叫大法师

遭GitHub连夜封杀下架?被泄露的阿里内部Java面试手册到底有多强?

Java架构师迁哥

如何在 Mac 下用 Clion 调试 MySQL 源码

AI乔治

Java MySQL 架构 调优

大数据技术升级脉络及认知陷阱

大数据技术升级脉络及认知陷阱

腾讯云 Serverless 云函数并发管理能力解读-InfoQ