本篇文章為大家展示了以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】二期版本首頁效果
【注2】在建三期版本首頁效果
【注3】在建三期版本中,加入了 日志服務(wù) 、對象存儲、小程序功能。提供靈活的日志存儲與高速檢索能力、 低成本的數(shù)據(jù)庫備份+恢復(fù)+遷移同步能力、移動端交互及其它能力。
注:淺藍(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ù)傳輸。
整體系統(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)源碼。
以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ù)庫詳細(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)測。
模塊功能:接收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ā)”模式
模塊功能:按小時及天觸發(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ā)”模式
模塊功能:通過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é)
模塊功能:通過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é)
模塊功能:提供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ù)鏈接。
上圖表數(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)計。
完成三期建設(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ù)丟失或錯亂情況。
注:淺藍(lán)色說明的是相對二期的架構(gòu)變更重點(diǎn)。
上述內(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)