《NUCLIO 实战及源码分析:基于KUBERNETES的SERVERLESS FAAS平台》李彬 詹煜卓 任胜寒 张晨 | PDF下载|ePub下载
NUCLIO 实战及源码分析:基于KUBERNETES的SERVERLESS FAAS平台 版权信息
- 出版社:机械工业出版社
- 出版时间:2024-06-01
- ISBN:9787111753834
- 条形码:9787111753834 ; 978-7-111-75383-4
NUCLIO 实战及源码分析:基于KUBERNETES的SERVERLESS FAAS平台 本书特色
系统全面。本书涵盖了无服务器计算的主要特点、现状及发展趋势。以Nuclio Serverless FaaS平台为主线,从无服务器计算的基础知识到 Nuclio 的架构和功能,再到如何使用 Nuclio 构建、部署、调试和监控应用程序,本书都进行了详细的介绍。立足实践。本书不仅提供了理论知识,还包含实践案例和代码示例。读者通过阅读本书,可掌握使用 Nuclio Serverless FaaS 平台构建实际的无服务器应用程序。深入源码。本书不仅介绍了 Nuclio 的基本用法,还对Nuclio架构及源码进行了深入介绍。易于阅读。本书采用通俗易懂的语言进行写作,并配有大量图表和示例,即使是初学者也可以轻松理解。
NUCLIO 实战及源码分析:基于KUBERNETES的SERVERLESS FAAS平台 内容简介
无服务器计算是一种新的范式,可在无须管理服务器的情况下编写和部署应用程序。 它使开发人员能够专注于代码的编写,而无须担心服务器的配置、维护和扩展。本书全面介绍了无服务器的演进历程、架构原理和设计,深入探讨了开源Serverless Nuclio的架构、源码和实践,并提供了丰富的案例和代码示例。
NUCLIO 实战及源码分析:基于KUBERNETES的SERVERLESS FAAS平台 目录
前言
准备篇
第1章 全面认识Nuclio2
1.1 Serverless简介2
1.1.1 Serverless的发展背景2
1.1.2 Serverless的定义3
1.1.3 Serverless的优缺点4
1.1.4 Serverless的现状4
1.1.5 Serverless的适用场景5
1.2 Nuclio简介5
1.2.1 Nuclio的产生背景及发展历程6
1.2.2 Nuclio的架构设计6
1.2.3 Nuclio的使用群体8
1.3 Nuclio开发运维的基础知识8
1.3.1 应用容器引擎―Docker8
1.3.2 容器镜像构建工具―Kaniko10
1.3.3 容器集群管理系统―Kubernetes11
1.3.4 监控和告警系统―Prometheus13
1.3.5 路由基础―Ingress15
本章小结19
第2章 Nuclio初体验20
2.1 本地Docker环境20
2.1.1 准备环境20
2.1.2 快速开始22
2.1.3 问题排查25
2.2 KataCoda交互式环境27
2.3 Kubernetes 环境28
2.3.1 准备环境28
2.3.2 安装Nuclio28
2.4 Kubernetes生产环境32
2.4.1 Prometheus的部署32
2.4.2 Ingress的部署37
2.4.3 Nuclio平台41
2.4.4 Nuclio环境验证44
本章小结46
基础篇
第3章 DashBoard 服务组件48
3.1 DashBoard架构48
3.2 DashBoard参数解析50
3.3 Golang chi简介54
3.3.1 chi的特点54
3.3.2 chi的使用示例55
3.4 DashBoard启动流程56
3.4.1 获取平台配置项56
3.4.2 创建root日志对象57
3.4.3 创建DashBoard实例对象59
3.4.4 创建并启动健康检查服务59
3.4.5 创建平台实例对象59
3.4.6 创建鉴权配置59
3.4.7 创建server61
3.4.8 创建并监控Docker连接63
3.4.9 DashBoard服务启动63
3.5 DashBoard运行63
3.6 DashBoard创建函数流程64
3.6.1 Golang协程函数部署65
3.6.2 函数代码编译构建74
3.7 DashBoard API功能81
3.7.1 函数API功能82
3.7.2 项目API功能86
3.7.3 函数事件API功能89
3.7.4 函数模板API功能92
3.7.5 API网关功能93
3.7.6 V3IO流函数触发器功能97
3.7.7 其他API功能98
本章小结99
第4章 控制器组件100
4.1 控制器概述100
4.1.1 Informer组件101
4.1.2 SharedInformer 组件101
4.1.3 Workqueue组件103
4.2 自定义控制器103
4.3 Nuclio控制器104
4.3.1 Nuclio控制器的架构104
4.3.2 控制器参数解析107
4.3.3 控制器启动流程108
4.3.4 控制器的运行112
本章小结116
第5章 扩缩容服务组件117
5.1 扩缩容服务组件架构117
5.2 扩缩容服务组件DLX的启动流程118
5.2.1 创建DLX对象118
5.2.2 启动DLX122
5.3 扩缩容服务组件DLX的运行122
5.3.1 获取地址列表122
5.3.2 启动相应资源123
5.3.3 选取目的地址126
5.3.4 转发请求126
5.4 扩缩容服务组件AutoScaler的启动流程127
5.5 扩缩容服务组件AutoScaler的运行128
本章小结130
第6章 函数处理器131
6.1 函数处理器的架构131
6.2 函数处理器的组件132
6.3 函数处理器的启动133
6.3.1 读取函数处理器配置和平台配置133
6.3.2 创建日志和健康检查服务134
6.3.3 创建触发器135
6.3.4 创建管理服务137
6.3.5 创建指标服务139
6.3.6 函数处理器开始运行145
6.4 函数处理器处理请求147
6.4.1 请求信息校验148
6.4.2 获取所需的日志级别148
6.4.3 分配工作器并提交请求事件进行处理149
6.4.4 根据日志级别设置响应日志152
6.4.5 处理错误日志152
6.4.6 根据事件响应类型设置相应内容153
6.5 函数语言运行时153
6.5.1 共享内存语言153
6.5.2 Golang语言159
6.5.3 Shell语言162
6.5.4 .NET语言164
本章小结166
第7章 Nuclio的命令行客户端167
7.1 nuctl的用法167
7.2 nuctl运行平台168
7.3 Cobra的用法168
7.3.1 Cobra命令行参数169
7.3.2 Cobra使用示例169
7.3.3 nuctl Cobra命令行参数实现171
7.4 nuctl示例171
7.4.1 构建函数171
7.4.2 创建资源172
7.4.3 删除资源173
7.4.4 部署资源174
7.4.5 导出资源176
7.4.6 展示资源详情177
7.4.7 导入资源178
7.4.8 调用函数178
7.4.9 更新资源179
7.4.10 显示版本179
本章小结179
第8章 Nuclio的事件源映射和触发器180
8.1 Nuclio支持的事件类型180
8.2 Nuclio触发器182
8.2.1 Cron触发器182
8.2.2 HTTP触发器183
8.2.3 Kafka触发器185
8.2.4 RabbitMQ触发器187
8.2.5 MQTT触发器188
8.2.6 NATS触发器188
8.2.7 Kinesis触发器189
准备篇
第1章 全面认识Nuclio2
1.1 Serverless简介2
1.1.1 Serverless的发展背景2
1.1.2 Serverless的定义3
1.1.3 Serverless的优缺点4
1.1.4 Serverless的现状4
1.1.5 Serverless的适用场景5
1.2 Nuclio简介5
1.2.1 Nuclio的产生背景及发展历程6
1.2.2 Nuclio的架构设计6
1.2.3 Nuclio的使用群体8
1.3 Nuclio开发运维的基础知识8
1.3.1 应用容器引擎―Docker8
1.3.2 容器镜像构建工具―Kaniko10
1.3.3 容器集群管理系统―Kubernetes11
1.3.4 监控和告警系统―Prometheus13
1.3.5 路由基础―Ingress15
本章小结19
第2章 Nuclio初体验20
2.1 本地Docker环境20
2.1.1 准备环境20
2.1.2 快速开始22
2.1.3 问题排查25
2.2 KataCoda交互式环境27
2.3 Kubernetes 环境28
2.3.1 准备环境28
2.3.2 安装Nuclio28
2.4 Kubernetes生产环境32
2.4.1 Prometheus的部署32
2.4.2 Ingress的部署37
2.4.3 Nuclio平台41
2.4.4 Nuclio环境验证44
本章小结46
基础篇
第3章 DashBoard 服务组件48
3.1 DashBoard架构48
3.2 DashBoard参数解析50
3.3 Golang chi简介54
3.3.1 chi的特点54
3.3.2 chi的使用示例55
3.4 DashBoard启动流程56
3.4.1 获取平台配置项56
3.4.2 创建root日志对象57
3.4.3 创建DashBoard实例对象59
3.4.4 创建并启动健康检查服务59
3.4.5 创建平台实例对象59
3.4.6 创建鉴权配置59
3.4.7 创建server61
3.4.8 创建并监控Docker连接63
3.4.9 DashBoard服务启动63
3.5 DashBoard运行63
3.6 DashBoard创建函数流程64
3.6.1 Golang协程函数部署65
3.6.2 函数代码编译构建74
3.7 DashBoard API功能81
3.7.1 函数API功能82
3.7.2 项目API功能86
3.7.3 函数事件API功能89
3.7.4 函数模板API功能92
3.7.5 API网关功能93
3.7.6 V3IO流函数触发器功能97
3.7.7 其他API功能98
本章小结99
第4章 控制器组件100
4.1 控制器概述100
4.1.1 Informer组件101
4.1.2 SharedInformer 组件101
4.1.3 Workqueue组件103
4.2 自定义控制器103
4.3 Nuclio控制器104
4.3.1 Nuclio控制器的架构104
4.3.2 控制器参数解析107
4.3.3 控制器启动流程108
4.3.4 控制器的运行112
本章小结116
第5章 扩缩容服务组件117
5.1 扩缩容服务组件架构117
5.2 扩缩容服务组件DLX的启动流程118
5.2.1 创建DLX对象118
5.2.2 启动DLX122
5.3 扩缩容服务组件DLX的运行122
5.3.1 获取地址列表122
5.3.2 启动相应资源123
5.3.3 选取目的地址126
5.3.4 转发请求126
5.4 扩缩容服务组件AutoScaler的启动流程127
5.5 扩缩容服务组件AutoScaler的运行128
本章小结130
第6章 函数处理器131
6.1 函数处理器的架构131
6.2 函数处理器的组件132
6.3 函数处理器的启动133
6.3.1 读取函数处理器配置和平台配置133
6.3.2 创建日志和健康检查服务134
6.3.3 创建触发器135
6.3.4 创建管理服务137
6.3.5 创建指标服务139
6.3.6 函数处理器开始运行145
6.4 函数处理器处理请求147
6.4.1 请求信息校验148
6.4.2 获取所需的日志级别148
6.4.3 分配工作器并提交请求事件进行处理149
6.4.4 根据日志级别设置响应日志152
6.4.5 处理错误日志152
6.4.6 根据事件响应类型设置相应内容153
6.5 函数语言运行时153
6.5.1 共享内存语言153
6.5.2 Golang语言159
6.5.3 Shell语言162
6.5.4 .NET语言164
本章小结166
第7章 Nuclio的命令行客户端167
7.1 nuctl的用法167
7.2 nuctl运行平台168
7.3 Cobra的用法168
7.3.1 Cobra命令行参数169
7.3.2 Cobra使用示例169
7.3.3 nuctl Cobra命令行参数实现171
7.4 nuctl示例171
7.4.1 构建函数171
7.4.2 创建资源172
7.4.3 删除资源173
7.4.4 部署资源174
7.4.5 导出资源176
7.4.6 展示资源详情177
7.4.7 导入资源178
7.4.8 调用函数178
7.4.9 更新资源179
7.4.10 显示版本179
本章小结179
第8章 Nuclio的事件源映射和触发器180
8.1 Nuclio支持的事件类型180
8.2 Nuclio触发器182
8.2.1 Cron触发器182
8.2.2 HTTP触发器183
8.2.3 Kafka触发器185
8.2.4 RabbitMQ触发器187
8.2.5 MQTT触发器188
8.2.6 NATS触发器188
8.2.7 Kinesis触发器189
NUCLIO 实战及源码分析:基于KUBERNETES的SERVERLESS FAAS平台 作者简介
李彬,紫金山网络通信与安全实验室Serverless工程师。2016-2021年就职于华为技术有限公司,主要从事云计算服务器研发工作; 2021年至今就职于紫金山网络通信与安全实验室,作为一名Serverless工程师主要从事Serverless研发工作。