目錄
序 . 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