Serverless核心技術和大規模實踐

ByteFaaS函數計算團隊

  • 出版商: 人民郵電
  • 出版日期: 2023-01-01
  • 定價: $479
  • 售價: 8.5$407
  • 語言: 簡體中文
  • 頁數: 208
  • ISBN: 7115605297
  • ISBN-13: 9787115605290
  • 相關分類: Serverless
  • 立即出貨

  • Serverless核心技術和大規模實踐-preview-1
  • Serverless核心技術和大規模實踐-preview-2
Serverless核心技術和大規模實踐-preview-1

買這商品的人也買了...

商品描述

本書著眼於 Serverless 方向,重點介紹 FaaS 的架構和實現原理。本書從 Serverless 的理念和基礎知識出發,介紹業內具有代表性的 Serverless 產品,進而引出字節跳動函數計算產品 ByteFaaS,並介紹 ByteFaaS 的定位、特點和生態,以及整體架構等;詳細介紹傳統 FaaS 架構,包括 FaaS 控制面、FaaS 數據面、FaaS 運行時、FaaS 觸發器、FaaS 彈性伸縮等核心組件的設計與實現;闡述 FaaS 助推 PaaS 演進的思路和技術實踐,並延伸到 FaaS 輕量級函數與雲邊一體;介紹 Serverless 在字節跳動的落地實踐和對 Serverless 未來的展望。

作者簡介

ByteFaaS函数计算团队

杨华辉:字节跳动基础架构函数计算团队负责人,主要关注分布式系统、容器化、高可用、可扩展架构设计等领域,具备大规模系统的落地实践经验。

陈辉:就职于字节跳动 Serverless 团队,目前主要负责大规模二进制分发、异步任务、网关服务、控制面系统以及 FaaS 场景下服务网格生态等相关工作。

吴桂勇:就职于字节跳动 Serverless 团队,目前主要负责 FaaS 数据面架构、系统高可用方面的工作。

阔鑫:就职于字节跳动 Serverless 团队,目前主要负责字节跳动内部微服务上的 FaaS 方案推进和火山引擎 FaaS 类型产品的迭代。

李博:就职于字节跳动 Serverless 团队,目前主要负责 FaaS 平台侧、触发器、弹性伸缩方面的工作。

彭璟文:加入字节跳动以来,一直专注于 Serverless 领域,目前主要负责 FaaS 数据面架构、轻量级函数和云边一体方面的工作。

于童:入职字节跳动后,负责 CronJob 平台研发和 FaaS 平台研发,目前主要专注于边缘计算云边一体化、轻量级函数方向,负责整体稳定性和可用性相关工作。

目錄大綱

第 1 章 Serverless 基礎知識 1

1.1 Serverless 基礎概念 1

1.1.1 Serverless 理念 1

1.1.2 Serverless 技術特點 2

1.2 Serverless 技術能力 4

1.3 Serverless 應用場景 4

1.4 本章小結 7

第 2 章 業內概況 9

2.1 業界產品 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 字節跳動 ByteFaaS 15

2.3.1 定位、特點和生態 15

2.3.2 整體架構 16

2.3.3 應用規模 18

2.4 本章小結 18

第 3 章 FaaS 控制面 19

3.1 控制面的整體架構 19

3.2 多地區多機房部署 21

3.2.1 單地區多機房容災部署 21

3.2.2 多地區統一控制面 22

3.3 構建和發布 24

3.3.1 構建 24

3.3.2 發布 25

3.4 可觀測性 27

3.4.1 日誌 27

3.4.2 監控 29

3.4.3 鏈路追蹤 31

3.5 開發體驗 31

3.5.1 ByteFaaS CLI 32

3.5.2 本地調試 33

3.5.3 在線調試 34

3.6 本章小結 37

第 4 章 FaaS 數據面 39

4.1 數據面整體架構 39

4.2 函數實例管理 41

4.2.1 函數實例的服務發現 41

4.2.2 函數實例的就緒檢測 42

4.3 函數流量調度 44

4.3.1 函數請求並發控制 45

4.3.2 函數分片 46

4.3.3 函數實例緩存 48

4.3.4 自適應降載 49

4.4 函數冷啟動優化 51

4.4.1 冷啟動問題背景 51

4.4.2 鏡像代碼分離 52

4.4.3 函數實例預熱 53

4.4.4 冷啟動實例調度 54

4.4.5 用戶側優化 56

4.5 函數代碼分發 57

4.5.1 多級緩存 58

4.5.2 下載優化 59

4.5.3 大規模分發 59

4.6 本章小結 61

第 5 章 FaaS 運行時 63

5.1 函數運行時 63

5.1.1 函數運行時規範 64

5.1.2 函數實例生命周期 67

5.2 函數運行時隔離技術 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 進程內隔離 78

5.3 函數運行時性能優化 80

5.3.1 RuntimeAgent 進程和數據面性能損耗 81

5.3.2 在 net/http 基礎上的優化 81

5.3.3 更優的 CPU、內存分配策略 84

5.4 本章小結 86

第 6 章 FaaS 觸發器 87

6.1 FaaS 平臺常見的觸發器 87

6.1.1 觸發器的分類 87

6.1.2 HTTP 觸發器的設計與實現 . 88

6.1.3 服務發現觸發器的設計與實現 89

6.1.4 定時觸發器的設計與實現 89

6.2 MQ 觸發器的設計與實現 90

6.2.1 MQ 觸發器的整體設計 . 90

6.2.2 觸發函數的並發控制 92

6.2.3 函數調用的反壓控制 93

6.2.4 觸發函數的限流控制 94

6.3 MQ 觸發器在大規模場景下的優化 . 96

6.3.1 消息的高效過濾 96

6.3.2 觸發器的重新平衡優化 . 99

6.3.3 超大規模函數的連接數分片優化 101

6.4 基於 MQ 觸發器的第三方觸發器的接入 102

6.4.1 基於 Event Gateway 的接入 103

6.4.2 基於 MQ 的接入 103

6.5 本章小結 104

第 7 章 FaaS 彈性伸縮 105

7.1 彈性伸縮系統的定義和架構 105

7.1.1 彈性伸縮系統的定義 105

7.1.2 彈性伸縮系統的架構 106

7.2 彈性伸縮系統的策略設計 108

7.2.1 策略的分級和結合 108

7.2.2 策略的詳細設計 109

7.2.3 評分和策略反饋機制 110

7.3 彈性伸縮系統的指標設計 111

7.3.1 整體的架構設計 111

7.3.2 如何對指標數據進行存儲 . 113

7.3.3 FaaS MAS 自適應雲原生分片方案 114

7.4 彈性伸縮系統的分片架構 115

7.4.1 分片架構設計方案 115

7.4.2 分片架構的容錯機制 116

7.5 本章小結 117

第 8 章 FaaS 助推 PaaS 演進 119

8.1 FaaS Native:開發原生應用的解決方案 119

8.1.1 FaaS Native 的目標 120

8.1.2 運行原生應用代碼 120

8.1.3 自定義鏡像 121

8.2 多協議支持 124

8.2.1 數據調用與流量調度的解耦 124

8.2.2 HTTP/2 支持 126

8.2.3 gRPC 協議支持 128

8.2.4 Thrift 協議支持 131

8.2.5 客戶端流量接入 133

8.3 融入字節跳動微服務治理體系ByteMesh 135

8.3.1 ByteMesh: 字節跳動內部 Service Mesh 服務治理體系 136

8.3.2 上游服務訪問下游 FaaS . 137

8.3.3 上游 FaaS 訪問下游服務 138

8.3.4 FaaS 接入 ByteMesh 入流量代理 139

8.4 異步長時間執行任務支持 140

8.4.1 架構設計 140

8.4.2 任務管理 142

8.4.3 適用場景 144

8.5 本章小結 144

第 9 章 FaaS 輕量級函數與雲邊一體 . 145

9.1 輕量級函數 145

9.2 WebAssembly 輕量級函數運行時 146

9.2.1 什麽是 WebAssembly 146

9.2.2 Hostcall + WASI 147

9.2.3 運行時架構 149

9.2.4 冷啟動優化 150

9.2.5 代碼樣例 151

9.3 JavaScript 輕量級函數運行時 152

9.3.1 背景知識 153

9.3.2 Host API 153

9.3.3 運行時架構 154

9.3.4 冷啟動優化 155

9.3.5 代碼樣例 156

9.3.6 兩種函數輕量級運行時對比 157

9.4 精簡架構 158

9.4.1 整體架構 158

9.4.2 請求路徑 160

9.4.3 流量調度 161

9.4.4 冷啟動優化 162

9.4.5 高密度部署 164

9.5 雲邊架構 165

9.5.1 理念介紹 165

9.5.2 流量接入 166

9.5.3 雲邊通信 167

9.5.4 邊緣可用性 169

9.6 存儲服務 171

9.6.1 存儲資源 172

9.6.2 Global KV 172

9.6.3 Local Cache 174

9.6.4 多層緩存機制 176

9.7 開發者工具 177

9.7.1 代碼在線預覽工具 177

9.7.2 JavaScript 輕量級函數開發工具 179

9.8 本章小結 180

第 10 章 Serverless 在字節跳動的落地實踐 181

10.1 突破 Serverless 資源和性能的瓶頸 181

10.2 基於 Kubernetes 的雲原生體系 183

10.3 觸發器和自動擴縮容,承載大規模消費場景 184

10.3.1 一鍵配置,支持活動業務的快速迭代 184

10.3.2 彈性伸縮,潮汐流量的省錢“利器” 185

10.4 通用型 Serverless,多協議支持PaaS 演進 186

10.4.1 早期嘗試:基於 HTTP 的Thrift RPC 186

10.4.2 原生支持:與周邊團隊深度合作,打通 RPC 生態 . 187

10.4.3 進一步發揮 FaaS 優勢,RPC 與事件驅動架構結合 . 188

10.5 輕量級函數,打造雲邊一體架構 188

10.5.1 收斂長尾函數,承載突發流量 188

10.5.2 邊緣業務上線 189

10.6 本章小結 191

第 11 章 Serverless 展望 193

11.1 規範標準 193

11.2 通用型 Serverless 194

11.3 雲邊一體 196

11.4 本章小結 197