前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云函数 SCF 支持容器镜像交付 - 赋能应用 Serverless 化

云函数 SCF 支持容器镜像交付 - 赋能应用 Serverless 化

作者头像
腾讯云serverless团队
发布2021-06-03 21:41:03
1.5K0
发布2021-06-03 21:41:03
举报

01.

FaaS 产品与容器生态的结合

容器镜像已成为云原生时代标准的交付物,并且有其强大的生态来解决 CICD、存储、编排等实际需求。云函数 SCF 从设计之初即是基于云原生架构的 FaaS 产品,同时也是 Serverless 思想的最佳产品化体现之一。在 Runtime 层支持自定义容器镜像后,意味着产品形态整体向容器化生态迈出了第一步。

一方面,解决函数运行时的环境依赖问题,给予用户更大的自由发挥空间;另一方面,产品形态层面的呈现使得用户无需受困于 Kubernetes 集群管理、安全维护、故障诊断等技术门槛,将弹性伸缩、可用性等需求下沉至计算平台,进一步释放云计算能力。

02.

云函数 SCF 支持容器镜像交付

1. 运行概览

基于自定义镜像部署的函数运行,如下图所示:

整体分为两条路线:研发路线和用户访问路线。

  • 研发路线:

1. 开发者在开发完成代码后,构建镜像并将其推送至镜像仓库 TCR;

2. 函数运行时会从镜像仓库拉取镜像,并根据容器运行参数、函数运作配置来 run 函数实例;

3. 开发者也可以配置函数实例向分布式协调组件进行注册,或访问数据库服务,以此来形成完整的微服务应用生产体系。

  • 用户访问路线

开发者可通过 HTTP 请求,或触发相应的事件触发器,达到访问函数实例所承载服务的目的。

2. 工作原理

1. 云函数在函数实例初始化阶段,获得镜像仓库的临时用户名和密码作为访问凭证来拉取镜像;

2. 镜像拉取成功后,根据指定开发者所定义的启动命令 Command、参数 Args 及端口(固定为9000)启动开发者定义的 HTTP Server;

3. 最后,HTTP Server 将接收云函数的所有入口请求,包括事件函数调用及 Web 函数调用。

3. 功能优势

容器技术本身解决的是「应用上线前」问题,即软件应该如何更好的交付。云函数 SCF 的特征免运维、降低资源成本以及云服务集成,应对的是「应用上线后」的痛点。二者以一定的形式结合,为开发者带来更好的 Serverless 体验。

  • 更丰富镜像仓库类型的支持

开发者可根据自己的需求,来选择镜像仓库的企业版或个人版。

  • 无侵入的日志采集聚合

云函数 SCF 实现了在容器外收集开发者在容器内所产生的 stdout、stderr 等标准输出日志,并与系统日志聚合展示至控制台日志模块。

  • 基于镜像 Digest 的镜像拉取

鉴于开发者push镜像时可能会以相同的 Tag 推送不同内容的镜像,云函数 SCF 基于镜像唯一标识 Digest 来拉取镜像,进一步明确应用运行时所使用的镜像。

  • 更加明确的平台与开发者边界

其它函数运行实例 Runtime 中存在云函数 SCF 的系统进程,承担获取触发事件、日志收集等作用。在综合技术架构演进、实际线上问题后,决定在平台侧与用户侧建立明确的边界,即   Runtime  内不再运行云函数 SCF 任何的进程。

  • 加速应用 Serverless 化

支持开发者自定义镜像,无需改造代码或重新编译二进制依赖,达到应用快速上线的目的。

4. 冷启动加速

镜像由于增加了基础环境、系统依赖等文件层,相较于基于代码包部署的完全内置,无疑带来了额外的文件下载和镜像解压的时间。为了进一步降低冷启动时间,推荐您使用以下策略:

  • 在同一地域创建镜像仓库与函数,这样在函数触发镜像拉取时会使用 VPC 网络进行拉取,以此获得更快更稳定的镜像拉取效率;
  • 镜像制作秉承最小化原则,即仅包含必要基础环境、运行依赖,去除不必要的文件等;
  • 镜像部署搭配预置并发功能,预先启动函数实例,达到最优降低冷启动的体验。

03.

业务应用场景

1. 音视频处理

  • 难题痛点

音视频处理的应用运行时,通常有 请求波动大、对算力弹性要求高、接收非结构化数据变更事件、需要工作流工具编排计算任务 等方面的特征,使得云函数 SCF 成为音视频处理类应用上云的首选。

但在运行的过程中发现,为了满足不同的场景,往往需要用户自定义编译上传工具库 FFmpeg 及编码器。编译时,会对环境中的共享对象(*.so)和 glibc 等库有依赖关系,此前云函数 SCF 运行环境不支持镜像交付,不能高度自定义环境依赖,在运行支撑的过程中多有痛点。

  • 解决方案

往后,云函数 SCF 通过自定义镜像的方式解决该类问题。如下所示,可以在 Dockerfile 中定义运行环境、系统依赖以及增加业务处理逻辑,而后以镜像交付部署为云函数。

代码语言:javascript
复制
FROM csighub.tencentyun.com/scf-base:latestMAINTAINER scf.example@tencent.com# 安装xvfb、pulse-audio等必备依赖软件RUN yum clean all \    && yum makecache \    && rpm --rebuilddb \    && yum -y install unzip which \        xorg-x11-server-Xvfb \        pulseaudio pulseaudio-utils alsa-plugins-pulseaudio \    && yum clean all# 安装ffmpegCOPY ffmpeg-4.2-linux-64.zip /tmp/RUN unzip /tmp/ffmpeg-4.2-linux-64.zip -d /usr/local/bin# 增加业务代码COPY app.zip /tmp/RUN unzip /tmp/app.zip -d /opt/app/···

2. 大数据推理分析

  • 难题痛点

TensorFlow 是当下最为流行的 AI 推理分析框架。推理类任务的运行需求,与音视频处理是类似的,同样是请求量驱动,既要求能快速响应激增流量,又要能在请求低峰释放资源,甚至是缩容至 0 节省成本。这些需求天然就是 FaaS 类产品云函数 SCF 所擅长的。但由于 TensorFlow 标准版本对 linux standard library 有要求(需要 glibc 2.29 以上),此前云函数只能部署 TensorFlow lite 版本以覆盖一定范围的需求,同时开发者还需要自己编译,把 standard library 静态链接进去。

  • 解决方案

支持了容器镜像交付函数能力的云函数 SCF,只需要简短的 Dockerfile 就可以跑起来 TensorFlow Serving 的 DEMO。

代码语言:javascript
复制
FROM tensorflow/servingMAINTAINER scf.example@tencent.comENV MODEL_NAME=half_plus_twoCOPY ./testdata/saved_model_half_plus_two_cpu /models/half_plus_twoENTRYPOINT ["/usr/bin/tf_serving_entrypoint.sh"]

3. 传统巨石型 Web 应用 Serverless 化

  • 难题痛点

传统巨石型 Web 应用,往往存在运行环境(容器镜像)和业务逻辑耦合度高且解耦代价较高的现状。为了应用 Serverless 化,迫不得已根据云厂商的供应环境,来适配升级操作系统、依赖库版本、并重新编译,迁移至 Serverless 架构有较高的时间成本和稳定性风险。

  • 解决方案

通过云函数 SCF 的镜像交付能力,传统容器化 Web 应用几乎无需代码改造,即可实现应用快速 Serverless 化,将更多的时间和精力专注于业务逻辑的创新和迭代。

04.

关于云函数 SCF & 容器的未来设想

容器镜像,已经成功解决了「应用交付」所面临的最关键的技术问题,但在如何定义和管理应用这个更为上层的问题上,容器技术并不是「银弹」。然,支持镜像交付的云函数 SCF,封装了对容器的隔离、文件挂载、启停配置,容器集群调度、弹性伸缩对用户完全透明,使得开发者能更加聚焦于应用业务逻辑的定义。

我们将从以下三个维度出发,推动容器化的应用以更高效的方式 Serverless 化。

  • 周边生态配套,如运维可观测能力的完善改进;
  • 研发流程对接,联合腾讯云 DevOps 产品,提供 Step 级的函数管理能力;
  • 底层技术支撑,如通过按需加载的镜像加速技术,进一步提高函数冷启动效率。

未来,腾讯云坚信 FaaS 与容器生态的结合将会更加紧密,我们将运用更开放、更标准的云原生技术,秉承用户为本、科技向善的企业愿景,更好的为客户创造价值。

05.

Serverless 云函数支持镜像交付

内测申请

腾讯云 Serverless 云函数将推出自定义镜像功能,现开放内测申请:

  • 内测申请链接:https://cloud.tencent.com/apply/p/ox0h1yv3r9e

(长按识别上方 ? 二维码,提交内测申请)


推荐阅读

One More Thing


欢迎进入千人 QQ 群 (871445853) 交流 Serverless!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」,即可申请内测云函数自定义镜像功能,欢迎体验使用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01.
  • FaaS 产品与容器生态的结合
  • 02.
  • 云函数 SCF 支持容器镜像交付
  • 1. 运行概览
  • 2. 工作原理
  • 3. 功能优势
  • 3. 传统巨石型 Web 应用 Serverless 化
  • 04.
  • 关于云函数 SCF & 容器的未来设想
  • 05.
  • Serverless 云函数支持镜像交付
  • 内测申请
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档