无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

中通科技是如何建模并高效處理車輛上的時序數據的

小 T 導讀:車(che)聯網業(ye)務是中通科技配送全鏈路業(ye)務中非常重要的一環,在實際的項目需求中,需要實時查詢車(che)輛最新位(wei)置狀態(tai),達到車(che)輛運(yun)營可視化管理。中智車(che)聯服務平臺選擇了(le)用 TDengine 來高效處理從車(che)輛上實時采集的時序數據。

業務背景

目前(qian),中(zhong)通科技擁有一支(zhi)千人規模的(de)(de)研(yan)發(fa)(fa)團隊,在數(shu)(shu)字信息(xi)科技研(yan)發(fa)(fa)方(fang)面以“互聯網+物流(liu)”的(de)(de)理念(nian),自研(yan)的(de)(de)軟件(jian)系統和(he)數(shu)(shu)字化(hua)工具已達百余個,賦能覆(fu)蓋快(kuai)遞業(ye)務(wu)全(quan)場景,同時為快(kuai)運、國際(ji)、云倉、優選、金(jin)融、商業(ye)等生態圈業(ye)務(wu)提供(gong)全(quan)方(fang)位的(de)(de)研(yan)發(fa)(fa)支(zhi)持,建(jian)立起完善的(de)(de)互聯網產品研(yan)發(fa)(fa)體(ti)系,全(quan)場景、全(quan)鏈路(lu)的(de)(de)數(shu)(shu)字化(hua)、互聯化(hua)和(he)智(zhi)能化(hua)的(de)(de)業(ye)務(wu)地(di)圖愈發(fa)(fa)成熟。

2021 年年底,中(zhong)通(tong)快(kuai)遞已完成了總部園區(qu)的(de)(de)實景三維模(mo)型,通(tong)過接入園區(qu)內(nei)(nei)的(de)(de)在線傳感器(qi),根據現(xian)(xian)有園區(qu)各功能區(qu)的(de)(de)區(qu)位布(bu)局,基(ji)于此三維模(mo)型開展園區(qu)內(nei)(nei)生(sheng)產規劃、調度(du)運(yun)行(xing)和維護(hu)管理的(de)(de)全過程應用,從而(er)實現(xian)(xian)園區(qu)內(nei)(nei)人、車(che)、物在精準運(yun)行(xing)、資源優化和配置服務中(zhong)的(de)(de)全過程精益化管理。

隨(sui)著生產(chan)設備的小型化和智(zhi)能化,快(kuai)遞(di)企業(ye)也(ye)將更(geng)快(kuai)地進(jin)入空間地理(li)信息數據生產(chan)領域(yu),有包(bao)裹流動的地方,就會有時空數據服(fu)務的需求。

這里(li)先給(gei)大家介紹(shao)一(yi)下(xia)配送全鏈(lian)路(lu)業務,這是指包裹從(cong)商家倉(cang)出(chu)來一(yi)直(zhi)到用(yong)戶手上(shang)的(de)這段派送履約鏈(lian)路(lu),它包含(han) 4 個主(zhu)要的(de)實(shi)操流程,分(fen)(fen)別(bie)是分(fen)(fen)撥實(shi)操、運輸(shu)實(shi)操、站點實(shi)操和快(kuai)遞員(yuan)實(shi)操。把 4 種實(shi)操管(guan)(guan)理(li)放到三(san)個系(xi)統里(li)面,這三(san)個系(xi)統分(fen)(fen)別(bie)是分(fen)(fen)撥管(guan)(guan)理(li)、運輸(shu)管(guan)(guan)理(li)、末端站點實(shi)操管(guan)(guan)理(li)。具體如下(xia)圖(tu)所示。

TDengine Database

其中車聯網業務也是非常重要的一環,通過人、車、貨、場全鏈條覆蓋的車聯網設備應用,實現物流運輸全鏈路感知。在實際的項目需求中,我們需要實時查詢車輛最新位置狀態,達到車輛運營可視化管理,也就是我們的中智車聯服務平臺

技術選型

在上(shang)述(shu)業務過程中,我們使用了 TDengine 來完成這個目標(biao)。

在選型時,我們對比了 Prometheus 和 TDengine 這兩款很有代表性的時序數據庫(Time Series Database)。 相對(dui)而言,TDengine 的(de)“一(yi)個設(she)(she)備采集點一(yi)張表”的(de)底層設(she)(she)計,自帶(dai)的(de)降采樣和(he)窗口函(han)數的(de)優秀性(xing)能(neng),都十分契合車輛網場景。其列式存儲帶(dai)來的(de)壓縮比也更好。所以我們選(xuan)擇了(le) TDengine。

技術架構

我們在每輛車上都安裝了部標機(即衛星(xing)定位汽車(che)(che)行(xing)駛記錄儀),來實(shi)時(shi)采(cai)集(ji)(ji)車(che)(che)輛的(de)(de)行(xing)駛速度、時(shi)間、里程(cheng)以及與車(che)(che)輛行(xing)駛相關的(de)(de)其他狀(zhuang)態(tai)信息(xi)。采(cai)集(ji)(ji)到(dao)的(de)(de)數據(ju),通(tong)過我們的(de)(de) IoT service 這層應用(yong)來處理。然后數據(ju)經由(you) MQ (消息(xi)隊列)層由(you) JDBC-RESTful 的(de)(de)方(fang)式(shi)寫入 TDengine 集(ji)(ji)群,以供上游平(ping)臺使(shi)用(yong),而部標機產生的(de)(de)其他類數據(ju)則通(tong)過別的(de)(de)途徑供上游平(ping)臺使(shi)用(yong)。

TDengine Database

我們使(shi)用了三節點三副本的(de)模式落(luo)地了 TDengine 集群。 

TDengine Database

建表很簡單(dan),我們選擇了一類(lei)數據對(dui)應一張超級表,超級表下根據車牌號(hao)劃(hua)分子表,表結構如(ru)下圖所示。目前還是項目初期,所以只接入(ru)了 700 余輛車,后續(xu)會逐步增加接入(ru)車輛。也正因為這套(tao)環境(jing)接入(ru)設備不多,寫(xie)入(ru)方面并無壓(ya)力,遠遠達不到 TDengine 的寫(xie)入(ru)極(ji)限。

TDengine Database

具體應用

我們要通過數據的(de)變化來實(shi)時得到車輛的(de)很(hen)多信息,比如是(shi)否有(you)停留、超(chao)速、緩行、離線等事件發生。有(you)些(xie)功能可以通過 TDengine 的(de)查(cha)詢功能實(shi)現,有(you)些(xie)不方便實(shi)現的(de)暫(zan)時通過應(ying)用來完成。

下面我(wo)們通過幾個例子來看(kan)看(kan)目前業務中使用比較頻繁的查(cha)詢:

1.獲取車輛的最新位置

SQL 語句(ju)如下(xia)。

select  last_row(longitude,latitude),deviceId   from ioc_gps.vehicle_location groupby deviceId  where device_id = #{deviceId}  and ts >= #{startTime} and ts <= #{endTime}

業務需(xu)要快(kuai)速(su)查(cha)詢每輛車(che)的(de)最(zui)新坐標(biao),這里用到(dao)了(le) TDengine 提供的(de) last_row 函(han)數。除(chu)了(le)查(cha)詢單獨某輛車(che),經常(chang)還會根據 groupId 或者一(yi)批 deviceId 去(qu)查(cha)詢一(yi)批車(che)輛的(de)最(zui)新坐標(biao)。

系統界面如下(xia)圖所示(shi)。

TDengine Database

2. 車查軌跡信息查詢:

select ts,device_id as deviceId,longitude,latitude,altitude,speed as speed,direction,alarm as warnBit,status as statusBit,mobile,mileage,speed2,rssi,satellites,signal_status as signalStatus,gmt_create as gmtCreate,create_ip as createIp,kind,oil,message_id as messageId,device_name as deviceName,plate,device_group_id as deviceGroupId,device_group_name as deviceGroupName,acc, device_code as deviceCode
        from ioc_gps.vehicle_location
        where device_id = #{deviceId}
          and ts >= #{startTime}
          and ts <= #{endTime}

通過指定(ding)時間(jian)范圍和(he)具體的(de)車(che)牌號,就可以立刻(ke)獲得(de)該(gai)車(che)輛的(de)軌跡數(shu)據并渲(xuan)染(ran)出(chu)軌跡圖像。如(ru)果知道子表(biao)(biao)名的(de)話,還可以直接(jie)查詢子表(biao)(biao),這樣會減(jian)少超級表(biao)(biao)中(zhong)對于標簽(qian)的(de)檢索。

系統界(jie)面如下圖所示。

TDengine Database

未來規劃

通(tong)過項目(mu)初期的(de)(de)(de)(de)(de)表(biao)現(xian),可(ke)(ke)以知道 TDengine 能(neng)夠(gou)輕松滿足我(wo)們的(de)(de)(de)(de)(de)業務(wu)需求。未來我(wo)們還(huan)(huan)有其他的(de)(de)(de)(de)(de)使(shi)用(yong)規(gui)劃(hua),比(bi)如(ru)在我(wo)們的(de)(de)(de)(de)(de)表(biao)字段中,有個 ACC 字段,1 表(biao)示(shi)點(dian)火(huo),0 表(biao)示(shi)熄火(huo),要求能(neng)夠(gou)計算(suan)點(dian)火(huo)駕駛行程(cheng),由于 TDengine 當前還(huan)(huan)沒有直(zhi)接支(zhi)持 GIS 計算(suan),暫時(shi)不能(neng)通(tong)過坐標算(suan)出直(zhi)線(xian)距離(當前所(suo)用(yong)的(de)(de)(de)(de)(de) TDengine 2.0 版(ban)本可(ke)(ke)能(neng)需要使(shi)用(yong)自定義的(de)(de)(de)(de)(de) UDF 實現(xian)),但是應(ying)該可(ke)(ke)以通(tong)過狀態窗口+加權平均速度(du)+開火(huo)時(shi)間(jian)算(suan)出車輛(liang)每次(ci)點(dian)火(huo)的(de)(de)(de)(de)(de)駕駛路(lu)程(cheng),就(jiu)想這樣:

select time*speed from (select elapsed(ts,1s)as time,twa(speed) as speed,acc from t1 state_window(acc)) where acc =1  ;

而每次 ACC 開火熄火的(de)起(qi)始(shi)點和結束點信息,可以通過(guo) state_window 配合 first/last 函數來實現,比如(ru):

select last(*),first(*) from t2 state_window(charge);

除此之外,我(wo)們也需(xu)要(yao)(yao)電子圍欄(lan)計(ji)算,需(xu)要(yao)(yao)快速計(ji)算新軌跡點是否進入(ru)某(mou)電子圍欄(lan)之中,或者需(xu)要(yao)(yao)快速計(ji)算(1s 內(nei)(nei))位于(yu)某(mou)行政區劃(hua)(省(sheng)份/城市)邊界內(nei)(nei)的所有車輛的數(shu)量(liang)。這類(lei)查詢都需(xu)要(yao)(yao)等 TDengine 繼續完善才能實現。

后續我們(men)接入的車輛會達到幾萬輛,對于部(bu)標機產(chan)生的相關時序數(shu)據(ju)的使用(yong)也會越來(lai)越多(duo)。期待(dai) TDengine 可以繼續為車聯(lian)網場景(jing)下的查(cha)詢提供更(geng)為多(duo)樣性(xing)的支(zhi)持,產(chan)品(pin)越來(lai)越好(hao)。