以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

本篇文章為大家展示了以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

專業(yè)領(lǐng)域包括成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、電子商務(wù)商城網(wǎng)站建設(shè)、微信營銷、系統(tǒng)平臺開發(fā), 與其他網(wǎng)站設(shè)計及系統(tǒng)開發(fā)公司不同,創(chuàng)新互聯(lián)公司的整合解決方案結(jié)合了幫做網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,為客戶提供全網(wǎng)互聯(lián)網(wǎng)整合方案。

前述

下面將對數(shù)據(jù)上云后的相關(guān)流程,進(jìn)行說明。

由于項(xiàng)目平臺持續(xù)建設(shè)中,當(dāng)前已開源信息為二期版本,所以本篇內(nèi)容均基于此版本能力進(jìn)行說明。此版本架構(gòu)進(jìn)一步優(yōu)化了數(shù)據(jù)鑒權(quán)及數(shù)據(jù)庫保護(hù)。

分為兩個部分:

  • 架構(gòu)組成:技術(shù)角度,拆解設(shè)計邏輯

  • 模塊實(shí)現(xiàn):功能角度,講解實(shí)現(xiàn)邏輯

【注1】二期版本首頁效果

以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

【注2】在建三期版本首頁效果

以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

【注3】在建三期版本中,加入了 日志服務(wù) 、對象存儲、小程序功能。提供靈活的日志存儲與高速檢索能力、 低成本的數(shù)據(jù)庫備份+恢復(fù)+遷移同步能力、移動端交互及其它能力。

架構(gòu)組成

二期架構(gòu)圖

以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

注:淺藍(lán)色標(biāo)明的是相對一期的架構(gòu)變更重點(diǎn)。

部署維度

  • 終端:部署在監(jiān)測點(diǎn)的設(shè)備。相關(guān)設(shè)計在本系列前文中已說明。

  • 云端:部署在云上的平臺。相關(guān)設(shè)計將在本文說明。

功能維度

以平臺設(shè)計的基本組成部分,進(jìn)行的邏輯拆分。并依架構(gòu)層的設(shè)計需求,配套選型的具體產(chǎn)品。

具體功能與選型說明:

  • 監(jiān)測節(jié)點(diǎn):由軟硬兩部分組成?;隍v訊物聯(lián)網(wǎng)終端操作系統(tǒng) TencentOS tiny開發(fā)固件,將 兼容騰訊云的硬件設(shè)備 與 騰訊云IoT explorer進(jìn)行了協(xié)議級的對接。

  • 本地網(wǎng)關(guān):此部分以通信協(xié)議轉(zhuǎn)換為主,不解析具體數(shù)據(jù),僅需按前文指引配置即可。

  • 物聯(lián)網(wǎng)接入層:基于騰訊云IoT explorer產(chǎn)品,提供了解密、接入、轉(zhuǎn)發(fā)的相關(guān)功能。在獲取數(shù)據(jù)后,進(jìn)行了基于http協(xié)議的轉(zhuǎn)推動作,傳遞給下游 API 網(wǎng)關(guān)。

  • 中間件層:基于API 網(wǎng)關(guān)提供了銜接及負(fù)載均衡等能力,基于鑒權(quán)、流控等能力,銜接云函數(shù),提供可靠的數(shù)據(jù)輸入輸出服務(wù)。

  • 邏輯層:基于云函數(shù),實(shí)現(xiàn)了接收數(shù)據(jù)入庫(數(shù)據(jù)固化)、定時統(tǒng)計匯總(數(shù)據(jù)分析)、輸出應(yīng)用數(shù)據(jù)(數(shù)據(jù)輸出,支撐展示)的能力。

  • 存儲層:基于云數(shù)據(jù)庫 TencentDB for MySQL,進(jìn)行監(jiān)測數(shù)據(jù)、匯總數(shù)據(jù)、平臺配置的存儲。

  • 展示層:基于騰訊云圖,提供了地圖展示、數(shù)據(jù)展示、折線圖展示等能力。并配置提供聯(lián)動處理,提高了響應(yīng)速度,減少了資源文件的重復(fù)傳輸。

模塊實(shí)現(xiàn)

整體系統(tǒng),以數(shù)據(jù)為核心,進(jìn)行了相關(guān)設(shè)計,所以本部分有兩個組成部分:

  • 數(shù)據(jù)結(jié)構(gòu):講解各環(huán)節(jié)的核心數(shù)據(jù)結(jié)構(gòu)與關(guān)聯(lián)模式。

  • 模塊說明:講解各功能模塊的實(shí)現(xiàn)與對應(yīng)源碼。

數(shù)據(jù)結(jié)構(gòu)

IoT explorer(物聯(lián)網(wǎng)開發(fā)平臺)推送數(shù)據(jù)結(jié)構(gòu)

以API網(wǎng)關(guān)推送進(jìn)來,由云函數(shù)在環(huán)境變量 event 中提取到的原始數(shù)據(jù)。

其中主要的部分:

  • 非'body' 部分,為api網(wǎng)關(guān)相關(guān)信息

  • 'body' = IoT explorer 原始數(shù)據(jù)

  • 'body' = 終端節(jié)點(diǎn)上報的原始數(shù)據(jù),經(jīng)base64編碼

{
    "body": "{\"payload\":\"eyJtZXRob2QiOiJyZXBvcnQiLCJjbGllbnRUb2tlbiI6IjIwMjAtMDgtMThUMTE6MTc6NDkuNDAzWiIsInBhcmFtcyI6eyJQTTFfQ0YxIjo1LCJQTTJkNV9DRjEiOjYsIlBNMTBfQ0YxIjo3LCJQTTEiOjUsIlBNMmQ1Ijo2LCJQTTEwIjo3LCJwYXJ0aWNsZXNfMGQzIjo3OTIsInBhcnRpY2xlc18wZDUiOjI1NCwicGFydGljbGVzXzEiOjE1LCJwYXJ0aWNsZXNfMmQ1IjozLCJwYXJ0aWNsZXNfNSI6MywicGFydGljbGVzXzEwIjowLCJ2ZXJzaW9uIjoxNTEsIkVycm9yIjowfX0=\", \"seq\":18639, \"timestamp\":1597749469,\"topic\":\"$thing/up/property/?????/?????\", \"devicename\":\"?????\", \"productid\":\"?????\"}",
    "headerParameters": {},
    "headers": {
        "accept-encoding": "gzip",
        "content-length": "511",
        "content-type": "application/json",
        "endpoint-timeout": "15",
        "host": "service-???-???.gz.apigw.tencentcs.com",
        "user-agent": "Go-http-client/1.1",
        "x-anonymous-consumer": "true",
        "x-api-requestid": "???03a993936ae191f44651???",
        "x-b3-traceid": "???03a993936ae191f44651???",
        "x-qualifier": "$LATEST"
    },
    "httpMethod": "POST",
    "path": "/??????",
    "pathParameters": {},
    "queryString": {},
    "queryStringParameters": {},
    "requestContext": {
        "httpMethod": "POST",
        "identity": {},
        "path": "/??????",
        "serviceId": "service-?????",
        "sourceIp": "?.?.?.?",
        "stage": "release"
    }
}

'body' 解base64編碼后:

{
    "clientToken": "2020-08-18T11:17:49.403Z",
    "method": "report",
    "params": {
        "Error": 0,
        "PM1": 5,
        "PM10": 7,
        "PM10_CF1": 7,
        "PM1_CF1": 5,
        "PM2d5": 6,
        "PM2d5_CF1": 6,
        "particles_0d3": 792,
        "particles_0d5": 254,
        "particles_1": 15,
        "particles_10": 0,
        "particles_2d5": 3,
        "particles_5": 3,
        "version": 151
    }
}
數(shù)據(jù)庫表單結(jié)構(gòu)

數(shù)據(jù)庫詳細(xì)格式,請參考 github-sql

各表用途:

  • config:系統(tǒng)配置表

  • space:地點(diǎn)表。記錄節(jié)點(diǎn)部署地點(diǎn)。

  • client:節(jié)點(diǎn)表。記錄節(jié)點(diǎn)信息及最新關(guān)鍵信息,關(guān)聯(lián)space表。

  • base_data:日志表。記錄每次上報的信息,關(guān)聯(lián)space、client表。

  • aggregate_data:匯總信息表。記錄按小時、天等時段匯總的數(shù)據(jù)信息。

  • temp_base_data:臨時日志表。上報設(shè)備名如不在節(jié)點(diǎn)表內(nèi),則存入此表,主要用于調(diào)測。

API接口數(shù)據(jù)結(jié)構(gòu)

模塊說明

數(shù)據(jù)入庫
  • 模塊功能:接收IoT explorer推送數(shù)據(jù),匹配并轉(zhuǎn)換后,入數(shù)據(jù)庫

  • 使用產(chǎn)品:API 網(wǎng)關(guān)、無服務(wù)器云函數(shù)

  • 關(guān)聯(lián)源碼:github-upload

  • 部署方式:請參考相關(guān)文章 在線甲醛監(jiān)測 “4.2.2 無服務(wù)器云函數(shù)/4.2.3 云API網(wǎng)關(guān)” 章節(jié)

終端在線更新
  • 模塊功能:按3分鐘觸發(fā),更新終端信息,用于快速查詢與展示

  • 使用產(chǎn)品:云函數(shù)

  • 關(guān)聯(lián)源碼:github-client_active_new

  • 部署方式:請參考相關(guān)文章 在線甲醛監(jiān)測 “4.2.2 無服務(wù)器云函數(shù)/4.2.3 云API網(wǎng)關(guān)” 章節(jié),但改為“定時觸發(fā)”模式

數(shù)據(jù)統(tǒng)計
  • 模塊功能:按小時及天觸發(fā),統(tǒng)計監(jiān)測數(shù)據(jù),用于快速查詢與展示

  • 使用產(chǎn)品:云函數(shù)

  • 關(guān)聯(lián)源碼:github-aggregate

  • 部署方式:請參考相關(guān)文章 在線甲醛監(jiān)測 “4.2.2 無服務(wù)器云函數(shù)/4.2.3 云API網(wǎng)關(guān)” 章節(jié),但改為“定時觸發(fā)”模式

數(shù)據(jù)接口-終端匯總信息表
  • 模塊功能:通過API網(wǎng)關(guān)提供數(shù)據(jù)查詢能力,響應(yīng)云圖調(diào)用,提供終端匯總信息表

  • 使用產(chǎn)品:API 網(wǎng)關(guān)、云函數(shù)

  • 關(guān)聯(lián)源碼:github-client_info

  • 部署方式:請參考相關(guān)文章 在線甲醛監(jiān)測 “4.2.2 無服務(wù)器云函數(shù)/4.2.3 云API網(wǎng)關(guān)” 章節(jié)

數(shù)據(jù)接口-終端單點(diǎn)信息表
  • 模塊功能:通過API網(wǎng)關(guān)提供數(shù)據(jù)查詢能力,響應(yīng)云圖調(diào)用,提供終端單點(diǎn)信息表

  • 使用產(chǎn)品:API 網(wǎng)關(guān)、云函數(shù)

  • 關(guān)聯(lián)源碼:github-client_data

  • 部署方式:請參考相關(guān)文章 在線甲醛監(jiān)測 “4.2.2 無服務(wù)器云函數(shù)/4.2.3 云API網(wǎng)關(guān)” 章節(jié)

數(shù)據(jù)展示
  • 模塊功能:提供WEB端展示能力,含地圖繪點(diǎn)、列表展示、折線展示等

  • 使用產(chǎn)品:騰訊云圖

  • 關(guān)聯(lián)源碼:無,當(dāng)前為手工配置

  • 部署方式:請參考相關(guān)文章 在線甲醛監(jiān)測 “4.2.4 騰訊云圖” 章節(jié),但數(shù)據(jù)源選擇時,改為使用“API”。其中“首頁”地圖使用“數(shù)據(jù)接口-終端匯總信息表”接口、“單點(diǎn)數(shù)據(jù)頁”使用“數(shù)據(jù)接口-終端單點(diǎn)信息表”接口。具體調(diào)用的接口URL,請對應(yīng)API網(wǎng)關(guān)提供的服務(wù)鏈接。

二期成本分析

以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

上圖表數(shù)為每節(jié)點(diǎn)每15秒上報一次的計算結(jié)果。

硬件部分由于廠商與采購量的差異,價格不同。此處以云服務(wù)成本計算,如果10000節(jié)點(diǎn)規(guī)模,每節(jié)點(diǎn)每分鐘上報一次,單節(jié)點(diǎn)云服務(wù)年成本:

  • 二期架構(gòu) 3.335元 (數(shù)據(jù)庫/年+云圖/年)/10000+(API網(wǎng)關(guān)+云函數(shù))/4=(468+48)/10000+(9+2.1)/4

  • 三期架構(gòu) 1.09元 (消息隊列/年+數(shù)據(jù)庫/年*2+云圖/年)/10000+(云函數(shù)+日志服務(wù)+對象存儲)/4=(3228+468*2+48)/10000+(2.1+2.24+0.02)/4

二期無對象存儲及日志服務(wù)模塊,但在當(dāng)前在建三期中已使用數(shù)月,故有實(shí)際數(shù)據(jù)可列入統(tǒng)計。

后續(xù)計劃

完成三期建設(shè),計劃內(nèi)容涉及:

  • 交互優(yōu)化(done): 啟用space表,展示地點(diǎn)。

  • 交互建設(shè)(doing): 增加小程序能力,提供移動端查詢能力,及告警推送能力。

  • 容災(zāi)優(yōu)化1(done): 增加對象存儲,提供低成本數(shù)據(jù)備份、恢復(fù)、異步遷移同步能力。

  • 容災(zāi)優(yōu)化2(todo): 增加消息隊列 CKafka,應(yīng)對網(wǎng)絡(luò)異常、數(shù)據(jù)庫異常情況下的數(shù)據(jù)堆積與丟失風(fēng)險。

  • 容災(zāi)優(yōu)化3(doing): 增加日志服務(wù),用于數(shù)據(jù)對賬,應(yīng)對多環(huán)節(jié)數(shù)據(jù)處理中,可能出現(xiàn)的數(shù)據(jù)丟失或錯亂情況。

三期架構(gòu)圖預(yù)告

以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

注:淺藍(lán)色說明的是相對二期的架構(gòu)變更重點(diǎn)。

三期版本部分完成效果

WEB端展示

以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)

上述內(nèi)容就是以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng),你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前名稱:以Serverless為核心的云端能力如何打造分布式大氣監(jiān)測系統(tǒng)
網(wǎng)頁路徑:http://bm7419.com/article14/pcgdde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站ChatGPT、品牌網(wǎng)站設(shè)計App設(shè)計、企業(yè)建站小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化