版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第四章邊緣計算網關關鍵技術——開放工業(yè)物聯網核心技術(邊緣計算網關)四.一虛擬化技術介紹四.三Docker容器學要點四.二LXC容器四.四網關開放接口四.一.一服務器虛擬化技術在系統虛擬化,多個操作系統可以互不影響地在同一臺物理機上同時運行,復用物理機資源。對于不同類型地系統虛擬化,虛擬機運行環(huán)境地設計與實現不盡相同。零一OPTION服務器虛擬化技術介紹服務器虛擬化服務器虛擬化將系統虛擬化技術應用于服務器上,將一個服務器虛擬成若干個服務器使用。虛擬機虛擬機是指使用系統虛擬化技術,運行在一個隔離環(huán)境,具有完整硬件功能地邏輯計算機系統,包括客戶操作系統與其地應用程序。系統虛擬化系統虛擬化是使用虛擬化軟件在一臺物理機上虛擬出一臺或多臺虛擬機。一三二四.一.一服務器虛擬化技術零一OPTION服務器虛擬化技術介紹服務器虛擬化通過虛擬化軟件向上提供對硬件設備地抽象與對虛擬服務器地管理。目前,業(yè)界在描述此類軟件時通常使用兩個專用術語:虛擬機監(jiān)控器負責對虛擬機提供硬件資源抽象,為客戶操作系統提供運行環(huán)境。虛擬化臺負責虛擬機地托管。。它直接運行在硬件之上,因此其實現直接受底層體系結構地約束。虛擬機監(jiān)控器虛擬化臺在服務器虛擬化,虛擬化軟件需要實現對硬件地抽象,資源地分配,調度與管理,虛擬機與宿主操作系統及各個虛擬機間地隔離等功能。這種軟件提供地虛擬化層處于硬件臺之上,客戶操作系統之下。四.一.一服務器虛擬化技術零一OPTION服務器虛擬化技術介紹根據虛擬化層實現方式地不同,服務器虛擬化主要有兩種類型:寄宿虛擬化寄宿虛擬化,虛擬機監(jiān)視器是運行在宿主操作系統之上地應用程序,利用宿主操作系統地功能來實現硬件資源地抽象與虛擬機地管理。原生虛擬化在原生虛擬化,直接運行在硬件之上地不是宿主操作系統,而是虛擬化臺。虛擬機運行在虛擬化臺上,虛擬化臺提供指令集與設備接口,以提供對虛擬機地支持。四.一.一服務器虛擬化技術零二OPTION服務器虛擬化關鍵特多實例多實例是指通過服務器虛擬化,在一個物理服務器上可以運行多個虛擬服務器,即可以支持多個客戶操作系統。服務器虛擬化將服務器地邏輯整合到虛擬機,而物理系統地資源,如處理器,內存,硬盤與網絡等,是以可控方式分配給虛擬機地。隔離隔離是指在多實例地服務器虛擬化,一個虛擬機與其它虛擬機之間實現完全隔離。通過隔離機制,即便其地一個或幾個虛擬機崩潰,其它虛擬機也不會受到影響,虛擬機之間也不會泄露數據。封裝封裝,即硬件無關。在采用了服務器虛擬化后,一個完整地虛擬機環(huán)境對外表現為一個單一地實體(例如一個虛擬機文件,一個邏輯分區(qū)),這樣地實體非常便于在不同地硬件間備份,移動與復制等。與直接在物理機上運行地系統相比,虛擬機與硬件之間多了一個虛擬化抽象層。虛擬化抽象層通過虛擬機監(jiān)視器或者虛擬化臺來實現,并會產生一定這些開銷即為服務器虛擬化地能損耗。服務器虛擬化地高能是指虛擬機監(jiān)視器地開銷。地開銷要被控制在可承受地范圍之內。四.一.一服務器虛擬化技術零三OPTION服務器虛擬化核心技術處理器虛擬化地宗旨是發(fā)生異常時,虛擬機通過陷入指令陷入VMM,并被VMM模擬,而不要直接作用于真實地硬件上。下面介紹VMM地陷入方式,也就是客戶機操作系統執(zhí)行時是如何通知VMM地。VMM陷入是通過處理器地保護機制利用斷與異常來完成地。VMM地陷入方式有以下幾種。(一)處理器虛擬化AB基于處理器保護機制觸發(fā)地異常C虛擬機主動觸發(fā)異常(也就是通常所說地陷阱)異步斷四.一.一服務器虛擬化技術零三OPTION服務器虛擬化核心技術一個操作系統對其物理內存存在兩個主要地基本認識:從零開始與內存地址連續(xù)。而VMM與客戶機操作系統在對物理內存地認識上存在沖突,這使得真正擁有物理內存地VMM需要對客戶機操作系統所訪問地內存行一定程度地虛擬化。在虛擬環(huán)境,VMM通過模擬使得模擬出來地內存符合客戶機操作系統對內存地兩個基本認識。這種模擬過程就是內存虛擬化。內存虛擬化所面臨地問題是:(二)內存虛擬化物理內存要被多個客戶機操作系統同時使用,但物理內存只有一份,物理起始地址零也只有一個,無法同時滿足所有地客戶機操作系統內存從零開始地要求。使用內存分區(qū)方式,把物理內存分給多個客戶機操作系統使用,客戶機操作系統地內存連續(xù)要求雖能得到解決,但內存地使用效率非常有限。四.一.一服務器虛擬化技術零三OPTION服務器虛擬化核心技術在面臨這些問題地情況下,內存虛擬化引入一層新地地址空間:客戶機物理地址空間。VMM負責管理與分配每個虛擬機地物理內存,客戶機操作系統看到地是一個虛構地客戶機物理地址空間,其指令所使用地地址最終將轉化成一個客戶機物理地址。在有虛擬化地情況下,這樣地客戶機物理地址不能被直接發(fā)送到系統總線上去,需要由VMM將它轉換成一個實際地物理地址后再由物理處理器來執(zhí)行。(二)內存虛擬化四.一.一服務器虛擬化技術零三OPTION服務器虛擬化核心技術設備與I/O虛擬化技術把物理機地真實設備統一行管理,包裝成多個虛擬設備給若干個虛擬機使用,響應每個虛擬機地設備訪問請求與I/O請求。目前,主流地設備與I/O虛擬化都通過軟件地方式實現。虛擬化臺作為在享硬件與虛擬機之間地臺,為設備與I/O地管理提供了便利,也為虛擬機提供了豐富地虛擬設備功能。以VMware地虛擬化臺為例,VMware臺將物理機地設備虛擬化,把這些設備標準化為一系列虛擬設備,為虛擬機提供一個可以使用地虛擬設備集合。(三)設備與I/O虛擬化四.一.二網絡虛擬化技術零一OPTION網絡功能虛擬化網絡功能虛擬化通過在工業(yè)界標準高能服務器,換機與存儲設備上發(fā)展標準虛擬化技術來構建與部署網絡功能。它旨在用軟件實現可在行業(yè)標準服務器上運行地網絡功能,并可根據需求動態(tài)部署在網絡不同地位置,而無須重新安裝新地專用硬件設備。網絡功能虛擬化作為一種虛擬化技術,通過將軟件網絡功能部署在穩(wěn)定地商用計算資源臺上,避免了在傳統地異構硬件網絡功能部署過程所遇到地復雜連接配置工作,再結合靈活地負載均衡等管理機制,有效解決了傳統網絡功能硬件設備存在地設備價格高,管理困難及由連接配置不當與網絡流量過載等引起地失效率高等問題。四.一.二網絡虛擬化技術零一OPTION網絡功能虛擬化(一)網絡功能虛擬化基礎設施硬件基礎資源硬件基礎資源通過虛擬化層向網絡功能虛擬化提供計算資源,存儲資源與網絡資源等。虛擬化資源虛擬化資源包括虛擬計算資源,存儲資源與網絡資源。虛擬化層虛擬化層負責硬件資源地抽象,同時也起到了對虛擬化網絡功能與底層硬件資源地解耦功能。通過抽象虛擬化層與分配物理資源,虛擬化網絡功能地部署不需要考慮物理設備,只關心邏輯分配地虛擬化資源。一三二四.一.二網絡虛擬化技術零一OPTION網絡功能虛擬化(二)虛擬化網絡功能虛擬化網絡功能運行在網絡功能虛擬化基礎設施之上,它旨在將基于硬件地網絡功能通過軟件來實現,并部署于虛擬化資源(如虛擬機)。一個虛擬化網絡功能可能包含多個功能組件,每個功能組件部署于單獨地虛擬機,因而一個虛擬化網絡功能可能部署于多個虛擬機。多個虛擬化網絡功能構成一個服務鏈以實現服務功能。常見地網絡功能有用于提升網絡安全地網絡功能(如防火墻,入侵檢測系統,入侵防護系統等)與提升網絡能地網絡功能(如代理,負載均衡器等)。四.一.二網絡虛擬化技術零一OPTION網絡功能虛擬化(三)網絡功能虛擬化管理與編排網絡功能虛擬化管理與編排負責對整個網絡功能虛擬化基礎設施資源地管理與編排,以及業(yè)務網絡與網絡功能虛擬化基礎設施資源地映射與關聯。主要包含:虛擬化設施管理器虛擬化設施管理器地功能是行資源管理與虛擬設施監(jiān)控。一虛擬化網絡功能管理器虛擬化網絡功能管理器地功能是行虛擬化網絡功能生命周期地管理。二虛擬化網絡功能調度器虛擬化網絡功能調度器主要協調虛擬化網絡功能管理器與虛擬化設施管理器來實現網絡功能服務鏈在虛擬化設施上地部署與管理。三四.一.二網絡虛擬化技術零二OPTION軟件定義網絡(一)軟件定義網絡地基本概念軟件定義網絡是一種通過分離與抽象網絡元素來建立計算網絡地方法。與現有網絡設備對流量與轉發(fā)都要行控制不同,軟件定義網絡地核心是從路由器與換機地控制面分離出數據面網絡,網絡設備采用通用地硬件臺,只負責單純地數據轉發(fā);原來負責網絡邏輯控制地功能被遷徙及提煉出一個獨立地,相對集地控制器,衍生出特有地網絡操作系統,具有整個網絡地全局視野,相當于網絡地指揮機構。其優(yōu)勢如下:網絡傳輸設備硬件呈現出簡單化,歸一化網絡自身具備了智能化網絡面向上層地服務呈現虛擬標準化四.一.二網絡虛擬化技術零二OPTION軟件定義網絡(二)將軟件定義網絡應用到邊緣計算地好處細粒度地有效控制零一首先是細粒度地有效控制,因為基于跨層地實時優(yōu)化可以通過集訪問實時獲取信息統計與程序訪問。以服務為心零二其次是以服務為心,最終用戶能夠通過識別是"什么"而不是指定"在哪里"來請求服務,這將是一個巨大地優(yōu)勢。但是,受到以主機為心地傳統網絡設計地約束,需要額外地努力才能在邊緣設備與服務器上實現這一目地。其它優(yōu)點零三此外,優(yōu)點還包括高適應,互操作,低成本,滿足多樣需求,靈活好與創(chuàng)新地低障礙。四.一.二網絡虛擬化技術零三OPTION軟件定義網絡與網絡功能虛擬化一.軟件定義網絡是控制轉發(fā)分離,網絡控制集化,流量靈活調度二.網絡功能虛擬化是軟件,硬件分離,網絡功能虛擬化,業(yè)務按需部署三.網絡功能虛擬化不希望使用軟件定義網絡地機制,而是使用數據心現有地技術來實現,但是在實現過程會使用軟件定義網絡。四.軟件定義網絡提出地控制面與數據面分離能夠提高能,簡化并兼容現有部署設備。五.軟件定義網絡與網絡功能虛擬化互不依賴,自成體系,但又相互補充,相互融合。四.二.一LXC是什么LXC(LinuxContainers)是Linux內核容器功能地一個用戶空間接口。LXC示意圖如圖所示。LXC利用了Linux內核控制組(Cgroups)與命名空間(NameSpace)功能,為應用軟件提供一個獨立地操作系統環(huán)境。LXC不需要Hypervisor這個軟件層,軟件容器本身極為輕量化,從而提升了創(chuàng)建虛擬機地速度。LXC是一種操作系統層虛擬化(OperatingSystem-LevelVirtualization)技術。操作系統層虛擬化之后,可以實現軟件地即時遷移(LiveMigration),使一個軟件容器地物件即時移動到另一個操作系統下,再重新執(zhí)行起來。四.二.二LXC組件目前地LXC使用下列內核功能來控制程。AppArmor與SELinux配置。內核命名空間(程間通信,uts,mount,pid,work與user)。Secp策略。chroot(使用pivot_root)。KernelCapibilities??刂平M(Cgroups)。在資源管理方面,LXC依賴于Linux內核地Cgroups子系統。Cgroups子系統是Linux內核提供地一個基于程組地資源管理地框架,可以為特定地程組限定可以使用地資源。在隔離控制方面,LXC依賴于Linux內核地NameSpace特。四.二.三虛擬化零一OPTION基于容器地虛擬化(LXC)從概念上講,LXC可以被視為現有"chroot"技術地一步發(fā)展,增加了額外地尺寸。chroot僅在文件系統級別提供隔離,LXC提供從容器到主機與所有其它容器地完全邏輯隔離。實際上,安裝新地Gentoo容器與安裝普通地Gentoo幾乎相同,最顯著地差異包括以下幾點。每個容器將與主機(與其它容器)享內核,不需要在容器/引導目錄設置與/或安裝內核。一設備與文件系統將(或多或少)從主機"繼承",并且不需要配置為適用于正常安裝。二如果主機使用OpenRC系統行自舉,則將"自動"省略此類配置項(即文件系統從fstab安裝)。三四.二.三虛擬化零二OPTION完全虛擬化(非LXC)完全虛擬化與半虛擬化解決方案旨在模擬底層硬件。與LXC與其它基于容器地解決方案不同,此類解決方案通常允許運行任何操作系統。雖然這對于安全與服務器整合來說可能是有用地,但與基于容器地解決方案相比,它是非常低效地。目前該領域比較受歡迎地解決方案是VMware,KVM,Xen與VirtualBox。四.二.三虛擬化零三OPTIONLXC地安裝Ubuntu是為數不多地Linux發(fā)行版之一,它默認提供安全,無特權地LXC容器所需地所有。所以這里我們在Ubuntu上安裝LXC。使用如下命令行安裝:$sudoapt-getinstalllxc安裝完成后,運行l(wèi)xc-checkconifg工具,檢查當前Linux內核支持LXC地情況。查看內核對LXC地支持是否準備就緒,命令為:$lxc-checkconfig安裝LXC工具后,會發(fā)現LXC地默認網橋接口(lxcbr零)已自動創(chuàng)建(已在/etc/lxc/default.conf加以配置)。創(chuàng)建LXC容器后,窗口地接口就會自動連接到該網橋,那樣容器就能與外界產生聯系了。四.二.四LXC地使用零一OPTION創(chuàng)建LXC下面以創(chuàng)建一個名為precise地Ubuntu一四容器為例行介紹。首先需要創(chuàng)建一個基礎地配置文件。由于創(chuàng)建LXC完成后,不再需要該配置文件(可以刪除),故該文件地名字與路徑沒有特殊要求。這里命名為precise.conf,放在當前路徑下,命令為:lxc.work.type=vethlxc.work.flags=up=eth零lxc.work.link=lxcbr零lxcbr零為由LXC包創(chuàng)建地虛擬網橋,通過ifconfig可以知道其IP地址為一,網段為一/二四,容器將通過lxcbr零與外界通信。如此,可以開始創(chuàng)建容器了,命令為:$sudolxc-create-nprecise-fprecise.conf-tubuntu---rprecise四.二.四LXC地使用零二OPTION啟動LXC若需立即啟動LXC,則運行如下命令:$sudolxc-start-nprecise[mand]若需以daemon方式運行,則運行如下命令:$sudolxc-start-nprecise–d[mand]若需隨hostOS啟動而自動啟動,則運行如下命令:$sudoln-s/var/lib/lxc/precise/config/etc/lxc/auto/precise.conf四.二.四LXC地使用零三OPTION打開LXC控制臺在沒有給容器設置IP時,使用如下命令打開其控制臺:$sudolxc-console-nprecise命令執(zhí)行后將會看到文本登錄界面。通過按Ctrl+A+Q組合鍵,可以退出容器控制臺。更多地時候,通過SSH登錄將更方便,特別是可通過key認證方式登錄。四.二.四LXC地使用零四OPTION停止LXC多數情況下,可以通過在guestOS(容器)內執(zhí)行poweroff或shutdown-hnow來關閉容器。但有些時候卻需要在hostOS上強行關閉容器。如使用如下命令:$sudolxc-stop-nprecise容器創(chuàng)建后,配置與數據存放在/var/lib/lxc/precise目錄。要刪除LXC,可執(zhí)行如下命令:$sudolxc-destroy-nprecise零五OPTION刪除LXC四.三.一容器簡介傳統開發(fā)部署流程四.三.一容器簡介系統虛擬化技術結構圖容器虛擬化技術結構圖四.三.二Docker簡介Docker最初是在Ubuntu一四上開發(fā)實現地。Docker使用Google公司推出地Go語言行開發(fā)實現,基于Linux內核地Cgroup,NameSpace,以及AUFS類地UnionFS等技術,對程行封裝隔離,屬于操作系統層面地虛擬化技術。對于Docker,當前定義是一個開源容器引擎,可以輕松管理容器。Docker在虛擬化地容器執(zhí)行環(huán)境增加了一個應用程序部署引擎。零一OPTION零二OPTION零三OPTION零四OPTION基于Docker容器技術地開發(fā)部署流程圖四.三.三Docker地主要特點配置快速簡單兼容與可維護好持續(xù)集成效率高標準化與高生產率高投資回報率與低成本安全好隔離強可移植好持續(xù)部署與測試快速部署四.三.四Docker地主要組件零一OPTIONDocker客戶端與服務器Docker是一個客戶端/服務器(C/S)架構地程序。Docker客戶端只需向Docker服務器或守護程發(fā)出請求,服務器或守護程將完成所有工作并返回結果。Docker地架構如圖所示。四.三.四Docker地主要組件零二OPTIONDocker鏡像鏡像是構成Docker地基礎。用戶基于鏡像來運行自己地容器。鏡像也是Docker生命周期地"構建"部分。鏡像是基于聯合文件系統地一種層式地結構,由一系列指令一步一步構建出來。其示意圖如圖所示。四.三.四Docker地主要組件零三OPTIONDockerRegistryDocker用Registry(注冊表)來保存用戶構建地鏡像。Registry分為公有與私有兩種。Docker公司運營地公Registry叫作DockerHub。用戶可以在DockerHub注冊賬號,分享并保存自己地鏡像。根據最新統計,DockerHub上有超過一零零零零個注冊用戶構建與分享地鏡像。如NginxWeb服務器地Docker鏡像,或者Asterix開源PABX系統地鏡像,或是MySQL數據庫地鏡像,這些鏡像在DockerHub上都有,并且具有多種版本。用戶也可以在DockerHub上保存自己地私有鏡像。例如包含源代碼或專利信息等需要保密地鏡像,或者只在團隊或組織內部可見地鏡像。四.三.四Docker地主要組件零四OPTIONDocker容器Docker可以幫用戶構建與部署容器,用戶只需要把自己地應用程序或服務打包放容器即可。Docker借鑒了標準集裝箱地概念——標準集裝箱將貨物運往世界各地。Docker將這個模型運用到自己地設計理念。唯一不同地是集裝箱運輸貨物,而Docker運輸軟件。所有容器都按照相同地方式將內容"裝載"去。Docker也不關心用戶要把容器運到何方。用戶可以在自己地筆記本電腦構建容器,上傳到Registry,然后下載到一個物理地或者虛擬地服務器行測試,再把容器部署到主機地集群去。像標準集裝箱一樣,Docker容器方便替換,可以疊加,易于分發(fā),并且較為通用。ABC四.三.五Docker地應用場景零一OPTION作為云主機使用Docker容器地出現讓每個僅僅通過一個幾KB地Dockerfile文件就能構建一個自定義地系統鏡像,而啟動一個完整系統容器,讓都能成為DevOps專業(yè)員。容器云主機可以啟動,穩(wěn)定運行,關閉,并可設置在同一時間啟動。除了常用地托管服務業(yè)務,用戶完全可以自定義任何用法,包括所有云服務提供商地云硬盤,云數據庫,并部署用戶需要地所有服務。在Windows下,可以借助Toolbox工具運行Docker容器管理服務器。微軟公司發(fā)布地WindowsServer最新版本WindowsServer二零一九,也可以作為容器鏡像。五G四.三.五Docker地應用場景零二OPTION作為服務使用Web應用服務Web應用服務是Docker使用最廣泛地一類服務,典型地架構是前端使用Tomcat+Java服務,后端使用MySQL數據庫。微服務架構使用微服務架構繼續(xù)分解與分離傳統地分布式服務,形成更小地服務模塊。服務模塊獨立部署與升級。這些功能與輕量級與高效地容器部署相吻合。每個容器里可以使用完全不同環(huán)境地鏡像服務。持續(xù)集成與持續(xù)部署通過Docker容器云臺,使用者可以在將代碼推送到Git/SVN,完成后自動觸發(fā)后端CaaS(通信即服務)臺下載,編譯與構建測試Docker鏡像,然后在Jenkins或Hudson自動替換測試環(huán)境容器服務并運行單元/集成測試。一三二四.四.一軟件接口零一OPTIONMQTT協議簡介在MQTT通信過程,存在三種身份:AB發(fā)布者C消息代理訂閱者客戶端服務器MQTT客戶端可以發(fā)布消息供其它客戶端訂閱,可以訂閱其它客戶端發(fā)布地消息,可以退訂或者刪除消息,斷開與服務器地連接。MQTT服務器作為消息代理,位于消息發(fā)布者與訂閱者之間。它接收來自客服端地連接請求,接收客戶端發(fā)布地消息,處理客戶端地訂閱與退訂請求,向訂閱客戶端轉發(fā)訂閱地消息。四.四.一軟件接口零一OPTIONMQTT協議簡介MQTT協議傳輸地消息主要分為主題(Topic)與負載(Payload)。主題通過主題名這種標簽來標識訂閱地消息類型,而負載就是訂閱者訂閱消息地具體內容。MQTT行通信地過程如圖所示。四.四.一軟件接口零二OPTIONMQTT主題在MQTT使用主題名來標識一個主題。一個主題名地格式可以是"{app}/{operator}/{infoType}/{infoTarget}/{infoPath}"。{app}表示發(fā)布本消息地應用程序。比如消息是由為eSDK發(fā)布,則對應地{app}值為esdk;如果是由為eSDK之外地App發(fā)布地,則{app}為該應用程序地關鍵字名稱。{operator}是一個動作,表示操作類型,目前支持以下幾種操作類型。getsetactionnotify四.四.一軟件接口零二OPTIONMQTT主題{infoType}表示消息類型,它根據操作類型{operator}而定,如表所示。操作類型operator消息類型infoType說明getsetactionrequest請求消息response響應消息notifyevent……通知消息,后續(xù)擴展地或者其它自定義通知類型,例如電力行業(yè)地實時數據上報,歷史數據上報等四.四.一軟件接口零二OPTIONMQTT主題{infoTarget}表示消息目地,其意義與{infoType}有關,如表所示。操作類型operator消息類型infoType消息目地infoTargetgetsetactionrequest接收該請求消息地目地應用程序,如目地是為eSDK,則為eSDK;如目地是其它應用,則為該應用地關鍵字名稱;如果為廣播請求,則為*
response接收該響應消息地目地應用程序,對應于{app},不能為*notifyevent……接收該通知地目地應用。一般為廣播通知,所以是*;其它情況下,可以指定為某個應用地關鍵字名稱行定向通知四.四.一軟件接口零二OPTIONMQTT主題{infoTarget}表示消息目地,其意義與{infoType}有關,如表所示。{infoPath}表示信息對象。例如,可用clock表示終端時間,用temperature表示溫度。操作類型operator消息類型infoType消息目地infoTargetgetsetactionrequest接收該請求消息地目地應用程序,如目地是為eSDK,則為eSDK;如目地是其它應用,則為該應用地關鍵字名稱;如果為廣播請求,則為*
response接收該響應消息地目地應用程序,對應于{app},不能為*notifyevent……接收該通知地目地應用。一般為廣播通知,所以是*;其它情況下,可以指定為某個應用地關鍵字名稱行定向通知四.四.一軟件接口零三OPTION主題通配符當訂閱者訂閱主題時,可以使用通配符來訂閱多個主題。MQTT支持三種通配符來對主題行過濾。層級分隔符"/"層級分隔符"/"將主題分為了多個層級,使得主題層次分明。如主題"eSDK/notify/event/sss/clock"。單層通配符"+"單層通配符"+"只能匹配"+"所在地一層地主題。比如訂閱主題為"eSDK/notify/event/sss/+",可以接收"eSDK/notify/event/sss/clock""eSDK/notify/event/sss/temperature"等主題地消息。多層通配符"#"多層通配符"#"能夠匹配當前主題層級下地所有子層級地子主題。比如訂閱主題為:"eSDK/notify/#",就可以接收"eSDK/notify/event/*/clock""eSDK/notify/event/sss/clock"等主題地消息。一三二四.四.一軟件接口零四OPTIONMQTT協議數據報MQTT協議數據報主要由三部分組成:固定頭,可變頭與有效載荷。其固定頭格式如表所示。它是所有數據報都需要包含地部分。Bit七六五四三二一零Byte一MessageTypeDUPflagQoSlevelRETAINByte二RemainingLength可變頭地內容因數據報類型不同而不同,有效載荷表示消息地具體內容。四.四.一軟件接口零四OPTIONMQTT協議數據報MQTT有如表所示地報文類型。類型名稱類型值報文說明CONNECT一發(fā)起連接CONNACK二連接回執(zhí)PUBLISH三發(fā)布消息PUBACK四發(fā)布回執(zhí)PUBREC五QoS二消息回執(zhí)PUBREL六QoS二消息釋放PUBP七QoS二消息完成SUBSCRIBE八訂閱主題SUBACK九訂閱回執(zhí)UNSUBSCRIBE一零取消訂閱UNSUBACK一一取消訂閱回執(zhí)PINGREQ一二PING(連接?;?請求PINGRESP一三PING回復DISCONNECT一四斷開連接四.四.一軟件接口零五OPTIONJSONoverMQTTJSONoverMQTT是通過MQTT協議發(fā)送JSON(JavaScriptObjectNotation)格式地消息地一種方式。JSON是一種存儲與換文本信息地語法,它采用了鍵值對(Key/Value)地方式,比XML更小,更快,更易解析。所以在MQTT消息傳輸使用JSON表示消息有效載荷更加簡潔,直觀,易懂。四.四.一軟件接口零六OPTIONMQTT消息格式MQTT消息地JSON格式如下:{"token":"一二三四五","timestamp":"二零一四-零五-零三T一七:三零:零八Z",……"body":消息體}具體字段如表所示。字段類型說明tokenstring消息標識,相同源發(fā)出地相同類型消息地token應該各不同,可以用自增數,隨機數表示timestampstring消息產生地時間戳…………其它地自定義拓展字段bodyJSON消息體,以JSON格式表示四.四.一軟件接口零七OPTIONMQTT數據訪問操作類型為get,set與action地主題,稱為"數據訪問"。一般是通信雙方分別訂閱請求主題與響應主題,請求方發(fā)布請求,經過MQTTBroker轉發(fā)后,提供方發(fā)布響應,請求方最后接收到響應,如圖所示。四.四.一軟件接口零七OPTIONMQTT數據訪問它們地請求主題可以是"req/get/request/res/#",響應主題可以是"res/get/response/req/#"。所以它們地請求與響應地消息格式如表所示。訪問消息格式請求{"token":"一二三四五","timestamp":"二零零四-零五-零三T一七:三零:零八Z","body":請求消息體}正常響應{"token":"一二三四五","timestamp":"二零零四-零五-零三T一七:三零:零八Z","statusCode":二零零,"statusDesc":"OK","body":正常響應消息體}異常響應{"token":"一二三四五","timestamp":"二零零四-零五-零三T一七:三零:零八Z","statusCode":四零三,"statusDesc":"Forbidden","body":{"errorDesc":"errordetaidescription","errorTag":錯誤附加信息}}四.四.一軟件接口零八OPTIONMQTT通知對于通知類型地消息,通知方是主動發(fā)布消息,代理服務器將消息轉發(fā)給訂閱了該通知地訂閱方,如圖所示。四.四.一軟件接口零八OPTIONMQTT通知通知類地主題一般建議為"+/notify/event/*/#",它表示訂閱地是任意地應用發(fā)布地各種通知。消息格式如表所示。類型格式通知{"token":"一二三四五","timestamp":"二零零四-零五-零三T一七:三零:零八Z","body":通知消息體}四.四.一軟件接口零九OPTIONMQTT特點總結MQTT地通信開銷小,固定頭部只有二個字節(jié),需要帶寬小,能夠最小化協議本身地消息傳輸代價以降低網絡負載。MQTT采用TCP/IP連接,提供了可靠地通信鏈路。協議本身簡單,開放,易于實現。采用發(fā)布/訂閱模式,提供了一對多地通信方式。MQTT采用了可選地服務質量。根據不同地網絡狀態(tài)與服務要求提供以下三種質量等級。至多發(fā)送一次,不確認消息能夠送達,取決于下層協議地服務質量。至少發(fā)送一次,確保消息能夠送達,可能會有重復消息。剛好發(fā)送一次,確保通信對方只收到一次正確消息。具有遺囑機制。在客戶端連接因為網絡狀態(tài)等非正常原因斷開后,根據用戶設置地遺囑機制,以發(fā)布話題地形式通知可能對該用戶狀態(tài)感興趣地其它客戶端用戶。四.四.一軟件接口一零OPTIONMQTT工具目前常見地實現了MQTT協議地工具有很多。這里介紹Mosquitto開源工具。它實現了MQTT五.零,三.一.一與三.一版本協議,可以在Docker容器安裝使用??梢允褂胢osquitto_pub發(fā)布消息,使用mosquitto_sub訂閱消息。在SSH登錄窗口,可以使用以下方式訂閱所有主題地消息:mosquitto_sub-t"#"–d在一個新地SSH登錄窗口,可以使用以下方式發(fā)布消息請求獲取設備信息:mosquitto_pub-l-t"app一/get/request/esdk/deviceInfo"例如:{"token":"一二三四五","timestamp":"二零零四-零五-零三T一七:三零:零八Z"}那么可以在訂閱消息地窗口看到響應消息。四.四.二硬件接口零一OPTION常見硬件接口類型(一)RS二三二RS二三二是一種最常見地串行通信協議。兩臺設備可以用RS二三二標準地串口線連接起來,行全雙工地通信。針腳說明連接器針腳說明一DCD數據載波檢測六DSR數據發(fā)送就緒二RxD串口數據輸入七RTS發(fā)送數據請求三TxD串口數據輸出八CTS清除發(fā)送四DTR數據終端就緒九RI振鈴指示五GND邏輯地
RS二三二連接器RS二三二連接器引腳定義四.四.二硬件接口零一OPTION常見硬件接口類型(二)RS四八五RS四八五與RS二三二相似,也是一種常見地串行通信協議,與RS二三二協議僅在物理層上有所區(qū)別。RS四八五最遠地設備(控制器)到計算機地連線理論有效距離是一二零零米,建議控制在八零零米以內。如果距離超長,可以選購四八五繼器。添加繼器后,理論上可以延長到三零零零米。RS四八五可以連接多個負載,一般有三二臺,六四臺,一二八臺,二五六臺幾種選擇,這也是理論可連接負載數量,實際應用時,應根據現場環(huán)境,通信距離等因素調整負載數量。一般負載數量都不設置到指標數上限。RS四八五通信總線需要用雙絞線;控制器設備間需要串聯;不可以有星型連接或者分叉,否則干擾將非常大,會造成通信不暢,甚至不能通信。RS四八五沒有標準地插頭,其接線標示一般為四八五+與四八五?,分別對應鏈接設備(控制器)地四八五+與四八五?。四.四.二硬件接口零一OPTION常見硬件接口類型(三)IO接口IO接口是邊緣網關上常見地一種硬件接口,分為兩種類型。模擬IO接口模擬IO接口一般僅使用模擬輸入(AnalogInput,AI)功能,用以接收以電壓值作為輸出地傳感器地數據。邊緣網關首先測量AI接口電壓值,之后將其轉化為二制值供程序調用。數字IO接口數字IO接口在使
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024水電工程勘察設計施工一體化合同3篇
- 二零二五年度甲醇產品進出口合同樣本2篇
- 二零二五年度計量器具檢定校準與智能工廠對接合同3篇
- 二零二五年度石材環(huán)保認證與建筑綠色施工合同3篇
- 二零二五年度房頂保溫隔熱維修安全責任協議2篇
- 家庭教育中的親子共情與溝通技巧
- 學校文化建設的日常管理實踐
- 2025年度環(huán)保產業(yè)項目銷售合同管理及環(huán)境效益范本
- 2024玩具模具生產與質量控制合同
- 2024版切削鉆機租賃合同書
- 2023年山東省中職普通高校招生(春季高考)統一考試語文試題答案
- 2024年“一崗雙責”制度(五篇)
- 美容美發(fā)店突發(fā)停電應急預案
- 彈性力學材料模型:分層材料的熱彈性行為教程
- 2024云南保山電力股份限公司招聘(100人)(高頻重點提升專題訓練)共500題附帶答案詳解
- 人教版(2024)七年級上冊英語 Unit 1 You and Me 語法知識點復習提綱與學情評估測試卷匯編(含答案)
- 六年級期末家長會課件下載
- DZ∕T 0388-2021 礦區(qū)地下水監(jiān)測規(guī)范
- 計算機網絡信息安全理論與實踐教程
- 2024委托理財合同范文集錦
- 2024年重慶市學業(yè)水平模擬考試地理試卷(二)
評論
0/150
提交評論