书籍详情

Serverless核心技术和大规模实践

Serverless核心技术和大规模实践

作者:ByteFaaS函数计算团队

出版社:人民邮电出版社

出版时间:2023-01-01

ISBN:9787115605290

定价:¥79.80

购买这本书可以去
内容简介
  本书着眼于 Serverless 方向,重点介绍 FaaS 的架构和实现原理。本书从 Serverless 的理念和基础知识出发,介绍业内具有代表性的 Serverless 产品,进而引出字节跳动函数计算产品 ByteFaaS,并介绍 ByteFaaS 的定位、特点和生态,以及整体架构等;详细介绍传统 FaaS 架构,包括 FaaS 控制面、FaaS 数据面、FaaS 运行时、FaaS 触发器、FaaS 弹性伸缩等核心组件的设计与实现;阐述 FaaS 助推 PaaS 演进的思路和技术实践,并延伸到 FaaS 轻量级函数与云边一体;介绍 Serverless 在字节跳动的落地实践和对 Serverless 未来的展望。
作者简介
  ByteFaaS函数计算团队 杨华辉:字节跳动基础架构函数计算团队负责人,主要关注分布式系统、容器化、高可用、可扩展架构设计等领域,具备大规模系统的落地实践经验。 陈辉:就职于字节跳动 Serverless 团队,目前主要负责大规模二进制分发、异步任务、网关服务、控制面系统以及 FaaS 场景下服务网格生态等相关工作。 吴桂勇:就职于字节跳动 Serverless 团队,目前主要负责 FaaS 数据面架构、系统高可用方面的工作。 阔鑫:就职于字节跳动 Serverless 团队,目前主要负责字节跳动内部微服务上的 FaaS 方案推进和火山引擎 FaaS 类型产品的迭代。 李博:就职于字节跳动 Serverless 团队,目前主要负责 FaaS 平台侧、触发器、弹性伸缩方面的工作。 彭?Z文:加入字节跳动以来,一直专注于 Serverless 领域,目前主要负责 FaaS 数据面架构、轻量级函数和云边一体方面的工作。 于童:入职字节跳动后,负责 CronJob 平台研发和 FaaS 平台研发,目前主要专注于边缘计算云边一体化、轻量级函数方向,负责整体稳定性和可用性相关工作。
目录
第 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

猜您喜欢

读书导航