1. 程式人生 > 其它 >助力 60+ 市區管理建設,TDengine 聯手數字政通打造智慧城市平臺

助力 60+ 市區管理建設,TDengine 聯手數字政通打造智慧城市平臺

小 T 導讀:隨著智慧城市的加速建設,物聯裝置的管理問題凸顯,數字政通研發“城市管理物聯網平臺”對物聯網裝置實行監督,通過鳥瞰整體資料來發現裝置問題,便於及時派單處理。面對海量物聯網資料的處理,TDengine 的高效儲存給了數字政通相當大的助力。

 

企業簡介

北京數字政通科技股份有限公司是北京市認證的高新技術企業和擁有多項自主智慧財產權的軟體企業,專業從事電子政務和 GIS 應用平臺的開發和推廣工作,為政府部門提供 GIS、MIS、OA 一體化的電子政務解決方案,並提供政府各個部門間基於資料共享的協同工作平臺。

隨著 5G 基站等通訊工程的加快建設,城市治理、城市安全管理成為熱門話題,物聯裝置在我們的社會中扮演的角色也變得越來越重要,智慧燃氣、智慧電錶、智慧井蓋等專案在眾多城市開始佈局。專案的快速爆發也讓“如何管理物聯裝置”成為一個待解的難題。

作為一個裝置資料中臺,由數字政通研發的“城市管理物聯網平臺”致力於為智慧園林、智慧井蓋、智慧排水、智慧市政等城市管理專案的各子系統,提供資料清洗、資料接入、資料計算、資料儲存的能力。通過接入各個市區的智慧裝置,該平臺能夠提供各類裝置的實時監測資料及報警資料,進一步滿足各類裝置的資料分析、關聯分析、歷史分析、對比分析等需求。簡單來講,平臺功能的實現就是通過鳥瞰整體資料來發現裝置問題,便於及時派單處理,助力智慧城市管理。  

目前,我們已經在全國累計接入 60 餘個市區專案,累計合作 100 餘家裝置廠商,累計接入 69 種裝置型別、9 萬餘裝置量,全國範圍下日累計 5000 萬資料量,全國範圍下有效報警累計 20 萬 +,解決 10 萬 + 報警案件。  

面對海量物聯網資料的處理,時序資料庫 TDengine 的高效儲存給了我們相當大的助力。

 

技術架構分析

裝置資料的處理路徑如下:通過各個協議(MQ、MQTT、AMQP、HTTP、TCP、HJT212、ModBus、NB等)接入物聯裝置到 Kafka 中進行消費,隨後進行裝置資料的噪點清洗,將有用的資料及時更新到 MySQL 以及 TDengine 中,同時根據配置的報警策略生成報警資料。

平臺的報警是通過應用層來控制的,按照優先順序排位如下:1-強制報警、2-具體監測項報警、3-全域性報警、4-基礎報警。

 

落地經驗分享

因為我們的資料庫服務眾多,而且物聯網平臺主要工作是對接物聯網裝置,所以不同的資料庫服務對硬體的需求配置要以專案實際接入的裝置數量為衡量標準。本文案例中的場景有 57,634 個裝置,對應的伺服器配置為:CPU 16 核、記憶體 32G、硬碟 1T、頻寬 120MB/s。

我們以 TDengine 2.0.22.3 版本單副本模式落地了一個三節點的叢集,備份目前依靠其他方式完成。

 

上文中提到的 57,634 個裝置屬於同一型別,所以歸屬於同一個超級表,表結構和相關資訊如下:

 

通過 select count(*) from iot_equip_data 可以看到,我們當前已經保留了 9 億條資料。

 

壓縮與查詢效果

通過檢視 3 個節點的 Vnode 目錄總大小,可以得知目前資料佔用總量為 8.7G。而從上述表結構我們也能看出實際入庫資料總量大概為 203GB,經過壓縮後為 8.7G,壓縮率達到了 4% 左右,大幅節約了儲存成本。

     

我們常用的業務 SQL 大概有如下型別:

  1. 對 9 億資料量的超級表使用降取樣查詢,展示裝置指標日月年線,耗時僅僅 0.22 秒。
  1. Select first(value) as value from egovaiot.iot_equip_data where field_id='346fb64a-3e0f-4632-bd83-f4830ad91611' and time>=1645963
  2. 586260 and time<=1648555586260 interval(1000a) order by time;
 
  1. 對 9 億資料量的超級表使用降取樣查詢,並計算每個時間視窗的平均值、最大值、最小值,結果如下所示。
   
  1. select avg(value) as 'avgValue',max(value) as 'maxValue',min(value) as 'minValue' from egovaiot.iot_equip_data where field_id='346fb64a-3e0f-4
  2. bd83-f4830ad91611' and time>=1646137565000 and time<=1648556765000 interval(1000a) order by time;
  1. 對 9 億資料量的超級表使用降取樣查詢,並計算每個時間視窗的最大值最小值後,求出差值。
   
  1. select spread(value) as value from egovaiot.iot_equip_data where equip_type_id='1' and time>=1633004978592 and time<=1648556978592 and field_c
  2. ode like 'WATER_LEVEL' interval(1d) group by field_id order by time;

 

寫在最後

物聯裝置在我們的生活中扮演的角色越來越重要,是實現智慧生活、智慧城市的重要媒介。攜手 TDengine,數字政通一直在致力於做好物聯裝置的智慧化管理,以此助力智慧生活、智慧城市的發展。未來,我們還將會與 TDengine 一起探索更多維度的生態合作,為建設智慧城市、保障社會民生提供自身力所能及的幫助。

 

作者簡介

張東旭,數字政通 Java 研發,城市管理物聯網產品負責人。專注於城市物聯裝置資料採集和交換、資料計算能力。興趣是看書和爬山。


想了解更多 TDengine 的具體細節,歡迎大家在GitHub上檢視相關原始碼。