Serverless核心技術(shù)和大規(guī)模實(shí)踐
定 價(jià):79.8 元
- 作者:ByteFaaS函數(shù)計(jì)算團(tuán)隊(duì)
- 出版時(shí)間:2023/1/1
- ISBN:9787115605290
- 出 版 社:人民郵電出版社
- 中圖法分類:TN929.53
- 頁(yè)碼:208
- 紙張:
- 版次:01
- 開本:16開
本書著眼于 Serverless 方向,重點(diǎn)介紹 FaaS 的架構(gòu)和實(shí)現(xiàn)原理。本書從 Serverless 的理念和基礎(chǔ)知識(shí)出發(fā),介紹業(yè)內(nèi)具有代表性的 Serverless 產(chǎn)品,進(jìn)而引出字節(jié)跳動(dòng)函數(shù)計(jì)算產(chǎn)品 ByteFaaS,并介紹 ByteFaaS 的定位、特點(diǎn)和生態(tài),以及整體架構(gòu)等;詳細(xì)介紹傳統(tǒng) FaaS 架構(gòu),包括 FaaS 控制面、FaaS 數(shù)據(jù)面、FaaS 運(yùn)行時(shí)、FaaS 觸發(fā)器、FaaS 彈性伸縮等核心組件的設(shè)計(jì)與實(shí)現(xiàn);闡述 FaaS 助推 PaaS 演進(jìn)的思路和技術(shù)實(shí)踐,并延伸到 FaaS 輕量級(jí)函數(shù)與云邊一體;介紹 Serverless 在字節(jié)跳動(dòng)的落地實(shí)踐和對(duì) Serverless 未來(lái)的展望。
1.本書著眼于Serverless方向,重點(diǎn)介紹了FaaS的架構(gòu)和實(shí)現(xiàn)原理,內(nèi)容設(shè)計(jì)合理,適合Serverless領(lǐng)域的用戶、開發(fā)者與架構(gòu)師學(xué)習(xí)參考
2.內(nèi)容豐富,系統(tǒng)的分享了字節(jié)跳動(dòng)在Serverless領(lǐng)域的核心技術(shù)和大規(guī)模實(shí)踐
3.字節(jié)跳動(dòng)基礎(chǔ)架構(gòu)函數(shù)計(jì)算團(tuán)隊(duì)的Serverless大規(guī)模實(shí)踐技術(shù)分享,團(tuán)隊(duì)在 FaaS 領(lǐng)域有大規(guī)模實(shí)踐經(jīng)驗(yàn),專業(yè)性強(qiáng),實(shí)用性強(qiáng)
ByteFaaS函數(shù)計(jì)算團(tuán)隊(duì)
楊華輝:字節(jié)跳動(dòng)基礎(chǔ)架構(gòu)函數(shù)計(jì)算團(tuán)隊(duì)負(fù)責(zé)人,主要關(guān)注分布式系統(tǒng)、容器化、高可用、可擴(kuò)展架構(gòu)設(shè)計(jì)等領(lǐng)域,具備大規(guī)模系統(tǒng)的落地實(shí)踐經(jīng)驗(yàn)。
陳輝:就職于字節(jié)跳動(dòng) Serverless 團(tuán)隊(duì),目前主要負(fù)責(zé)大規(guī)模二進(jìn)制分發(fā)、異步任務(wù)、網(wǎng)關(guān)服務(wù)、控制面系統(tǒng)以及 FaaS 場(chǎng)景下服務(wù)網(wǎng)格生態(tài)等相關(guān)工作。
吳桂勇:就職于字節(jié)跳動(dòng) Serverless 團(tuán)隊(duì),目前主要負(fù)責(zé) FaaS 數(shù)據(jù)面架構(gòu)、系統(tǒng)高可用方面的工作。
闊鑫:就職于字節(jié)跳動(dòng) Serverless 團(tuán)隊(duì),目前主要負(fù)責(zé)字節(jié)跳動(dòng)內(nèi)部微服務(wù)上的 FaaS 方案推進(jìn)和火山引擎 FaaS 類型產(chǎn)品的迭代。
李博:就職于字節(jié)跳動(dòng) Serverless 團(tuán)隊(duì),目前主要負(fù)責(zé) FaaS 平臺(tái)側(cè)、觸發(fā)器、彈性伸縮方面的工作。
彭璟文:加入字節(jié)跳動(dòng)以來(lái),一直專注于 Serverless 領(lǐng)域,目前主要負(fù)責(zé) FaaS 數(shù)據(jù)面架構(gòu)、輕量級(jí)函數(shù)和云邊一體方面的工作。
于童:入職字節(jié)跳動(dòng)后,負(fù)責(zé) CronJob 平臺(tái)研發(fā)和 FaaS 平臺(tái)研發(fā),目前主要專注于邊緣計(jì)算云邊一體化、輕量級(jí)函數(shù)方向,負(fù)責(zé)整體穩(wěn)定性和可用性相關(guān)工作。
第 1 章 Serverless 基礎(chǔ)知識(shí) 1
1.1 Serverless 基礎(chǔ)概念 1
1.1.1 Serverless 理念 1
1.1.2 Serverless 技術(shù)特點(diǎn) 2
1.2 Serverless 技術(shù)能力 4
1.3 Serverless 應(yīng)用場(chǎ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 開源項(xiàng)目 13
2.2.1 OpenFaaS 13
2.2.2 Fission 14
2.2.3 Knative 15
2.3 字節(jié)跳動(dòng) ByteFaaS 15
2.3.1 定位、特點(diǎn)和生態(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ū)多機(jī)房部署 21
3.2.1 單地區(qū)多機(jī)房容災(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 可觀測(cè)性 27
3.4.1 日志 27
3.4.2 監(jiān)控 29
3.4.3 鏈路追蹤 31
3.5 開發(fā)體驗(yàn) 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ù)實(shí)例管理 41
4.2.1 函數(shù)實(shí)例的服務(wù)發(fā)現(xiàn) 41
4.2.2 函數(shù)實(shí)例的就緒檢測(cè) 42
4.3 函數(shù)流量調(diào)度 44
4.3.1 函數(shù)請(qǐng)求并發(fā)控制 45
4.3.2 函數(shù)分片 46
4.3.3 函數(shù)實(shí)例緩存 48
4.3.4 自適應(yīng)降載 49
4.4 函數(shù)冷啟動(dòng)優(yōu)化 51
4.4.1 冷啟動(dòng)問(wèn)題背景 51
4.4.2 鏡像代碼分離 52
4.4.3 函數(shù)實(shí)例預(yù)熱 53
4.4.4 冷啟動(dòng)實(shí)例調(diào)度 54
4.4.5 用戶側(cè)優(yōu)化 56
4.5 函數(shù)代碼分發(fā) 57
4.5.1 多級(jí)緩存 58
4.5.2 下載優(yōu)化 59
4.5.3 大規(guī)模分發(fā) 59
4.6 本章小結(jié) 61
第 5 章 FaaS 運(yùn)行時(shí) 63
5.1 函數(shù)運(yùn)行時(shí) 63
5.1.1 函數(shù)運(yùn)行時(shí)規(guī)范 64
5.1.2 函數(shù)實(shí)例生命周期 67
5.2 函數(shù)運(yùn)行時(shí)隔離技術(shù) 70
5.2.1 基于 Docker 的容器封裝隔離 . 70
5.2.2 從 Docker 到 containerd 的遷移 71
5.2.3 輕量級(jí)虛擬化:從 runC 到 Kata Containers 73
5.2.4 Unikernel 76
5.2.5 進(jìn)程內(nèi)隔離 78
5.3 函數(shù)運(yùn)行時(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 平臺(tái)常見的觸發(fā)器 87
6.1.1 觸發(fā)器的分類 87
6.1.2 HTTP 觸發(fā)器的設(shè)計(jì)與實(shí)現(xiàn) . 88
6.1.3 服務(wù)發(fā)現(xiàn)觸發(fā)器的設(shè)計(jì)與實(shí)現(xiàn) 89
6.1.4 定時(shí)觸發(fā)器的設(shè)計(jì)與實(shí)現(xiàn) 89
6.2 MQ 觸發(fā)器的設(shè)計(jì)與實(shí)現(xiàn) 90
6.2.1 MQ 觸發(fā)器的整體設(shè)計(jì) . 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ī)模場(chǎng)景下的優(yōu)化 . 96
6.3.1 消息的高效過(guò)濾 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è)計(jì) 108
7.2.1 策略的分級(jí)和結(jié)合 108
7.2.2 策略的詳細(xì)設(shè)計(jì) 109
7.2.3 評(píng)分和策略反饋機(jī)制 110
7.3 彈性伸縮系統(tǒng)的指標(biāo)設(shè)計(jì) 111
7.3.1 整體的架構(gòu)設(shè)計(jì) 111
7.3.2 如何對(duì)指標(biāo)數(shù)據(jù)進(jìn)行存儲(chǔ) . 113
7.3.3 FaaS MAS 自適應(yīng)云原生分片方案 114
7.4 彈性伸縮系統(tǒng)的分片架構(gòu) 115
7.4.1 分片架構(gòu)設(shè)計(jì)方案 115
7.4.2 分片架構(gòu)的容錯(cuò)機(jī)制 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ùn)行原生應(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é)跳動(dòng)微服務(wù)治理體系ByteMesh 135
8.3.1 ByteMesh: 字節(jié)跳動(dòng)內(nèi)部 Service Mesh 服務(wù)治理體系 136
8.3.2 上游服務(wù)訪問(wèn)下游 FaaS . 137
8.3.3 上游 FaaS 訪問(wèn)下游服務(wù) 138
8.3.4 FaaS 接入 ByteMesh 入流量代理 139
8.4 異步長(zhǎng)時(shí)間執(zhí)行任務(wù)支持 140
8.4.1 架構(gòu)設(shè)計(jì) 140
8.4.2 任務(wù)管理 142
8.4.3 適用場(chǎng)景 144
8.5 本章小結(jié) 144
第 9 章 FaaS 輕量級(jí)函數(shù)與云邊一體 . 145
9.1 輕量級(jí)函數(shù) 145
9.2 WebAssembly 輕量級(jí)函數(shù)運(yùn)行時(shí) 146
9.2.1 什么是 WebAssembly 146
9.2.2 Hostcall + WASI 147
9.2.3 運(yùn)行時(shí)架構(gòu) 149
9.2.4 冷啟動(dòng)優(yōu)化 150
9.2.5 代碼樣例 151
9.3 JavaScript 輕量級(jí)函數(shù)運(yùn)行時(shí) 152
9.3.1 背景知識(shí) 153
9.3.2 Host API 153
9.3.3 運(yùn)行時(shí)架構(gòu) 154
9.3.4 冷啟動(dòng)優(yōu)化 155
9.3.5 代碼樣例 156
9.3.6 兩種函數(shù)輕量級(jí)運(yùn)行時(shí)對(duì)比 157
9.4 精簡(jiǎn)架構(gòu) 158
9.4.1 整體架構(gòu) 158
9.4.2 請(qǐng)求路徑 160
9.4.3 流量調(diào)度 161
9.4.4 冷啟動(dòng)優(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 存儲(chǔ)服務(wù) 171
9.6.1 存儲(chǔ)資源 172
9.6.2 Global KV 172
9.6.3 Local Cache 174
9.6.4 多層緩存機(jī)制 176
9.7 開發(fā)者工具 177
9.7.1 代碼在線預(yù)覽工具 177
9.7.2 JavaScript 輕量級(jí)函數(shù)開發(fā)工具 179
9.8 本章小結(jié) 180
第 10 章 Serverless 在字節(jié)跳動(dòng)的落地實(shí)踐 181
10.1 突破 Serverless 資源和性能的瓶頸 181
10.2 基于 Kubernetes 的云原生體系 183
10.3 觸發(fā)器和自動(dòng)擴(kuò)縮容,承載大規(guī)模消費(fèi)場(chǎng)景 184
10.3.1 一鍵配置,支持活動(dòng)業(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 原生支持:與周邊團(tuán)隊(duì)深度合作,打通 RPC 生態(tài) . 187
10.4.3 進(jìn)一步發(fā)揮 FaaS 優(yōu)勢(shì),RPC 與事件驅(qū)動(dòng)架構(gòu)結(jié)合 . 188
10.5 輕量級(jí)函數(shù),打造云邊一體架構(gòu) 188
10.5.1 收斂長(zhǎng)尾函數(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