開啟主選單

求真百科

變更

Serverless核心技术和大规模实践

增加 9,105 位元組, 4 天前
创建页面,内容为“《'''Serverless核心技术和大规模实践'''》,ByteFaaS函数计算团队 著,出版社: 人民邮电出版社。 人民邮电出版社,1953年10月…”
《'''Serverless核心技术和大规模实践'''》,ByteFaaS函数计算团队 著,出版社: 人民邮电出版社。

人民邮电出版社,1953年10月成立,隶属于中国工信出版传媒集团,是[[工业]]和信息化部主管的大型专业出版社<ref>[http://www.zhongyw.com.cn/news/show-53574.html 我国出版社的等级划分和分类标准],知网出书,2021-03-01</ref>。建社以来,人民邮电出版社围绕“立足工信事业,面向现代[[社会]],传播科学知识,引领美好生活”的出版宗旨,已发展成为集图书、[[期刊]]、音像电子及数字出版于一体的综合性出版大社<ref>[https://www.ptpress.com.cn/p/z/1625016162875.html 人民邮电出版社简介],人民邮电出版社</ref>。

==内容简介==

本书着眼于 Serverless 方向,重点介绍 FaaS 的架构和实现原理。本书从 Serverless 的理念和基础知识出发,介绍业内具有代表性的 Serverless 产品,进而引出字节跳动函数计算产品 ByteFaaS,并介绍 ByteFaaS 的定位、特点和生态,以及整体架构等;详细介绍传统 FaaS 架构,包括 FaaS 控制面、FaaS 数据面、FaaS 运行时、FaaS 触发器、FaaS 弹性伸缩等核心组件的设计与实现;阐述 FaaS 助推 PaaS 演进的思路和技术实践,并延伸到 FaaS 轻量级函数与云边一体;介绍 Serverless 在字节跳动的落地实践和对 Serverless 未来的展望。

==目录==

第 1 章 Serverless 基础知识 1

1.1 Serverless 基础概念 1

1.1.1 Serverless 理念 1

1.1.2 Serverless [[技术]]特点 2

1.2 Serverless 技术能力 4

1.3 Serverless 应用场景 4

1.4 本章小结 7

第 2 章 业内概况 9

2.1 业界产品 9

2.1.1 AWS Lambda 9

2.1.2 Google Cloud Platform 10

2.1.3 Cloudflare Workers 11

2.1.4 Compute@Edge 13

2.2 开源项目 13

2.2.1 OpenFaaS 13

2.2.2 Fission 14

2.2.3 Knative 15

2.3 [[字节]]跳动 ByteFaaS 15

2.3.1 定位、特点和生态 15

2.3.2 整体架构 16

2.3.3 应用规模 18

2.4 本章小结 18

第 3 章 FaaS 控制面 19

3.1 控制面的整体架构 19

3.2 多地区多机房部署 21

3.2.1 单地区多机房容灾部署 21

3.2.2 多地区统一控制面 22

3.3 构建和发布 24

3.3.1 构建 24

3.3.2 发布 25

3.4 可观测性 27

3.4.1 日志 27

3.4.2 监控 29

3.4.3 链路追踪 31

3.5 开发体验 31

3.5.1 ByteFaaS CLI 32

3.5.2 本地调试 33

3.5.3 在线调试 34

3.6 本章小结 37

第 4 章 FaaS 数据面 39

4.1 数据面整体架构 39

4.2 函数实例管理 41

4.2.1 函数实例的服务发现 41

4.2.2 函数实例的就绪检测 42

4.3 函数流量调度 44

4.3.1 函数请求并发控制 45

4.3.2 函数分片 46

4.3.3 函数实例缓存 48

4.3.4 自适应降载 49

4.4 函数冷启动优化 51

4.4.1 冷启动问题背景 51

4.4.2 镜像代码分离 52

4.4.3 函数实例预热 53

4.4.4 冷启动实例调度 54

4.4.5 用户侧优化 56

4.5 函数代码分发 57

4.5.1 多级缓存 58

4.5.2 下载优化 59

4.5.3 大规模分发 59

4.6 本章小结 61

第 5 章 FaaS 运行时 63

5.1 函数运行时 63

5.1.1 函数运行时规范 64

5.1.2 函数实例生命周期 67

5.2 函数运行时隔离技术 70

5.2.1 基于 Docker 的容器封装隔离 . 70

5.2.2 从 Docker 到 containerd 的迁移 71

5.2.3 轻量级虚拟化:从 runC 到 Kata Containers 73

5.2.4 Unikernel 76

5.2.5 进程内隔离 78

5.3 函数运行时性能优化 80

5.3.1 RuntimeAgent 进程和数据面性能损耗 81

5.3.2 在 net/http 基础上的优化 81

5.3.3 更优的 CPU、内存分配策略 84

5.4 本章小结 86

第 6 章 FaaS 触发器 87

6.1 FaaS 平台常见的触发器 87

6.1.1 触发器的分类 87

6.1.2 HTTP 触发器的设计与实现 . 88

6.1.3 服务发现触发器的设计与实现 89

6.1.4 定时触发器的设计与实现 89

6.2 MQ 触发器的设计与实现 90

6.2.1 MQ 触发器的整体设计 . 90

6.2.2 触发函数的并发控制 92

6.2.3 函数调用的反压控制 93

6.2.4 触发函数的限流控制 94

6.3 MQ 触发器在大规模场景下的优化 . 96

6.3.1 消息的高效过滤 96

6.3.2 触发器的重新平衡优化 . 99

6.3.3 超大规模函数的连接数分片优化 101

6.4 基于 MQ 触发器的第三方触发器的接入 102

6.4.1 基于 Event Gateway 的接入 103

6.4.2 基于 MQ 的接入 103

6.5 本章小结 104

第 7 章 FaaS 弹性伸缩 105

7.1 弹性伸缩系统的定义和架构 105

7.1.1 弹性伸缩系统的定义 105

7.1.2 弹性伸缩系统的架构 106

7.2 弹性伸缩系统的策略设计 108

7.2.1 策略的分级和结合 108

7.2.2 策略的详细设计 109

7.2.3 评分和策略反馈机制 110

7.3 弹性伸缩系统的指标设计 111

7.3.1 整体的架构设计 111

7.3.2 如何对指标数据进行存储 . 113

7.3.3 FaaS MAS 自适应云原生分片方案 114

7.4 弹性伸缩系统的分片架构 115

7.4.1 分片架构设计方案 115

7.4.2 分片架构的容错机制 116

7.5 本章小结 117

第 8 章 FaaS 助推 PaaS 演进 119

8.1 FaaS Native:开发原生应用的解决方案 119

8.1.1 FaaS Native 的目标 120

8.1.2 运行原生应用代码 120

8.1.3 自定义镜像 121

8.2 多协议支持 124

8.2.1 数据调用与流量调度的解耦 124

8.2.2 HTTP/2 支持 126

8.2.3 gRPC 协议支持 128

8.2.4 Thrift 协议支持 131

8.2.5 客户端流量接入 133

8.3 融入字节跳动微服务治理体系ByteMesh 135

8.3.1 ByteMesh: 字节跳动内部 Service Mesh 服务治理体系 136

8.3.2 上游服务访问下游 FaaS . 137

8.3.3 上游 FaaS 访问下游服务 138

8.3.4 FaaS 接入 ByteMesh 入流量代理 139

8.4 异步长时间执行任务支持 140

8.4.1 架构设计 140

8.4.2 任务管理 142

8.4.3 适用场景 144

8.5 本章小结 144

第 9 章 FaaS 轻量级函数与云边一体 . 145

9.1 轻量级函数 145

9.2 WebAssembly 轻量级函数运行时 146

9.2.1 什么是 WebAssembly 146

9.2.2 Hostcall + WASI 147

9.2.3 运行时架构 149

9.2.4 冷启动优化 150

9.2.5 代码样例 151

9.3 JavaScript 轻量级函数运行时 152

9.3.1 背景知识 153

9.3.2 Host API 153

9.3.3 运行时架构 154

9.3.4 冷启动优化 155

9.3.5 代码样例 156

9.3.6 两种函数轻量级运行时对比 157

9.4 精简架构 158

9.4.1 整体架构 158

9.4.2 请求路径 160

9.4.3 流量调度 161

9.4.4 冷启动优化 162

9.4.5 高密度部署 164

9.5 云边架构 165

9.5.1 理念介绍 165

9.5.2 流量接入 166

9.5.3 云边通信 167

9.5.4 边缘可用性 169

9.6 存储服务 171

9.6.1 存储资源 172

9.6.2 Global KV 172

9.6.3 Local Cache 174

9.6.4 多层缓存机制 176

9.7 开发者工具 177

9.7.1 代码在线预览工具 177

9.7.2 JavaScript 轻量级函数开发工具 179

9.8 本章小结 180

第 10 章 Serverless 在字节跳动的落地实践 181

10.1 突破 Serverless 资源和性能的瓶颈 181

10.2 基于 Kubernetes 的云原生体系 183

10.3 触发器和自动扩缩容,承载大规模消费场景 184

10.3.1 一键配置,支持活动业务的快速迭代 184

10.3.2 弹性伸缩,潮汐流量的省钱“利器” 185

10.4 通用型 Serverless,多协议支持PaaS 演进 186

10.4.1 早期尝试:基于 HTTP 的Thrift RPC 186

10.4.2 原生支持:与周边团队深度合作,打通 RPC 生态 . 187

10.4.3 进一步发挥 FaaS 优势,RPC 与事件驱动架构结合 . 188

10.5 轻量级函数,打造云边一体架构 188

10.5.1 收敛长尾函数,承载突发流量 188

10.5.2 边缘业务上线 189

10.6 本章小结 191

第 11 章 Serverless 展望 193

11.1 规范标准 193

11.2 通用型 Serverless 194

11.3 云边一体 196

11.4 本章小结 197

==参考文献==
[[Category:040 類書總論;百科全書總論]]
262,283
次編輯