內(nèi)容簡介
這是一本從環(huán)境搭建、部署配置、系統(tǒng)架構(gòu)、工作原理、源碼分析、二次開發(fā)等維度系統(tǒng)講解如何打造協(xié)同的云、邊、端系統(tǒng)的著作。
全書一共9章,邏輯上分為三大部分:
第1部分 邊緣計算基礎(chǔ)(第1~2章)
首先介紹了邊緣計算和邊緣計算系統(tǒng)的概念、組成、架構(gòu),以及邊緣計算系統(tǒng)的部署與管理;然后分別以Kubernetes、KubeEdge、EdgeX Foundry為例講解了云、邊、端的部署與配置。既給出了邊緣計算系統(tǒng)部署所需的自動化腳本,又分析了應(yīng)用在云數(shù)據(jù)中心部署和以云、邊、端協(xié)同的方式部署的利弊。
第二部分 工作原理(第3~6章)
首先從整體上對邊緣計算系統(tǒng)的邏輯架構(gòu)進行了介紹,然后從部署、配置、架構(gòu)等角度對分別云、邊、端的核心組件的工作原理進行了深入解析。
第三部分 源碼分析(第7~9章)
云、邊、端的開源框架眾多,云部分選擇Kubernetes、邊部分選擇KubeEdge、端部分選擇EdgeX Foundry,首先詳細(xì)介紹了這3種開發(fā)框架的開發(fā)環(huán)境搭建和源碼的整體架構(gòu),然后對他們的核心組件的源碼進行了深入分析,同時也對這3個框架的二次開發(fā)進行了講解。
(1)作者權(quán)威:之江實驗室助理研究員,資深邊緣計算工程師,經(jīng)驗豐富。
(2)內(nèi)容系統(tǒng):包含環(huán)境搭建、部署配置、系統(tǒng)架構(gòu)、工作原理、源碼分析、二次開發(fā)6個維度。
(3)循序漸進:既有核心概念、環(huán)境搭建、部署配置、系統(tǒng)架構(gòu)等基礎(chǔ)知識,也有工作原理、源碼分析、二次開發(fā)等高階知識。
(4)針對性強:圍繞Kubernetes、KubeEdge、EdgeX Foundry三個主流的云、邊、端開源實現(xiàn)進行講解。
(5)圖文并茂:言簡意賅、條理性強,包含大量架構(gòu)圖、原理圖和流程圖。
為何寫作本書
隨著5G、AR/VR、高清視頻、自動駕駛等新技術(shù)的興起,電信網(wǎng)絡(luò)正面臨實時計算能力、超低時延、超大帶寬等帶來的新的挑戰(zhàn)。而只有促進邊緣計算產(chǎn)業(yè)發(fā)展,構(gòu)建健康的生態(tài)環(huán)境,才能使終端用戶獲得新技術(shù)帶來的極致體驗,以及更加豐富、安全、可靠的應(yīng)用。因此,近年來移動運營商、網(wǎng)絡(luò)設(shè)備供應(yīng)商、應(yīng)用開發(fā)商、內(nèi)容提供商等紛紛加入移動邊緣計算領(lǐng)域,促使這一技術(shù)快速發(fā)展。
目前,很多研究機構(gòu)制定了針對邊緣計算的專項計劃,比如斯坦福大學(xué)的PlatformLab、卡內(nèi)基梅隆大學(xué)的Open Edge Computing基金會等。互聯(lián)網(wǎng)企業(yè)也針對邊緣計算推出了相關(guān)產(chǎn)品,比如亞馬遜的AWS GreenGrass Core、微軟的Azure Functions on IoT Edge、阿里巴巴的Link Edge、百度的IoT Intelligent Edge。除此之外,全球范圍的各大通信運營商也都陸續(xù)發(fā)布了邊緣計算白皮書。
邊緣計算得到了很多行業(yè)和組織的重視,但是目前市場上針對邊緣計算系統(tǒng)性分析的圖書還很少。于是,筆者萌生了寫一本書的想法,想從邊緣計算系統(tǒng)的部署切入,系統(tǒng)分析邊緣計算系統(tǒng)的云、邊、端的原理架構(gòu)和源碼。
讀者對象
云計算領(lǐng)域從業(yè)者
邊緣計算領(lǐng)域從業(yè)者
物聯(lián)網(wǎng)領(lǐng)域從業(yè)者
應(yīng)用運維、開發(fā)人員
數(shù)據(jù)中心運維人員
在校計算機專業(yè)學(xué)生
物聯(lián)網(wǎng)領(lǐng)域的科研人員
本書特色
邊緣計算的意義在于云、邊、端的協(xié)同,而不應(yīng)該將邊緣計算看作獨立于云計算的計算平臺,甚至是云計算的對立面。目前,針對云、邊、端都有不止一種開源計算框架,但每種計算框架又各有其側(cè)重點,在這種現(xiàn)狀下為云、邊、端各選一種比較合適的計算框架進行集成,打造一套云、邊、端協(xié)同的邊緣計算系統(tǒng),并對該系統(tǒng)的部署方法、內(nèi)部原理和相關(guān)源碼進行解析是有現(xiàn)實意義的。
本書的云組成部分選擇Kubernetes,邊組成部分選擇KubeEdge,端組成部分選擇EdgeX Foundry,對云、邊、端各部分都進行了從架構(gòu)到源碼的系統(tǒng)分析,內(nèi)容系統(tǒng)性強,受眾群體廣,從在校計算機專業(yè)學(xué)生到云計算、邊緣計算和物聯(lián)網(wǎng)領(lǐng)域?qū)<,都可以參考本書?br />如何閱讀本書
本書圍繞云、邊、端展開介紹,整體分為3篇。
基礎(chǔ)篇(第1~2章)
首先介紹邊緣計算概念、邊緣計算系統(tǒng)的具體組成,對邊緣計算系統(tǒng)中的相關(guān)概念進行解析;然后給出邊緣計算系統(tǒng)所需的自動化部署腳本,讀者可以根據(jù)腳本輕松地將邊緣計算系統(tǒng)整體框架部署起來,并在其上進行管理和部署應(yīng)用;后從管理終端設(shè)備應(yīng)用的部署方式入手,對比分析該應(yīng)用在云數(shù)據(jù)中心部署和以云、邊、端協(xié)同的方式部署的利弊,從而引出使用邊緣計算的必要性。
原理篇(第3~6章)
為了使讀者能夠?qū)吘売嬎阆到y(tǒng)有一個全面、深入的了解,本篇將組成邊緣計算系統(tǒng)的云、邊、端分開介紹,逐步部署,并對每部分的配置項進行詳細(xì)說明:云包括以系統(tǒng)進程方式部署和以容器化方式部署兩種;邊由與云控制節(jié)點交互的部分和在邊緣管理負(fù)載的部分組成,與云控制節(jié)點交互的部分包括以系統(tǒng)進程方式部署和以容器化方式部署兩種,在邊緣管理負(fù)載的部分只有以系統(tǒng)進程方式部署一種;端包括以系統(tǒng)進程方式部署和以容器化方式部署兩種。
源碼分析篇(第7~9章)
通過對邊緣計算系統(tǒng)部署和配置的詳細(xì)說明,讀者對邊緣計算實踐的云、邊、端部分有了一個相對深入的了解,但還停留在各部分的具體組成組件和相關(guān)配置說明層面。本篇會對組成邊緣計算系統(tǒng)的云、邊、端部分進行源碼分析,并對每部分組件之間的邏輯關(guān)系進行詳細(xì)說明。
勘誤和支持
由于筆者水平有限,編寫時間倉促,書中難免會出現(xiàn)一些錯誤或者不準(zhǔn)確的地方,懇請讀者批評指正。為此,筆者特意創(chuàng)建了一個在線支持與應(yīng)急方案的釘釘群33905630(群號),你可以將書中的錯誤發(fā)布在該微信群。同時,如果你遇到任何問題,也可以發(fā)送郵件到myedgecomputing@gmail.com,我將盡可能及時提供滿意的解答。如果你有更多寶貴的意見,也歡迎發(fā)送郵件至該郵箱,期待你們的真摯反饋。
致謝
首先要感謝開源社區(qū),讓我有機會接觸、學(xué)習(xí)和分析Kubernetes、KubeEdge和EdgeX Foundry這些優(yōu)秀的軟件。
感謝之江實驗室,為我提供了一個良好的工作環(huán)境,還有齊全的實驗設(shè)備。
感謝浙江省重點研發(fā)計劃項目基于數(shù)字孿生的智慧高速公路交通流全時空管控關(guān)鍵技術(shù)及應(yīng)用示范,使得書中相關(guān)技術(shù)得到驗證。
感謝之江實驗室的研究專家華煒老師,在本書的寫作過程中他從整體到具體細(xì)節(jié)都給予了筆者耐心的指導(dǎo)。
感謝《深度實踐KVM》作者肖力老師和公眾號云技術(shù)的北極熊老師的引薦,在他們的努力下才促成了本書的合作與出版。
感謝機械工業(yè)出版社華章公司的編輯楊福川老師和董惠芝老師,在這一年多的時間中他們始終支持我的寫作,他們的鼓勵和幫助引導(dǎo)我順利完成了全部書稿。
后感謝家人的理解與支持,讓我可以在工作之余全身心地投入本書的寫作,并在迷惑時給予我信心和力量!
作者簡介
崔廣章
之江實驗室高級研究專員,資深云計算和邊緣計算技術(shù)工程師。
從2014年接觸云計算以來,參與過多個云計算生產(chǎn)項目,其中代表性的項目有基于OpenStack進行定制開發(fā)的運營商私有云、政務(wù)云,基于開源容器云方案定制開發(fā)的面向運營商的數(shù)據(jù)中心操作系統(tǒng)(DCOS),2018年開始從事邊緣計算相關(guān)研究與開發(fā)。
前言
基礎(chǔ)篇
第1章 邊緣計算入門3
1.1 邊緣計算系統(tǒng)3
1.1.1 邊緣計算系統(tǒng)的組成3
1.1.2 概念解析6
1.2 邊緣計算的意義11
1.3 邊緣計算系統(tǒng)的部署與管理11
1.3.1 系統(tǒng)部署11
1.3.2 系統(tǒng)管理23
1.4 不同應(yīng)用部署方式的比較25
1.5 本章小結(jié)27
第2章 云、邊、端的部署與配置29
2.1 邊緣計算整體架構(gòu)29
2.2 部署云部分Kubernetes31
2.2.1 Kubernetes相關(guān)的容器運行時部署31
2.2.2 Kubernetes的學(xué)習(xí)環(huán)境部署34
2.2.3 Kubernetes的生產(chǎn)環(huán)境部署39
2.3 部署邊緣部分KubeEdge45
2.3.1 以系統(tǒng)進程的方式部署KubeEdge45
2.3.2 以容器化的方式部署KubeEdge51
2.4 部署端部分EdgeX Foundry52
2.4.1 以系統(tǒng)進程的方式部署EdgeX Foundry53
2.4.2 以容器化的方式部署EdgeX Foundry57
2.5 本章小結(jié)60
原理篇
第3章 邊緣計算系統(tǒng)邏輯架構(gòu)63
3.1 邊緣計算系統(tǒng)邏輯架構(gòu)簡介63
3.2 云、邊協(xié)同64
3.3 邊、端協(xié)同65
3.4 云、邊、端協(xié)同68
3.5 本章小結(jié)68
第4章 云部分原理解析71
4.1 整體架構(gòu)71
4.2 邏輯架構(gòu)72
4.3 控制流程74
4.3.1 集群基礎(chǔ)設(shè)施層面的資源的控制流程74
4.3.2 集群中應(yīng)用負(fù)載層面的資源的控制流程77
4.4 數(shù)據(jù)流81
4.4.1 集群內(nèi)應(yīng)用負(fù)載間的數(shù)據(jù)訪問流81
4.4.2 集群外應(yīng)用到集群內(nèi)應(yīng)用負(fù)載的數(shù)據(jù)訪問流86
4.5 資源調(diào)度88
4.5.1 資源調(diào)度流程88
4.5.2 資源調(diào)度算法和調(diào)度策略89
4.6 資源編排90
4.7 本章小結(jié)91
第5章 邊緣部分原理解析93
5.1 KubeEdge的整體架構(gòu)93
5.2 與云交互的組件94
5.3 管理邊緣負(fù)載的組件96
5.4 與終端設(shè)備交互的組件97
5.5 云、邊協(xié)同98
5.6 設(shè)備管理模型100
5.7 邊緣存儲和網(wǎng)絡(luò)資源102
5.8 邊緣節(jié)點管理103
5.8.1 以節(jié)點的形式管理邊緣計算資源103
5.8.2 以獨立集群的形式管理邊緣計算資源104
5.8.3 以多集群的形式管理邊緣計算資源105
5.9 本章小結(jié)106
第6章 端部分原理解析107
6.1 整體架構(gòu)107
6.2 設(shè)備服務(wù)層108
6.3 核心服務(wù)層110
6.4 支持服務(wù)層115
6.5 導(dǎo)出服務(wù)層119
6.6 安全組件122
6.7 系統(tǒng)管理組件122
6.8 本章小結(jié)123
源碼分析篇
第7章 云部分源碼分析127
7.1 搭建開發(fā)環(huán)境127
7.1.1 安裝Go和GoLand127
7.1.2 安裝Git并下載Kubernetes源碼130
7.1.3 Go Modules簡介130
7.1.4 下載Kubernetes的源碼依賴131
7.2 Kubernetes源碼整體結(jié)構(gòu)分析131
7.3 組件源碼分析133
7.3.1 共用命令行工具庫Cobra133
7.3.2 Kube-apiserver136
7.3.3 Kube-controller-manager140
7.3.4 Kube-scheduler145
7.3.5 Kubelet148
7.3.6 Kube-proxy150
7.4 本章小結(jié)153
第8章 邊緣部分源碼分析155
8.1 搭建開發(fā)環(huán)境155
8.2 源碼整體架構(gòu)分析155
8.2.1 源碼目錄及組件源碼入口155
8.2.2 組件中各功能模塊的共用框架和功能分析160
8.3 組件源碼分析166
8.3.1 配置文件讀取166
8.3.2 CloudCore172
8.3.3 EdgeCore之Edged180
8.3.4 EdgeCore之DeviceTwin189
8.3.5 EdgeCore之EdgeHub195
8.3.6 EdgeCore之EventBus202
8.3.7 EdgeCore之MataManager206
8.3.8 EdgeCore之EdgeMesh212
8.4 本章小結(jié)217
第9章 端部分源碼分析219
9.1 搭建開發(fā)環(huán)境219
9.2 源碼整體架構(gòu)分析219
9.3 組件源碼分析220
9.3.1 Config-seed221
9.3.2 Core-command232
9.4 本章小結(jié)238