Serverless核心技術(shù)和大規(guī)模實踐
定 價:79.8 元
- 作者:ByteFaaS函數(shù)計算團隊
- 出版時間:2023/1/1
- ISBN:9787115605290
- 出 版 社:人民郵電出版社
- 中圖法分類:TN929.53
- 頁碼:208
- 紙張:
- 版次:01
- 開本:16開
本書著眼于 Serverless 方向,重點介紹 FaaS 的架構(gòu)和實現(xiàn)原理。本書從 Serverless 的理念和基礎(chǔ)知識出發(fā),介紹業(yè)內(nèi)具有代表性的 Serverless 產(chǎn)品,進(jìn)而引出字節(jié)跳動函數(shù)計算產(chǎn)品 ByteFaaS,并介紹 ByteFaaS 的定位、特點和生態(tài),以及整體架構(gòu)等;詳細(xì)介紹傳統(tǒng) FaaS 架構(gòu),包括 FaaS 控制面、FaaS 數(shù)據(jù)面、FaaS 運行時、FaaS 觸發(fā)器、FaaS 彈性伸縮等核心組件的設(shè)計與實現(xiàn);闡述 FaaS 助推 PaaS 演進(jìn)的思路和技術(shù)實踐,并延伸到 FaaS 輕量級函數(shù)與云邊一體;介紹 Serverless 在字節(jié)跳動的落地實踐和對 Serverless 未來的展望。
1.本書著眼于Serverless方向,重點介紹了FaaS的架構(gòu)和實現(xiàn)原理,內(nèi)容設(shè)計合理,適合Serverless領(lǐng)域的用戶、開發(fā)者與架構(gòu)師學(xué)習(xí)參考
2.內(nèi)容豐富,系統(tǒng)的分享了字節(jié)跳動在Serverless領(lǐng)域的核心技術(shù)和大規(guī)模實踐
3.字節(jié)跳動基礎(chǔ)架構(gòu)函數(shù)計算團隊的Serverless大規(guī)模實踐技術(shù)分享,團隊在 FaaS 領(lǐng)域有大規(guī)模實踐經(jīng)驗,專業(yè)性強,實用性強
ByteFaaS函數(shù)計算團隊
楊華輝:字節(jié)跳動基礎(chǔ)架構(gòu)函數(shù)計算團隊負(fù)責(zé)人,主要關(guān)注分布式系統(tǒng)、容器化、高可用、可擴展架構(gòu)設(shè)計等領(lǐng)域,具備大規(guī)模系統(tǒng)的落地實踐經(jīng)驗。
陳輝:就職于字節(jié)跳動 Serverless 團隊,目前主要負(fù)責(zé)大規(guī)模二進(jìn)制分發(fā)、異步任務(wù)、網(wǎng)關(guān)服務(wù)、控制面系統(tǒng)以及 FaaS 場景下服務(wù)網(wǎng)格生態(tài)等相關(guān)工作。
吳桂勇:就職于字節(jié)跳動 Serverless 團隊,目前主要負(fù)責(zé) FaaS 數(shù)據(jù)面架構(gòu)、系統(tǒng)高可用方面的工作。
闊鑫:就職于字節(jié)跳動 Serverless 團隊,目前主要負(fù)責(zé)字節(jié)跳動內(nèi)部微服務(wù)上的 FaaS 方案推進(jìn)和火山引擎 FaaS 類型產(chǎn)品的迭代。
李博:就職于字節(jié)跳動 Serverless 團隊,目前主要負(fù)責(zé) FaaS 平臺側(cè)、觸發(fā)器、彈性伸縮方面的工作。
彭璟文:加入字節(jié)跳動以來,一直專注于 Serverless 領(lǐng)域,目前主要負(fù)責(zé) FaaS 數(shù)據(jù)面架構(gòu)、輕量級函數(shù)和云邊一體方面的工作。
于童:入職字節(jié)跳動后,負(fù)責(zé) CronJob 平臺研發(fā)和 FaaS 平臺研發(fā),目前主要專注于邊緣計算云邊一體化、輕量級函數(shù)方向,負(fù)責(zé)整體穩(wěn)定性和可用性相關(guān)工作。
第 1 章 Serverless 基礎(chǔ)知識 1
1.1 Serverless 基礎(chǔ)概念 1
1.1.1 Serverless 理念 1
1.1.2 Serverless 技術(shù)特點 2
1.2 Serverless 技術(shù)能力 4
1.3 Serverless 應(yīng)用場景 4
1.4 本章小結(jié) 7
第 2 章 業(yè)內(nèi)概況 9
2.1 業(yè)界產(chǎn)品 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 字節(jié)跳動 ByteFaaS 15
2.3.1 定位、特點和生態(tài) 15
2.3.2 整體架構(gòu) 16
2.3.3 應(yīng)用規(guī)!18
2.4 本章小結(jié) 18
第 3 章 FaaS 控制面 19
3.1 控制面的整體架構(gòu) 19
3.2 多地區(qū)多機房部署 21
3.2.1 單地區(qū)多機房容災(zāi)部署 21
3.2.2 多地區(qū)統(tǒng)一控制面 22
3.3 構(gòu)建和發(fā)布 24
3.3.1 構(gòu)建 24
3.3.2 發(fā)布 25
3.4 可觀測性 27
3.4.1 日志 27
3.4.2 監(jiān)控 29
3.4.3 鏈路追蹤 31
3.5 開發(fā)體驗 31
3.5.1 ByteFaaS CLI 32
3.5.2 本地調(diào)試 33
3.5.3 在線調(diào)試 34
3.6 本章小結(jié) 37
第 4 章 FaaS 數(shù)據(jù)面 39
4.1 數(shù)據(jù)面整體架構(gòu) 39
4.2 函數(shù)實例管理 41
4.2.1 函數(shù)實例的服務(wù)發(fā)現(xiàn) 41
4.2.2 函數(shù)實例的就緒檢測 42
4.3 函數(shù)流量調(diào)度 44
4.3.1 函數(shù)請求并發(fā)控制 45
4.3.2 函數(shù)分片 46
4.3.3 函數(shù)實例緩存 48
4.3.4 自適應(yīng)降載 49
4.4 函數(shù)冷啟動優(yōu)化 51
4.4.1 冷啟動問題背景 51
4.4.2 鏡像代碼分離 52
4.4.3 函數(shù)實例預(yù)熱 53
4.4.4 冷啟動實例調(diào)度 54
4.4.5 用戶側(cè)優(yōu)化 56
4.5 函數(shù)代碼分發(fā) 57
4.5.1 多級緩存 58
4.5.2 下載優(yōu)化 59
4.5.3 大規(guī)模分發(fā) 59
4.6 本章小結(jié) 61
第 5 章 FaaS 運行時 63
5.1 函數(shù)運行時 63
5.1.1 函數(shù)運行時規(guī)范 64
5.1.2 函數(shù)實例生命周期 67
5.2 函數(shù)運行時隔離技術(shù) 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 進(jìn)程內(nèi)隔離 78
5.3 函數(shù)運行時性能優(yōu)化 80
5.3.1 RuntimeAgent 進(jìn)程和數(shù)據(jù)面性能損耗 81
5.3.2 在 net/http 基礎(chǔ)上的優(yōu)化 81
5.3.3 更優(yōu)的 CPU、內(nèi)存分配策略 84
5.4 本章小結(jié) 86
第 6 章 FaaS 觸發(fā)器 87
6.1 FaaS 平臺常見的觸發(fā)器 87
6.1.1 觸發(fā)器的分類 87
6.1.2 HTTP 觸發(fā)器的設(shè)計與實現(xiàn) . 88
6.1.3 服務(wù)發(fā)現(xiàn)觸發(fā)器的設(shè)計與實現(xiàn) 89
6.1.4 定時觸發(fā)器的設(shè)計與實現(xiàn) 89
6.2 MQ 觸發(fā)器的設(shè)計與實現(xiàn) 90
6.2.1 MQ 觸發(fā)器的整體設(shè)計 . 90
6.2.2 觸發(fā)函數(shù)的并發(fā)控制 92
6.2.3 函數(shù)調(diào)用的反壓控制 93
6.2.4 觸發(fā)函數(shù)的限流控制 94
6.3 MQ 觸發(fā)器在大規(guī)模場景下的優(yōu)化 . 96
6.3.1 消息的高效過濾 96
6.3.2 觸發(fā)器的重新平衡優(yōu)化 . 99
6.3.3 超大規(guī)模函數(shù)的連接數(shù)分片優(yōu)化 101
6.4 基于 MQ 觸發(fā)器的第三方觸發(fā)器的接入 102
6.4.1 基于 Event Gateway 的接入 103
6.4.2 基于 MQ 的接入 103
6.5 本章小結(jié) 104
第 7 章 FaaS 彈性伸縮 105
7.1 彈性伸縮系統(tǒng)的定義和架構(gòu) 105
7.1.1 彈性伸縮系統(tǒng)的定義 105
7.1.2 彈性伸縮系統(tǒng)的架構(gòu) 106
7.2 彈性伸縮系統(tǒng)的策略設(shè)計 108
7.2.1 策略的分級和結(jié)合 108
7.2.2 策略的詳細(xì)設(shè)計 109
7.2.3 評分和策略反饋機制 110
7.3 彈性伸縮系統(tǒng)的指標(biāo)設(shè)計 111
7.3.1 整體的架構(gòu)設(shè)計 111
7.3.2 如何對指標(biāo)數(shù)據(jù)進(jìn)行存儲 . 113
7.3.3 FaaS MAS 自適應(yīng)云原生分片方案 114
7.4 彈性伸縮系統(tǒng)的分片架構(gòu) 115
7.4.1 分片架構(gòu)設(shè)計方案 115
7.4.2 分片架構(gòu)的容錯機制 116
7.5 本章小結(jié) 117
第 8 章 FaaS 助推 PaaS 演進(jìn) 119
8.1 FaaS Native:開發(fā)原生應(yīng)用的解決方案 119
8.1.1 FaaS Native 的目標(biāo) 120
8.1.2 運行原生應(yīng)用代碼 120
8.1.3 自定義鏡像 121
8.2 多協(xié)議支持 124
8.2.1 數(shù)據(jù)調(diào)用與流量調(diào)度的解耦 124
8.2.2 HTTP/2 支持 126
8.2.3 gRPC 協(xié)議支持 128
8.2.4 Thrift 協(xié)議支持 131
8.2.5 客戶端流量接入 133
8.3 融入字節(jié)跳動微服務(wù)治理體系ByteMesh 135
8.3.1 ByteMesh: 字節(jié)跳動內(nèi)部 Service Mesh 服務(wù)治理體系 136
8.3.2 上游服務(wù)訪問下游 FaaS . 137
8.3.3 上游 FaaS 訪問下游服務(wù) 138
8.3.4 FaaS 接入 ByteMesh 入流量代理 139
8.4 異步長時間執(zhí)行任務(wù)支持 140
8.4.1 架構(gòu)設(shè)計 140
8.4.2 任務(wù)管理 142
8.4.3 適用場景 144
8.5 本章小結(jié) 144
第 9 章 FaaS 輕量級函數(shù)與云邊一體 . 145
9.1 輕量級函數(shù) 145
9.2 WebAssembly 輕量級函數(shù)運行時 146
9.2.1 什么是 WebAssembly 146
9.2.2 Hostcall + WASI 147
9.2.3 運行時架構(gòu) 149
9.2.4 冷啟動優(yōu)化 150
9.2.5 代碼樣例 151
9.3 JavaScript 輕量級函數(shù)運行時 152
9.3.1 背景知識 153
9.3.2 Host API 153
9.3.3 運行時架構(gòu) 154
9.3.4 冷啟動優(yōu)化 155
9.3.5 代碼樣例 156
9.3.6 兩種函數(shù)輕量級運行時對比 157
9.4 精簡架構(gòu) 158
9.4.1 整體架構(gòu) 158
9.4.2 請求路徑 160
9.4.3 流量調(diào)度 161
9.4.4 冷啟動優(yōu)化 162
9.4.5 高密度部署 164
9.5 云邊架構(gòu) 165
9.5.1 理念介紹 165
9.5.2 流量接入 166
9.5.3 云邊通信 167
9.5.4 邊緣可用性 169
9.6 存儲服務(wù) 171
9.6.1 存儲資源 172
9.6.2 Global KV 172
9.6.3 Local Cache 174
9.6.4 多層緩存機制 176
9.7 開發(fā)者工具 177
9.7.1 代碼在線預(yù)覽工具 177
9.7.2 JavaScript 輕量級函數(shù)開發(fā)工具 179
9.8 本章小結(jié) 180
第 10 章 Serverless 在字節(jié)跳動的落地實踐 181
10.1 突破 Serverless 資源和性能的瓶頸 181
10.2 基于 Kubernetes 的云原生體系 183
10.3 觸發(fā)器和自動擴縮容,承載大規(guī)模消費場景 184
10.3.1 一鍵配置,支持活動業(yè)務(wù)的快速迭代 184
10.3.2 彈性伸縮,潮汐流量的省錢“利器” 185
10.4 通用型 Serverless,多協(xié)議支持PaaS 演進(jìn) 186
10.4.1 早期嘗試:基于 HTTP 的Thrift RPC 186
10.4.2 原生支持:與周邊團隊深度合作,打通 RPC 生態(tài) . 187
10.4.3 進(jìn)一步發(fā)揮 FaaS 優(yōu)勢,RPC 與事件驅(qū)動架構(gòu)結(jié)合 . 188
10.5 輕量級函數(shù),打造云邊一體架構(gòu) 188
10.5.1 收斂長尾函數(shù),承載突發(fā)流量 188
10.5.2 邊緣業(yè)務(wù)上線 189
10.6 本章小結(jié) 191
第 11 章 Serverless 展望 193
11.1 規(guī)范標(biāo)準(zhǔn) 193
11.2 通用型 Serverless 194
11.3 云邊一體 196
11.4 本章小結(jié) 197