avatar
Articles
658
Tags
198
Categories
91
Home
Archives
Tags
Categories
About
ByteCodingFaaS - Workflow Back to Home
Home
Archives
Tags
Categories
About

FaaS - Workflow

Created2023-02-15|Cloud NativeServerlessFaaS
|Word Count:0|Reading Time:1mins
Author: zhongmingmao
Link: https://blog.zhongmingmao.top/2023/02/15/cloud-native-serverless-faas-workflow/
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Cloud NativeKubernetesInfrastructureArchitectureServerlessFaaS
cover of previous post
Previous
Go Concurrency - Mutex Basic
基本概念临界区 临界区 - 共享资源 使用互斥锁,限定临界区只能同时由一个线程持有 当临界区被一个线程持有时,其它线程想进入,只能失败或者等待 直到持有的线程退出临界区后,其它等待的线程才有机会去竞争该临界区 在 Go 标准库中,使用 Mutex 来实现互斥锁 - 使用最为广泛的同步原语 同步原语:解决并发问题的基础数据结构 同步原语适用场景 共享资源 - Mutex / RWMutex 任务编排 - WaitGroup / Channel 消息传递 - Channel 基本用法Locker Locker 接口定义了锁同步原语的方法集 1234567package sync// A Locker represents an object that can be locked and unlocked.type Locker interface { Lock() Unlock()} Mutex12func (m *Mutex) Lock()func (m *Mutex) Unlock() 当一个 goroutine 通过 Lock...
cover of next post
Next
FaaS - WebIDE
架构 组成 蓝色部分 WebIDE 客户端的核心 Run VS Code on any machine anywhere and access it in the browser 绿色部分 将 WebIDE 与 FaaS 结合的核心 橘色部分 Serverless 形态下的必备支撑服务 过程 用户在 VS Code 的前端页面向后端发出函数在线编辑的请求 服务端,即 FaaS 的 Controller 在接收到请求并验证权限后,再转给 VS Code Server 容器实例 VS Code Server 容器实例会获取用户代码,然后再加载 FaaS 的资源调度系统 根据目前 Container Pool 中的资源现状,动态扩缩容 WebIDE Pod 资源 VS Code Server 根据用户请求,会调用 Serverless Extension BE 基于此时语言的环境,执行操作,并将执行结果返回给 Client 端 注意 可以将 Serverless Extension 插件提前集成在 VS Code Server 的镜像中 FaaS Runtime 依据原来函数计...
Related Articles
cover
2023-02-10
FaaS - Scaling
概述 Serverless 的弹性扩缩容可以将实例缩容为 0,并根据请求量级自动扩缩容,从而有效地提升资源利用率 极致动态扩缩容是 FaaS 的核心内涵,是与 PaaS 平台的核心差异 - 降本增效 调度形态 开源的 Serverless 函数计算引擎核心,一般是基于 Kubernetes HPA 云厂商一般有封装好的各种底座服务,可以基于底座服务来做封装 云厂商容器调度服务,通常有两种调度形态 基于 Node 调度 基于容器实例的调度 - Serverless 云厂商的函数计算通常是基于容器服务的底座 Node 维度 组件 Scheduler 负责将请求打到指定的函数实例(Pod)上,同时负责为集群中的 Node 标记状态,记录到 etcd Local-Controller Node 上的本地控制器,负责管理 Node 上所有函数实例的生命周期,以 DeamonSet 形式存在 AutoScaler 定期检测集群中 Node 和 Pod 的使用情况,并根据策略进行扩缩容 在扩容时,向底层的 PaaS 平台申请资源 Pod Cold 表示该 Pod 未被使用 Warm 表示...
cover
2023-02-09
FaaS - Cold Start
触发时机 类似于 LoadingCache 首次请求 容器实例在服务请求后被回收 启动过程 容器创建 当所有容器实例都在处理请求时,需要向集群申请创建新的容器 函数计算平台会支持多种语言的运行时 这些运行时一般来说会打包成一个镜像,然后以 DeamonSet 的方式运行在 Kubernetes 中 在冷启动时,会根据不同的参数请求,动态挂载所需的运行时到对应的运行路径 代码包 / 层依赖 是整个冷启动耗时比较长的过程 函数计算本身不具备持久化的能力,代码包和层依赖通常都是从其它存储服务端拉取 代码包通常是压缩包的形式,下载到本地后,再解压 环境变量 / 参数文件 耗时相对较短 主流的函数计算平台往往提供了环境变量注入的能力,发生在冷启动阶段 运行时以及容器本身还需要准备一些参数配置文件 VPC 打通 / 资源准备 如果用户还为函数接入了私有网络,还需要为容器进行一些 VPC 网络打通的初始化工作 如果用户使用了类似分布式文件系统等功能,还需要进行挂载 运行时初始化 通常指的是云厂商标准的 Runtime 环境的启动过程 受编程语言类型的影响比较大(JV...
cover
2023-02-07
FaaS - Trigger
事件 事件为系统运行期间发生的动作或者发生的事情,而函数计算,提供了一种事件驱动的计算模型 CloudEvents 期望通过一种通用的格式描述事件数据的规范,以提供跨服务、平台和系统的互操作性 国内云厂商的事件规范程度:在其中一家云产品上开发了函数,一般都需要进行简单的适配才能迁移 CNCF Serverless 工作组针对函数和工作流均定义了相关的格式规范和原语 单函数的事件触发 多个简单函数通过异步调用的方式形成事件触发 复杂场景下通过 WorkFlow 来进行编排的事件交互 触发器概述 由事件驱动连接上下游服务的关系组合称为触发器 函数计算由云函数和触发器组成 触发器描述了一组关系和规则,包括核心要素:事件源、目标函数、触发条件 事件源:事件的生产者 目标函数:事件的处理者 触发条件:当触发条件满足时,就会通知函数计算引擎,调度对应的目标函数执行 触发器的元数据可以由服务方持久存储,也可以由函数托管平台和服务方共同持有 类型集成原则 区别:事件源和事件的规则存储在哪里,以及从哪里触发 单向集成触发器 双向集成触发器 代理集成触发器 设计触发器的主要考虑:事件源和函数计算的...
cover
2023-02-14
FaaS - WebIDE
架构 组成 蓝色部分 WebIDE 客户端的核心 Run VS Code on any machine anywhere and access it in the browser 绿色部分 将 WebIDE 与 FaaS 结合的核心 橘色部分 Serverless 形态下的必备支撑服务 过程 用户在 VS Code 的前端页面向后端发出函数在线编辑的请求 服务端,即 FaaS 的 Controller 在接收到请求并验证权限后,再转给 VS Code Server 容器实例 VS Code Server 容器实例会获取用户代码,然后再加载 FaaS 的资源调度系统 根据目前 Container Pool 中的资源现状,动态扩缩容 WebIDE Pod 资源 VS Code Server 根据用户请求,会调用 Serverless Extension BE 基于此时语言的环境,执行操作,并将执行结果返回给 Client 端 注意 可以将 Serverless Extension 插件提前集成在 VS Code Server 的镜像中 FaaS Runtime 依据原来函数计...
cover
2023-02-06
FaaS - Life Cycle
Serverless概述 Serverless 是一种架构设计理念,并非一个具体的编程框架、类库或者工具 Serverless = FaaS + BaaS 构建和运行不需要服务器管理的应用程序 描述一种更细粒度的部署模型 将应用程序打包上传到 Serverless 平台,然后根据实际需求,执行、扩展和计费 Serverless 能够实现业务和基础设施的分离 通过多种服务器无感知技术,将基础设施抽象成各种开箱即用的服务 以 API 接口的方式提供给用户按需调用,真正做到按需伸缩、按量收费 场景 形成了以函数计算、弹性应用、容器服务为核心的产品形态 函数计算 - 面向函数 用户只需关注函数层级的代码,用于解决轻量型、无状态、有时效的任务 Serverless 应用托管 - 面向应用 应用只需要关注应用本身 与微服务结合,融合应用治理、可观测 降低了新应用的构建成本,老应用的适配改造成本 Serverless 应用服务 - 面向容器 在不改变当前 kubernetes 的前提下,由于不再需要关注 Node,降低了维护成本 FaaS Life Cycle用户视角 开发...
cover
2023-02-08
FaaS - Advanced Attributes
公共能力 将函数依赖的公共库提炼到层,以减少部署、更新时的代码包体积 对于支持层功能的运行时,函数计算会将特定的目录添加到运行时语言的依赖包搜索路径中 对于自定义层,需要将所有内容打包到一个压缩包,并上传到函数计算平台 函数计算运行时会将层的内容解压并部署到特定的目录 层功能的好处 函数程序包更小 避免在制作函数 zip 包和依赖项过程中出现未知的错误 可以在多个函数中引入使用,减少不必要的存储资源浪费 上传层之后,函数计算会将层的 zip 包上传到对象存储 当调用函数执行时,会从对象存储中下载层的 zip 包并解压到特定目录 应用程序只需要访问特定目录,就能读取层的依赖和公共代码 注意:后序的层会覆盖相同目录下的文件 快速迭代 标准运行时 / 自定义镜像 函数计算系统初始化执行环境之前,会扮演该函数的服务角色,获得临时用户名和密码并拉取镜像 镜像拉取成功后,会根据指定的启动命令、参数和端口,启动自定义的 HTTP Server 该 HTTP Server 会接管函数计算系统所有请求的调用 调用方式不同:事件函数 / HTTP 函数 在创建函...
avatar
zhongmingmao
Focus on Infrastructure.
Articles
658
Tags
198
Categories
91
Announcement
Things are always unexpected!
Recent Posts
Authorization - Casbin API
Authorization - Casbin API2026-04-13
Authorization - Casbin Management
Authorization - Casbin Management2026-04-13
Authorization - Casbin Plugin
Authorization - Casbin Plugin2026-04-12
Authorization - Casbin Use Cases
Authorization - Casbin Use Cases2026-04-12
Authorization - Casbin Storage
Authorization - Casbin Storage2026-04-12
© 2015 - 2026 By zhongmingmao
Life is like a box of chocolates. You can't know what you'll eat until you open it.