Serverless架構設計指南

張原 王昌鵬

  • 出版商: 機械工業
  • 出版日期: 2025-05-01
  • 售價: $594
  • 語言: 簡體中文
  • 頁數: 268
  • ISBN: 7111780132
  • ISBN-13: 9787111780137
  • 相關分類: Serverless
  • 下單後立即進貨 (約4週~6週)

相關主題

商品描述

Serverless作為一種近幾年流行的架構,其內部的設計相對覆雜。本書盡可能使用通俗易懂的語言來幫助讀者理解和掌握Serverless的開發與設計。 本書以JavaScript為主要語言進行講解,以Node.js運行時為主要運行環境進行服務設計的講解。本書共10章,分別為:Serverless架構的概述、Serverless的總體設計、Serverless架構的腳手架設計、Serverless架構的模塊設計、Serverless架構的函數設計、Serverless 結構設計、Serverless 架構的配置設計、Serverless架構的協議設計、Serverless架構的實踐以及Serverless架構 終形態的演變。內容主要涉及JavaScript語言的開發(包括前端和後端的代碼和功能的實現)、數據庫的開發(如MongoDB、ETCD等)、容器層面的開發(如Docker、 K8s)。從虛擬機(VM)的實現開始,逐步構造出一個虛擬化框架, 終形成一個Serverless架構平臺。 為了提升讀者的閱讀體驗,本書使用盡可能少的代碼示例。本書配套有難點實現的微視頻(掃碼即可觀看),以及相關案例源碼(獲取方式見封底)。 本書適合相關領域的研究人員和工程技術人員閱讀,也可作為高等院校計算機、軟件工程及相關專業師生的參考資料。

作者簡介

張原,滴滴前 開發工程師,曾任職於同花順、百草味、個推等知名企業。長期耕耘於Node.js領域,從事基建相關工作,對Serverless領域有自己獨特的見解,曾作為領域負責人,支撐每日千萬級別的調用量。活躍於知乎和Github等社區,並在社區中有自己獨特的貢獻,一些具有創新性思維的文章受到社區成員的關註和認可。 王昌鵬,畢業於東南大學,獲計算機碩士學位,曾任職於中國移動、阿裡巴巴、網易等因特網知名企業,目前在滴滴擔任專家工程師。在嵌入式、客戶端、前端及node等領域具有豐富的開發經驗,具有20多項授權專利技術。

目錄大綱

前言
第1章 Serverless架構的概述/
1.1什麽是Serverless架構/
1.1.1後端服務的演化/
1.1.2小顆粒度服務的流行/
1.1.3Serverless架構的難點/
1.2Serverless架構的作用/
1.2.1屏蔽運維需求/
1.2.2降低編碼門檻/
1.2.3搭建低成本流水線/
1.3Serverless架構的應用場景/
1.3.1初創企業/
1.3.2敏捷開發團隊/
1.3.3無需架構管理/
1.4主流Serverless架構設計的問題/
1.4.1非通用使用設計/
1.4.2回調與返回設計/
1.4.3中心化路由和分佈式路由設計/
1.4.4黑盒和顯式引用設計/
1.4.5生態和過於依賴廠商/
1.5Serverless架構的目標/
1.5.1開源與生態/
1.5.2完善的標準/
1.5.3私有化部署能力/
1.5.4去中心化服務/
第2章 Serverless的總體設計/
2.1項目的結構/
2.1.1設計結構一覽/
2.1.2虛擬機結構設計/
2.1.3框架結構設計/
2.1.4平臺結構設計/
2.2虛擬機的結構拆分/
2.2.1VM模塊/
2.2.2上下文設計/
2.2.3模塊系統設計/
2.2.4變量代理設計/
2.3框架的結構拆分/
2.3.1命令行工具設計/
2.3.2基礎庫設計/
2.3.3中間件設計/
2.3.4線程系統設計/
2.4框架線程系統的結構拆分/
2.4.1線程池設計/
2.4.2回收機制設計/
2.4.3動態運行時設計/
2.5運行時模塊拆分/
2.5.1運行時與虛擬機的關系/
2.5.2環境變量註入與模塊邏輯設計/
2.5.3服務加載虛擬機設計/
2.6平臺的結構拆分/
2.6.1去中心文件系統設計/
2.6.2代碼服務端部署設計/
2.6.3配置與註冊中心設計/
2.7平臺功能結構設計/
2.7.1App的註冊與配置/
2.7.2分流和灰度配置/
2.7.3App域名配置/
第3章 Serverless架構的腳手架設計/
3.1腳手架功能概述/
3.1.1服務運行/
3.1.2代碼編譯/
3.1.3服務部署/
3.2服務運行功能概述/
3.2.1配置獲取設計/
3.2.2開發模式設計/
3.2.3可插拔擴展設計/
3.3可插拔擴展設計與功能實現/
3.3.1插件出口入口設計與實現/
3.3.2依賴擴展設計與實現/
3.3.3擴展鏈路設計與實現/
3.4項目初始化功能設計/
3.4.1初始化模板的構建/
3.4.2模板拉取功能的實現/
3.5產物構建設計/
3.5.1打包的前置檢測/
3.5.2文件的構建和編譯/
3.5.3單應用和多應用打包的實現/
3.6服務部署設計/
3.6.1App的上傳與同步/
3.6.2服務器的服務加載/
3.6.3部署通知邏輯/
3.7分佈式代碼 新/
3.7.1分佈式代碼 新的目的/
3.7.2單機和多機代碼 新的區別/
3.7.3分佈式代碼 新實現/
第4章 Serverless架構的模塊設計/
4.1設計模塊化系統的目的/
4.1.1代碼的解耦合和覆用/
4.1.2互不影響的模塊/
4.1.3規範和模塊的擴展/
4.1.4依賴的權限控制/
4.2上下文的註入實現/
4.2.1上下文概述/
4.2.2模塊和文件的上下文/
4.2.3全局變量和方法上下文的註入/
4.3上下文的代理/
4.3.1上下文代理的原理/
4.3.2上下文和App綁定原理/
4.3.3上下文代理的具體實現/
4.4重新設計模塊化系統的實現/
4.4.1重寫require功能/
4.4.2權限系統判斷的實現/
4.4.3外部文件引用的剝離/
4.5import實現原理/
4.5.1import和require的關系/
4.5.2import的轉化實現/
4.5.3執行import的實現/
4.6代碼文件加載實現/
4.6.1VM遞歸加載實現/
4.6.2文件相互引用加載實現/
4.6.3 語法支持/
第5章 Serverless架構的函數設計/
5.1Serverless架構採用函數的原因/
5.1.1什麽是函數/
5.1.2降低編寫門檻的設計/
5.1.3接口職責的設計/
5.1.4相對靈活的服務/
5.2Serverless架構函數功能概述/
5.2.1主流Serverless架構的函數式設計問題/
5.2.2數據返回和異常處理設計概述/
5.2.3分佈式路由設計概述/
5.2.4代碼黑盒設計/
5.3函數的實例化實現/
5.3.1函數調用過程實現/
5.3.2線程實例化服務類實現/
5.3.3線程監聽調用事件實現/
5.4函數參數註入實現/
5.4.1線程的參數序列化/
5.4.2線程中重新實例化參數對象/
5.4.3參數原值通信/
5.5函數數據返回和異常設計實現/
5.5.1數據返回的實現/
5.5.2二進制數據和文件流的返回實現/
5.5.3異常在線程中的實例化/
5.5.4異常中間件捕捉實現/
5.6跨App函數調用設計與實現/
5.6.1RPC函數調用鏈路概述/
5.6.2RPC函數實現/
5.7分佈式路由設計實現/
5.7.1路由裝飾器實現/
5.7.2線程的路由通信/
5.7.3動態路由掛載實現/
第6章 Serverless結構設計/
6.1Serverless架構結構概述/
6.1.1項目結構設計概述/
6.1.2App結構設計概述/
6.1.3代碼結構設計概述/
6.2項目結構設計/
6.2.1配置文件的設計與實現/
6.2.2項目的編譯構建設計/
6.2.3項目依賴結構設計/
6.3App結構設計/
6.3.1App入口文件結構設計/
6.3.2App隔離結構設計/
6.3.3App運行與管理結構設計/
6.4代碼結構設計/
6.4.1框架引用設計/
6.4.2依賴引用設計/
6.4.3服務類和函數設計/
6.4.4代碼透出設計/
6.5編譯結構設計/
6.5.1編譯目錄結構設計/
6.5.2編譯配置解析/
6.5.3增量編譯實現/
第7章 Serverless架構的配置設計/
7.1配置模塊分類概述/
7.1.1框架配置/
7.1.2App配置/
7.1.3部署配置/
7.1.4流量配置/
7.2框架配置設計/
7.2.1項目基本配置設計/
7.2.2異步獲取配置設計/
7.3App配置設計/
7.3.1 線程配置設計/
7.3.2系統權限管控配置設計/
7.3.3超時配置設計/
7.3.4VM和資源配置設計/
7.4部署配置設計/
7.4.1部署版本配置設計/
7.4.2部署數據地址配置設計/
7.5請求流量配置設計/
7.5.1域名配置實現/
7.5.2分流配置實現/
7.5.3路由配置實現/
第8章 Serverless架構的協議設計/
8.1Serverless架構的協議組成/
8.1.1代碼協議/
8.1.2請求協議/
8.1.3應用隔離協議/
8.1.4通信協議/
8.1.5執行協議/
8.1.6部署協議/
8.1.7函數配置協議/
8.2代碼協議設計/
8.2.1路由協議/
8.2.2裝飾器協議/
8.2.3文件和路徑協議/
8.2.4方法暴露協議/
8.3請求協議設計/
8.3.1請求方式協議/
8.3.2請求分發協議/
8.4應用隔離協議設計/
8.4.1隔離方式協議/
8.4.2影響協議/
8.5通信協議設計/
8.5.1調用協議/
8.5.2溝通協議/
8.5.3喚起協議/
8.6執行協議設計/
8.6.1執行入口協議/
8.6.2返回值協議/
8.7部署協議設計/
8.7.1構建協議/
8.7.2請求部署協議/
8.7.3版本升級協議/
8.8函數配置協議設計/
8.8.1App配置協議/
8.8.2分流配置協議/
8.8.3部署配置協議/
第9章 Serverless架構的實踐/
9.1部署方案/
9.1.1部署依賴/
9.1.2部署規模準備/
9.2容器部署實現/
9.2.1Dockerfile準備/
9.2.2K8s接入/
9.2.3彈性伸縮配置/
9.3Serverless架構的限制實例/
9.3.1Serverless架構構建App/
9.3.2開發者的權限控制實例/
9.3.3開發者代碼引用規範實例/
9.4基於Serverless架構開發/
9.4.1接入數據庫/
9.4.2增刪改查的實例/
9.4.3前端頁面的渲染實例/
9.5用戶模塊的實現/
9.5.1登錄和註冊功能實現/
9.5.2Token的校驗和App交互/
9.6聊天系統功能實現/
9.6.1實時聊天實現/
9.6.2消息通知實現/
9.7App上線實踐/
9.7.1應用發布實踐/
9.7.2域名的綁定實踐/
9.7.3分流和灰度發布實踐/
0章 Serverless架構 終形態的演變/
10.1Serverless架構的困境/
10.1.1伴隨著異常的服務/
10.1.2開發和調試的相對困難/
10.1.3異常無法自行處理/
10.2過渡的Serverless架構方式/
10.2.1高信任度的提供商/
10.2.2標準化的服務設計/
10.3真正的Serverless架構/
10.3.1服務的非中心化/
10.3.2服務的真正開源/
10.3.3標準的語言設計/
10.4當前因特網的瓶頸/
10.4.1算力、存儲和網絡性能的瓶頸/
10.4.2過渡的中心化/
10.5發展中的機遇/
10.5.1非中心化應用的爆發/
10.5.2瓶頸的移除/
10.5.3信任危機出現/
10.6形態的演變/
10.6.1代碼即所有/
10.6.2去中心化的到來/