六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用

北京智能建筑 薛佳志

2022-01-28 /

小T導(dǎo)讀:北京智能建筑科技有限公司作為北京市在智能建筑和智慧城市領(lǐng)域的創(chuàng)新平臺,是冬奧科技平臺公司、智慧冬奧國家重點(diǎn)項(xiàng)目設(shè)計(jì)單位和核心實(shí)施單位,同時(shí),北智建作為國家高新技術(shù)企業(yè),致力于打造中國最大的智能建筑AIoT平臺。

在云計(jì)算模式中,采集的數(shù)據(jù)必須要傳到云上進(jìn)行集中式的存儲(chǔ)、歸檔及分析,依托云端計(jì)算資源進(jìn)行復(fù)雜的計(jì)算,再將所得到的指導(dǎo)性結(jié)論通過網(wǎng)絡(luò)下發(fā)給終端。而對于邊緣計(jì)算,即把一部分的存儲(chǔ)和計(jì)算的能力下沉到邊緣側(cè)(即設(shè)備側(cè)),由于終端設(shè)備可以較獨(dú)立地進(jìn)行數(shù)據(jù)存儲(chǔ)、計(jì)算、決策和應(yīng)用,因此邊緣側(cè)會(huì)更加智能,對云端依賴更小,數(shù)據(jù)處理的時(shí)效性也更高,且不再受網(wǎng)絡(luò)影響。

一般來說,邊緣側(cè)往往是一些能夠大量鋪設(shè)的小型智能終端,出于成本考慮,其配置的內(nèi)存、CPU等硬件資源和計(jì)算能力都很有限。邊緣計(jì)算的難點(diǎn)就在于能否能在有限的計(jì)算資源下,實(shí)現(xiàn)最高效的數(shù)據(jù)存儲(chǔ)、分析和計(jì)算。總結(jié)下來,邊緣計(jì)算對數(shù)據(jù)庫能力的要求主要反映在以下幾個(gè)方面,這也是我們在選擇數(shù)據(jù)庫時(shí)的重點(diǎn)考量維度:

  • 超高讀寫性能
  • 低硬件開銷
  • 通用接口,適配邊緣側(cè)多樣計(jì)算需求
  • 實(shí)時(shí)數(shù)據(jù)的緩存能力、流式計(jì)算能力
  • 歷史數(shù)據(jù)持久化存儲(chǔ)、高效壓縮能力
  • 歷史數(shù)據(jù)回溯能力、按時(shí)間窗口的統(tǒng)計(jì)聚合能力

一、技術(shù)選型

整體而言,時(shí)序數(shù)據(jù)庫具備上述各項(xiàng)能力,也是邊緣側(cè)采集數(shù)據(jù)存儲(chǔ)的最佳選擇。但市面上時(shí)序數(shù)據(jù)庫產(chǎn)品眾多,如何篩選也是一個(gè)難點(diǎn)。

OpenTSDB(底層基于HBase改造)、InfluxDB等一類的時(shí)序數(shù)據(jù)庫,其運(yùn)行起來的硬件資源開銷過高,對于邊緣側(cè)來說還是太重了。后來我們觀察到了一個(gè)極輕量化的開源時(shí)序數(shù)據(jù)庫——TDengine,當(dāng)時(shí)它的整個(gè)安裝包只有2MB多,使用C語言完全自主研發(fā),核心功能就是一個(gè)高性能分布式時(shí)序數(shù)據(jù)庫。具體優(yōu)勢匯總?cè)缦拢?/p>

  • TDengine社區(qū)已經(jīng)發(fā)布了支持ARM64處理器的版本,可以順暢地運(yùn)行在樹莓派等主流的邊緣側(cè)硬件上,同時(shí)提供對實(shí)時(shí)數(shù)據(jù)的緩存、歷史數(shù)據(jù)的回溯、按時(shí)間段進(jìn)行聚合計(jì)算等多種能力。
  • TDengine ARM版本支持的接口也有很多種,與正常集群版幾乎沒有區(qū)別。同時(shí),它還提供了一個(gè) taos shell客戶端,讓調(diào)試人員可以方便地去查看TDengine的運(yùn)行狀態(tài)。
  • 支持包括C/C++、JAVA、Python、RESTful、Go在內(nèi)的多種語言,學(xué)習(xí)成本低
  • 安裝超級簡單,無任何依賴
一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫
  • 使用便捷

1.1 SQLite VS TDengine

另外提起邊緣側(cè)、嵌入式設(shè)備中的數(shù)據(jù)存儲(chǔ),那就不得不提SQLite。SQLite是一個(gè)不需要后臺的超輕量級數(shù)據(jù)庫,即插即用的特點(diǎn)也讓它成為世界上裝機(jī)量最高的數(shù)據(jù)庫。SQLite甚至在官網(wǎng)上將自身定位與fopen()對標(biāo),而不再是作為一款數(shù)據(jù)庫。SQLite提供的一系列API都是對標(biāo)關(guān)系型數(shù)據(jù)庫的,它甚至還支持了事務(wù),因此業(yè)界常常把它用作嵌入式關(guān)系型數(shù)據(jù)庫。其與TDengine的各項(xiàng)對比如下:

一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫

從上面的比較中我們可以看到,TDengine和SQLite要處理的問題側(cè)重點(diǎn)不同,各有所長。從我們自身業(yè)務(wù)的切實(shí)需求出發(fā),兩者并非必須要進(jìn)行取舍,而是可以根據(jù)業(yè)務(wù)需求靈活搭配使用——由TDengine處理時(shí)序數(shù)據(jù),由SQLite處理關(guān)系數(shù)據(jù),以此更好地實(shí)現(xiàn)邊緣側(cè)的數(shù)據(jù)自治?;诖耍诖鎯?chǔ)方面我們決定采用TDengine+SQLite的組合形式。

一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫

二、架構(gòu)與具體實(shí)現(xiàn)

2.1 技術(shù)架構(gòu)

  • 物理視圖
一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫
  • 邏輯視圖
一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫

在邊緣端日志功能(為邊緣端的設(shè)備提供日志上報(bào))的設(shè)計(jì)上,我們采用TDengine對日志進(jìn)行存儲(chǔ),該功能的設(shè)計(jì)是為出現(xiàn)異常狀況的設(shè)備提供溯源依據(jù),在與告警功能配合下可以讓開發(fā)人員快速定位到問題,及時(shí)進(jìn)行解決。此外在邊緣端進(jìn)行日志處理,就能利用邊緣端的算力減輕中臺的壓力,還可以支撐2萬設(shè)備異常情況下的日志并發(fā)寫入。

對于設(shè)備的采集值,我們同樣采用TDengine進(jìn)行存儲(chǔ)和檢索。以往采用關(guān)系型數(shù)據(jù)庫進(jìn)行存儲(chǔ)時(shí),在設(shè)備比較多、數(shù)據(jù)量龐大的情況下,查詢會(huì)非常的慢,體驗(yàn)感極差。反觀TDengine高壓縮算法能提升10到20倍的壓縮性能,降低存儲(chǔ)壓力的同時(shí)也解決了數(shù)據(jù)存儲(chǔ)成本高的問題,還達(dá)到了降低硬件成本的效果。

2.2 建表建庫思路

  • 直接輸入taos進(jìn)入TDengine界面
  • SHOW DATABASES 查看數(shù)據(jù)庫
  • USE db_name; 選擇數(shù)據(jù)庫
  • SHOW TABLES; 查看表
  • CREATE DATABASE 創(chuàng)建庫
  • CREATE TABLE 創(chuàng)建表
  • INSERT INTO 插入數(shù)據(jù)
  • SELECT 查詢數(shù)據(jù)
一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫
一個(gè)服務(wù)器輕松存儲(chǔ)上億數(shù)據(jù),TDengine在北京智能建筑邊緣存儲(chǔ)的應(yīng)用 - TDengine Database 時(shí)序數(shù)據(jù)庫

三、落地效果

在產(chǎn)品開發(fā)初期階段,我們也嘗試過其他類型的數(shù)據(jù)庫解決方案,但都因?yàn)楦鞣N問題而擱置了。因?yàn)檠邪l(fā)團(tuán)隊(duì)精力人力有限,我們沒有考慮過自己搭建一套大數(shù)據(jù)處理平臺,畢竟要充分整合Kafka、HBase、Hadoop、Spark這一系列開源框架不僅意味要花費(fèi)大量人力,還需要更多的時(shí)間去調(diào)試開源框架本身的問題,融合及聯(lián)調(diào)不同框架也存在著很多數(shù)據(jù)一致性的問題,同時(shí)也意味著后期運(yùn)維成本的大幅度增加,穩(wěn)定性也是個(gè)不小的未知數(shù)。

所幸遇到了TDengine,它幫助我們在邊緣側(cè)解決了一個(gè)很大的問題,即邊緣存儲(chǔ)的問題。因?yàn)楹芏鄷r(shí)候邊緣是布署在資源比較少的機(jī)器上面,甚至是ARM的工業(yè)盒子上面,在資源使用上非常的苛刻,而現(xiàn)在得益于TDengine超強(qiáng)的壓縮算法,我們使用非常小的存儲(chǔ)空間就存儲(chǔ)了幾千萬數(shù)據(jù),壓縮率遠(yuǎn)超1/20,在單機(jī)上面布署一個(gè)TDengine服務(wù)器就可以輕輕松松地存儲(chǔ)上億的數(shù)據(jù)。

此外它還擁有超強(qiáng)的計(jì)算能力,占用的資源也非常小,在我們的業(yè)務(wù)中千萬級數(shù)據(jù)檢索時(shí)間達(dá)到了毫秒級,從用戶角度來說產(chǎn)品體驗(yàn)非常好。在運(yùn)維層面,TDengine提供標(biāo)準(zhǔn)的SQL語法,有過SQL使用經(jīng)驗(yàn)的同學(xué)基本上很快就能上手,學(xué)習(xí)成本接近于零。

四、寫在最后

事實(shí)上,TDengine這款產(chǎn)品我已經(jīng)關(guān)注很久了,我也和濤思的同學(xué)們提出過一些在使用過程中發(fā)現(xiàn)的Bug,從最初的版本到現(xiàn)在的產(chǎn)品,TDengine變得更加強(qiáng)大和成熟。作為它的“老朋友”,我在此也提出兩個(gè)改進(jìn)優(yōu)化建議,以便幫助它更好的成長:

  • 現(xiàn)在安裝TDengine Server時(shí)要向下兼容TaosClient,如果在升級Server時(shí),我不需要再在自己的服務(wù)器上面同時(shí)升級TaosClient,可以減少一些部署步驟。
  • 如果我們用kubernetes進(jìn)行部署,POD刪掉重啟后服務(wù)就無法啟動(dòng)了,還需要在掛載的數(shù)據(jù)文件夾里面手動(dòng)去修改配置,非常地不靈活。

我們與TDengine的合作不會(huì)止于此,未來等到TDengine更加成熟穩(wěn)定后,不僅我們的邊緣計(jì)算存儲(chǔ)要使用它,甚至我們的中臺數(shù)據(jù)也要遷移到上面。