专栏名称: 细说云计算
关注云平台的网络技术、存储技术,以及少量架构技术。
目录
相关文章推荐
字节跳动技术团队  ·  远程访问代理+内网穿透:火山引擎边缘网关助力 ... ·  11 小时前  
字节跳动技术团队  ·  稀土掘金 x Trae ... ·  11 小时前  
51好读  ›  专栏  ›  细说云计算

运维“杀手”:无服务器云函数技术路径及架构实现原理解析

细说云计算  · 公众号  · 架构  · 2017-09-08 21:30

正文

请到「今天看啥」查看全文


从云函数的定位及架构原理看,衡量云函数平台的关键技术指标可概括为:

不仅支持业务快速上线,且能实现持续发展;

不仅支持业务按需取用,且能释放闲置资源;

不仅支持业务永不中断,且能扩展运行范围;

不仅支持业务自由运行,且能避免干扰入侵;

下文将展开详述。

支持业务快速上线,且实现持续发展

支持业务分钟级上线,需要尽可能的减少用户研发工作量,云函数用户仅需提供简单的函数配置及代码即可完成上线。以图片压缩为例,用户自行编辑 python 代码如下,即可实现一个图片压缩服务:

其中第 1 行引入依赖库,第 4~9 行解析输入参数,第 11 行调用库完成图片压缩,12~15 行判断结果及返回。用户可在线完成代码的编辑并提交,也可像开发本地程序一样使用喜欢的 IDE 编辑,调试通过后打成 zip 包通过 SDK 提交,提交成功服务即上线。

支持业务可持续发展,需提供用户函数平滑升级及版本变更能力,当用户更新函数代码或配置后,新调用请求被分发至新函数实例,原调用请求执行完成后,旧函数实例自动消亡,服务在客户不感知情况下平滑更新。

即将支持用户函数多版本管理,将函数别名映射至用户指定版本,在客户不感知情况下实现多版本间平滑切换。

函数运行过程中间,用户打印日志,标准输出 / 错误输出日志分类上传至腾讯云日志服务平台,用户可实时监控函数运行情况。

支持业务按需取用,且释放闲置资源

要支持云函数真正按需取用,需实现用户第一次调用时延迟分配资源,函数调用过程如下图所示:

云函数平台在调用分发时,会判断是否有函数实例存在,如若不存在,则实时启动实例,实例启动完成后,才开始执行函数调用。为了达到第一次调用足够快的目标,在调用过程中需分阶段逐层优化:

分发调用阶段:需减少调用分发层级,比如对于用户主动发起的 http 同步调用,正常路径可免去存入持久化队列过程;

镜像及代码下载阶段:需尽量预部署以减少下载时间,比如对新提交函数,并行启动预加载,使得第一次调用发起时无须再去实时下载;

容器启动过程:需简化容器启动脚本,使得启动过程尽量轻量,对于对延时敏感的业务,提供实例预留机制,用户可选择预留少量实例以减少第一次调用的额外延时;







请到「今天看啥」查看全文