Serverless工程实践 从入门到进阶

2022-01-25  本文已影响0人  yeedom

第0章 从云计算到Serverless

表0-1 云计算面临的问题和机遇

image-20220125072643731

图0-3 IaaSPaaSSaaS的区别

image-20220125072716062
  1. 新的BaaS存储服务会被发明,以扩展在Serverless计算上能够运行更加适配的应用程序类型。这样的存储能够与本地块存储的性能相匹配,而且具有临时和持久两个选项
  2. 将出现比现有的x86微处理器更多的异构计算机
  3. Serverless架构下的编程更安全、易用
  4. Serverless将会接入更多的后台支撑服务,如OLTP数据库、消息队列服务等
  5. Serverless将会成为云时代默认的计算范式

图0-4 Serverless发展历程

image-20220125072758522

第一部分 概念与产品

图1-1 Serverless架构的组成

image-20220125072839051

图12 不同角度上的Serverless的定义

image-20220125072929780

图16 FaaS解决方案组成

image-20220125072950062
  1. EventSources:将Event触发或流式传输到一个或多个函数实例中
  2. FunctionInstance:可以根据需要扩展单个函数/微服务
  3. FaaSController:部署、控制和监视函数实例及其来源
  4. 平台服务:FaaS解决方案使用云厂商提供的其他云服务,例如云数据库、身份校验等

图1-7 函数部署流水线示意图

image-20220125073025254

图1-9 函数调用类型

image-20220125073047102

图1-14 虚拟机、容器、Serverless架构演进简图

image-20220125073106228

图1-15 传统项目上线和Serverless下项目上线对比图

image-20220125073123686

图1-16 函数计算根据流量进行函数扩缩示意图

image-20220125073144965

图1-17 函数冷启动产生示意图

image-20220125073201919
  1. 存在空闲且可以直接复用的实例:热启动
  2. 不存在空闲且可以直接复用的实例:冷启动

图1-18 本地与FaaS的函数调用区别示意图

image-20220125073227200

图1-20 函数启动的四个部分

image-20220125073251863

图1-21 函数冷启动常见解决方案

image-20220125073312301

图1-22 函数预热常见方案

image-20220125073334337

图1-23 函数池化程度示意图

image-20220125073352393

表1-1 不同云厂商/产品所提供的典型场景表

image-20220125073413351

图1-25 数据ETL处理示例

image-20220125073431301

图1-27 AI推理预测处理示例

image-20220125073449676

图2-1 CNCF列出的FaaS平台

image-20220125073510073

图2-4 GoogleCloudPlatformFunctions产品页面

image-20220125073533000

图213 开源FaaS平台

image-20220125073624904

表2-1 常见开源FaaS平台基本信息

image-20220125073606252
  1. KnativeKubernetes为底层框架,与Kubernetes生态结合得更紧密。无论是云上Kubernetes服务还是自建Kubernetes集群,都能通过安装Knative插件快速地搭建Serverless平台
  2. Knative联合CNCF,把所有事件标准化为CloudEvent,提供事件的跨平台运行,同时让函数和具体的调用方法解耦。在弹性层面,Knative可以监控应用的请求,并自动扩缩容,借助于IstioAmbassadorGloo等)支持蓝绿发布、回滚的功能,方便应用发布。同时,Knative支持日志的收集、查找和分析,并支持VAmetrics数据展示、调用关系跟踪等

Knative工作原理如图2-14所示

image-20220125073710226

第二部分 开发入门

文件上传方法

  1. 一般情况下,一些云平台的API网关触发器会将二进制文件转换成字符串,不便直接获取和存储;
  2. 一般情况下,API网关与FaaS平台之间传递的数据包有大小限制,很多平台限制数据包大小为6MB以内;
  3. FaaS平台大多是无状态的,即使存储到当前实例中,也会随着实例释放而使文件丢失

图4-1 在Serverless架构下文件上传文件示例

image-20220125073756996

文件读写与持久化方法

图4-4 函数在线简单调试页面

image-20220125073819331

图4-5 通过设置Event模拟事件

image-20220125073838427

图4-6 函数在线断点调试页面(一)

image-20220125073855713

图5-1 在Knative体系架构下各角色的协作关系

image-20220125073911844
  1. Tekton:提供从源码到镜像的通用构建能力。Tekton组件主要负责从代码仓库获取源码并编译成镜像,推送到镜像仓库。所有这些操作都是在KubernetesPod中进行的
  2. Eventing:提供事件的接入、触发等一整套事件管理能力。Eventing组件针对Serverless事件驱动模式做了一套完整的设计,包括外部事件源的接入、事件注册、订阅以及事件过滤等功能。事件模型可以有效地解耦生产者和消费者的依赖关系。生产者可以在消费者启动之前生成事件,消费者也可以在生产者启动之前监听事件
  3. Serving:管理Serverless工作负载,可以和事件很好地结合,并且提供了基于请求驱动的自动伸缩能力,而且在没有服务需要处理的时候可以缩容到零。Serving组件的职责是管理工作负载以对外提供服务。Serving组件最重要的特性就是自动伸缩的能力。目前,其伸缩边界无限制。Serving还具有灰度发布能力

第三部分 工程实践

图7-12 并行视频转码案例流程简图

image-20220125073940563

图8-4 基于Serverless架构的图像识别功能流程简图

image-20220125073957082

图9-1 前端技术发展简史

image-20220125074012028
上一篇 下一篇

猜你喜欢

热点阅读