目录
序 . 1
前言 3
**部分 OpenWhisk 开发介绍
第1 章 无服务器和OpenWhisk 体系结构 11
OpenWhisk 体系架构 12
功能和事件12
体系架构概览 13
OpenWhisk 编程语言 14
操作和操作组合 15
动作链接 16
OpenWhisk 是如何工作的? 17
Nginx 18
控制器 19
负载均衡器19
调用者 20
客户端 21
无服务执行限制 21
action 是功能性的 23
动作是事件驱动的 23
操作没有本地状态 24
action 是有时间限制的 24
操作是无序的 25
从Java EE 到无服务 25
经典的Java EE 架构 25
等效于Java EE 的无服务 27
小结 30
第2 章 一个简单的OpenWhisk 应用程序 33
开始 34
Bash 命令提示行 34
IBM 云 35
创建一个简单的联系人表单 37
表单验证 39
验证地址 40
返回结果 41
保存表单数据 42
调用action 45
存储到数据库中 47
发送电子邮件 49
配置Mailgun 50
编写一个action 来发送邮件 50
创建一个动作序列 53
小结 54
第3 章 OpenWhisk CLI 和JavaScript API 55
wsk 命令 56
配置wsk 命令 57
OpenWhisk 实体名 58
定义包 59
创建操作 61
操作的链式序列 64
包含一些你自己的代码作为库 66
检查激活 69
管理触发器和规则 70
使用反馈 75
通用JavaScript API 78
异步请求 78
使用promise 79
创造promise 80
使用OpenWhisk API 82
调用OpenWhisk 操作 83
触发触发器87
检查激活 89
小结 90
第4 章 OpenWhisk 通用设计模式 91
内置模式 92
单例模式 93
外观模式 94
原型模式 96
装饰模式 98
用操作实现通常模式 103
策略模式 103
责任链 106
命令模式 109
小结 113
第5 章 OpenWhisk 中的集成设计模式 115
集成模式 117
代理模式 117
适配器模式121
桥模式 123
观察模式 125
用户交互模式 130
组合模式 131
访问模式 133
MVC 模式 135
小结 138
第6 章 单元测试OpenWhisk 应用程序 139
使用Jest 测试运行程序 140
使用Jest 140
本地测试 143
Snapshot 测试 150
Mocking 155
什么是mock ? 155
模拟一个HTTPS 请求 156
模拟OpenWhisk API 163
使用模拟库调用操作 163
模拟操作参数 165
模拟一个序列 165
小结 167
第二部分 先进的OpenWhisk 开发应用
第7 章 用Python 开发OpenWhisk 操作 171
Python 运行时间 171
Python 运行时间是多少? 172
运行时间可用的库 174
使用第三方库 177
在zip 文件中打包一个Python 应用程序 177
使用virtualenv 180
virtualenv 和pip 的工作原理181
虚拟环境自动化 182
使用yattag 库 182
建立virtualenv,包括一个库 183
使用OpenWhisk REST API 184
身份验证 185
用curl 连接到API 186
在Python 中使用OpenWhisk REST API 188
Python 中的调用、激活和触发器 190
阻塞操作调用 191
非阻塞触发器调用 193
检索调用的结果 195
测试Python 操作 197
在本地重新创建Python 运行时环境 197
单元测试示例 198
在本地调用OpenWhisk API 201
模拟请求 202
小结 204
第8 章 在OpenWhisk 中使用CouchDB 205
如何查询CouchDB 206
在命令行上探索CouchDB 208
CouchDB 工作方式 209
创建数据库209
创建 210
检索 211
更新 211
删除 212
附件 213
查询CouchDB 216
搜索数据库217
索引 218
字段 219
分页支持 220
书签功能 221
选择器 221
运算符 223
CouchDB 设计文件 225
视图函数 227
用map 函数提取数据 227
用map 函数实现join 230
加入单个文档 233
带有reduce 函数的聚合 234
验证函数 236
使用cloudant 包 238
cloudant 包中的crud 操作 240
包含包的查询和视图 244
小结 246
第9 章 Python 中的OpenWhisk Web 应用程序 247
CRUD 应用程序体系结构 247
抽象数据库访问 250
实现modelinit() 251
实现modelinsert() 251
实现modelfind() 253
测试 insert 和 find 253
实现modelupdate() 和modeldelete() 255
测试update 和 delete 257
用户界面 257
测试 258
使用viewtable 呈现表 260
使用viewform 呈现表单 262
控制器 263
处理操作 264
边界效应 268
高级的Web 操作 269
改进CRUD 应用程序 272
验证和错误报告 274
分页 276
创建索引 277
使用书签和限制 277
页码 278
处理书签 279
上传和显示图像 280
文件上传表单 281
解析文件上传 282
将数据保存在数据库中 284
生成一个
标记 284
生成一个URL 来检索图像 285
使用HTTP 请求呈现图像 287
小结 288
第10 章 在Go 中开发OpenWhisk 操作 289
你的**个Go 语言操作 290
多文件包 293
import、GOPATH 和vendor 文件夹 294
在main 中多个文件的操作 295
多个包的操作 297
使用第三方库的操作 299
Go 如何使用第三方开源库 299
为库选择一个给定版本 300
预编译操作302
测试Go 操作 305
编写测试 305
测试用例 306
嵌入的资源 308
使用Web 操作提供资源 310
在Go 中访问OpenWhisk API 315
实用程序 315
HTTP 请求 317
调用OpenWhisk 操作 319
触发触发器321
检索与激活ID 关联的数据 323
小结 324
第11 章 通过OpenWhisk 使用Kafka 325
介绍Apache Kafka 326
Kafka 代理和协议 327
消息和关键字 328
主题和划分328
偏移量和客户机组 329
在IBM Cloud 中创建Kafka 实例 329
创建一个实例 330
创建一个主题 331
获取证书 332
使用消息传递包 333
创建连接和反馈 334
使用一个操作接收消息 334
使用kafkacat 发送消息 335
测试Kafka 代理 336
一个在Go 中的Kafka Producer(生成器) 338
创建一个Producer 338
发送Kafka 消息 340
编写发送者操作 341
部署和测试Producer 343
一个在Go 中的Kafka Consumer 344
创建一个Consumer 345
接收一个消息 347
编写一个接收者操作 349
测试Consumer 351
实现Web 聊天的应用程序 352
综述 353
用户界面 354
初始化 355
加入 356
接收 358
发送 359
小结 359
第12 章 使用Kubernetes 部署OpenWhisk 361
安装Kubernetes 362
安装kubectl 和 Helm 363
在本地安装Kubernetes 365
在云端安装Kubernetes 367
Kubernetes 云部署的架构 368
使用cloud-init 安装Kubernetes 的一般过程 370
在Hetzner Cloud 上安装 374
在AWSA 云上安装 377
在裸金属服务器上安装Kubernetes 381
收集所需软件 382
网络结构 383
安装脚本 384
创建集群 385
安装OpenWhisk 388
配置Kubectl 389
配置Helm 390
在Docker Desktop 上安装 391
在Kubernetes 集群中安装393
配置OpenWhisk 命令行界面 397
不安全地为Docker Desktop 配置wsk 397
创建一个新的命名空间 397
小结 399
总结 399
作者介绍 401
封面介绍 401