久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

以Serverless為核心的云端能力如何打造分布式大氣監測系統

151次閱讀
沒有評論

共計 4174 個字符,預計需要花費 11 分鐘才能閱讀完成。

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

前述

下面將對數據上云后的相關流程,進行說明。

由于項目平臺持續建設中,當前已開源信息為二期版本,所以本篇內容均基于此版本能力進行說明。此版本架構進一步優化了數據鑒權及數據庫保護。

分為兩個部分:

架構組成:技術角度,拆解設計邏輯

模塊實現:功能角度,講解實現邏輯

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

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

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

架構組成二期架構圖

注:淺藍色標明的是相對一期的架構變更重點。

部署維度

終端:部署在監測點的設備。相關設計在本系列前文中已說明。

云端:部署在云上的平臺。相關設計將在本文說明。

功能維度

以平臺設計的基本組成部分,進行的邏輯拆分。并依架構層的設計需求,配套選型的具體產品。

具體功能與選型說明:

監測節點:由軟硬兩部分組成。基于騰訊物聯網終端操作系統 TencentOS tiny 開發固件,將 兼容騰訊云的硬件設備 與 騰訊云 IoT explorer 進行了協議級的對接。

本地網關:此部分以通信協議轉換為主,不解析具體數據,僅需按前文指引配置即可。

物聯網接入層:基于騰訊云 IoT explorer 產品,提供了解密、接入、轉發的相關功能。在獲取數據后,進行了基于 http 協議的轉推動作,傳遞給下游 API 網關。

中間件層:基于 API 網關提供了銜接及負載均衡等能力,基于鑒權、流控等能力,銜接云函數,提供可靠的數據輸入輸出服務。

邏輯層:基于云函數,實現了接收數據入庫(數據固化)、定時統計匯總(數據分析)、輸出應用數據(數據輸出,支撐展示)的能力。

存儲層:基于云數據庫 TencentDB for MySQL,進行監測數據、匯總數據、平臺配置的存儲。

展示層:基于騰訊云圖,提供了地圖展示、數據展示、折線圖展示等能力。并配置提供聯動處理,提高了響應速度,減少了資源文件的重復傳輸。

模塊實現

整體系統,以數據為核心,進行了相關設計,所以本部分有兩個組成部分:

數據結構:講解各環節的核心數據結構與關聯模式。

模塊說明:講解各功能模塊的實現與對應源碼。

數據結構 IoT explorer(物聯網開發平臺) 推送數據結構

以 API 網關推送進來,由云函數在環境變量 event 中提取到的原始數據。

其中主要的部分:

非 body 部分,為 api 網關相關信息

body = IoT explorer 原始數據

body = 終端節點上報的原始數據,經 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
 }
}

數據庫表單結構

數據庫詳細格式,請參考 github-sql

各表用途:

config:系統配置表

space:地點表。記錄節點部署地點。

client:節點表。記錄節點信息及最新關鍵信息,關聯 space 表。

base_data:日志表。記錄每次上報的信息,關聯 space、client 表。

aggregate_data:匯總信息表。記錄按小時、天等時段匯總的數據信息。

temp_base_data:臨時日志表。上報設備名如不在節點表內,則存入此表,主要用于調測。

API 接口數據結構模塊說明數據入庫

模塊功能:接收 IoT explorer 推送數據,匹配并轉換后,入數據庫

使用產品:API 網關、無服務器云函數

關聯源碼:github-upload

部署方式:請參考相關文章 在線甲醛監測“4.2.2 無服務器云函數 /4.2.3 云 API 網關”章節

終端在線更新

模塊功能:按 3 分鐘觸發,更新終端信息,用于快速查詢與展示

使用產品:云函數

關聯源碼:github-client_active_new

部署方式:請參考相關文章 在線甲醛監測“4.2.2 無服務器云函數 /4.2.3 云 API 網關”章節,但改為“定時觸發”模式

數據統計

模塊功能:按小時及天觸發,統計監測數據,用于快速查詢與展示

使用產品:云函數

關聯源碼:github-aggregate

部署方式:請參考相關文章 在線甲醛監測“4.2.2 無服務器云函數 /4.2.3 云 API 網關”章節,但改為“定時觸發”模式

數據接口 - 終端匯總信息表

模塊功能:通過 API 網關提供數據查詢能力,響應云圖調用,提供終端匯總信息表

使用產品:API 網關、云函數

關聯源碼:github-client_info

部署方式:請參考相關文章 在線甲醛監測“4.2.2 無服務器云函數 /4.2.3 云 API 網關”章節

數據接口 - 終端單點信息表

模塊功能:通過 API 網關提供數據查詢能力,響應云圖調用,提供終端單點信息表

使用產品:API 網關、云函數

關聯源碼:github-client_data

部署方式:請參考相關文章 在線甲醛監測“4.2.2 無服務器云函數 /4.2.3 云 API 網關”章節

數據展示

模塊功能:提供 WEB 端展示能力,含地圖繪點、列表展示、折線展示等

使用產品:騰訊云圖

關聯源碼:無,當前為手工配置

部署方式:請參考相關文章 在線甲醛監測“4.2.4 騰訊云圖”章節,但數據源選擇時,改為使用“API”。其中“首頁”地圖使用“數據接口 - 終端匯總信息表”接口、“單點數據頁”使用“數據接口 - 終端單點信息表”接口。具體調用的接口 URL,請對應 API 網關提供的服務鏈接。

二期成本分析

上圖表數為每節點每 15 秒上報一次的計算結果。

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

二期架構 3.335 元 (數據庫 / 年 + 云圖 / 年)/10000+(API 網關 + 云函數)/4=(468+48)/10000+(9+2.1)/4

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

二期無對象存儲及日志服務模塊,但在當前在建三期中已使用數月,故有實際數據可列入統計。

后續計劃

完成三期建設,計劃內容涉及:

交互優化 (done): 啟用 space 表,展示地點。

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

容災優化 1(done): 增加對象存儲,提供低成本數據備份、恢復、異步遷移同步能力。

容災優化 2(todo): 增加消息隊列 CKafka,應對網絡異常、數據庫異常情況下的數據堆積與丟失風險。

容災優化 3(doing): 增加日志服務,用于數據對賬,應對多環節數據處理中,可能出現的數據丟失或錯亂情況。

三期架構圖預告

注:淺藍色說明的是相對二期的架構變更重點。

三期版本部分完成效果 WEB 端展示

上述內容就是以 Serverless 為核心的云端能力如何打造分布式大氣監測系統,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計4174字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 新田县| 长泰县| 遂溪县| 勃利县| 义马市| 资兴市| 辉县市| 泽州县| 工布江达县| 松原市| 兴宁市| 西乌珠穆沁旗| 凉山| 东山县| 德保县| 南通市| 毕节市| 通渭县| 磴口县| 罗山县| 碌曲县| 隆尧县| 建阳市| 徐汇区| 宁化县| 宣城市| 清徐县| 大石桥市| 寻甸| 乌鲁木齐市| 苏尼特右旗| 陈巴尔虎旗| 广安市| 云浮市| 巢湖市| 库尔勒市| 宝兴县| 鹤峰县| 双江| 双峰县| 潼关县|