溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-12-22 13:49:48 來(lái)源:億速云 閱讀:111 作者:柒染 欄目:云計(jì)算

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

前述

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

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

分為兩個(gè)部分:

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

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

【注1】二期版本首頁(yè)效果

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

【注2】在建三期版本首頁(yè)效果

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

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

架構(gòu)組成

二期架構(gòu)圖

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

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

部署維度

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

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

功能維度

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

具體功能與選型說(shuō)明:

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

  • 本地網(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)推動(dòng)作,傳遞給下游 API 網(wǎng)關(guān)。

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

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

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

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

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

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

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

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

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

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

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

其中主要的部分:

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

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

  • 'body' = 終端節(jié)點(diǎn)上報(bào)的原始數(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ù)庫(kù)表單結(jié)構(gòu)

數(shù)據(jù)庫(kù)詳細(xì)格式,請(qǐng)參考 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:日志表。記錄每次上報(bào)的信息,關(guān)聯(lián)space、client表。

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

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

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

模塊說(shuō)明

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

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

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

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

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

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

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

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

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

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

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

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

數(shù)據(jù)接口-終端匯總信息表
  • 模塊功能:通過(guò)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

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

數(shù)據(jù)接口-終端單點(diǎn)信息表
  • 模塊功能:通過(guò)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

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

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

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

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

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

二期成本分析

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

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

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

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

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

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

后續(xù)計(jì)劃

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

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

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

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

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

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

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

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

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

三期版本部分完成效果

WEB端展示

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

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

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

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI