车纷享:基于阿里云HBase构建车联网平台实践
摘要: 1. 業(yè)務(wù)介紹 車紛享是國(guó)內(nèi)首家進(jìn)行汽車共享開發(fā)和運(yùn)營(yíng)的公司。旗下共享汽車平臺(tái)采用新能源汽車作為運(yùn)營(yíng)工具以B2C+C2C汽車共享作為商業(yè)運(yùn)營(yíng)模式采用車聯(lián)網(wǎng)技術(shù)作為運(yùn)營(yíng)管理技術(shù)目前已與國(guó)內(nèi)多個(gè)城市建立合作。
1. 業(yè)務(wù)介紹
車紛享是國(guó)內(nèi)首家進(jìn)行汽車共享開發(fā)和運(yùn)營(yíng)的公司。旗下共享汽車平臺(tái)采用新能源汽車作為運(yùn)營(yíng)工具,以B2C+C2C汽車共享作為商業(yè)運(yùn)營(yíng)模式,采用車聯(lián)網(wǎng)技術(shù)作為運(yùn)營(yíng)管理技術(shù),目前已與國(guó)內(nèi)多個(gè)城市建立合作。
公司打造會(huì)員制的分時(shí)自助租賃平臺(tái)“車紛享”與“眾車紛享”,以及純電動(dòng)新能源汽車分時(shí)租賃平臺(tái)“彩虹車”,向會(huì)員提供以分鐘加里程為計(jì)費(fèi)單位的自助租車服務(wù)。通過公司自助租車系統(tǒng),用戶可以進(jìn)行車輛預(yù)定、費(fèi)用支付、自助取車、還車及自動(dòng)結(jié)算等,無需人工干預(yù),非常簡(jiǎn)單,真正實(shí)現(xiàn)了家門口或公司門口的自助租車,便捷、時(shí)尚、經(jīng)濟(jì)。 公司汽車共享(分時(shí)自助、智能租車)系統(tǒng)為自主研發(fā),具有完全自主知識(shí)產(chǎn)權(quán),能夠根據(jù)需求進(jìn)行改進(jìn)和定制,是國(guó)內(nèi)第一個(gè)成功商業(yè)運(yùn)營(yíng)的汽車共享系統(tǒng),處于國(guó)內(nèi)領(lǐng)先。
2. 選型
對(duì)于車紛享這種初創(chuàng)公司來說,技術(shù)選型首要考慮的是:輕運(yùn)維,業(yè)務(wù)快速落地。自建機(jī)房以及運(yùn)維團(tuán)隊(duì)意味著前期較大的投入以及高昂的運(yùn)維成本,隨著業(yè)務(wù)規(guī)模的擴(kuò)張,資源水平擴(kuò)展以及垂直擴(kuò)展也是未來無法避免的痛點(diǎn)。
技術(shù)團(tuán)隊(duì)進(jìn)行了多次內(nèi)部討論,同時(shí)對(duì)類似行業(yè)公司的解決方案進(jìn)行了詳細(xì)調(diào)研,新方案必須滿足我們以下的基本需求:
(1)支持大量IoT數(shù)據(jù)的不間斷寫入,至少能存放百T以內(nèi)的數(shù)據(jù),隨著數(shù)據(jù)規(guī)模的增長(zhǎng),能夠方便的進(jìn)行垂直和水平擴(kuò)展。
(2)支持基于時(shí)間戳的歷史數(shù)據(jù)查詢,響應(yīng)時(shí)間至少達(dá)到秒級(jí),后期根據(jù)業(yè)務(wù)需要,支持對(duì)一些關(guān)鍵字段進(jìn)行索引,以滿足某些查詢場(chǎng)景
(3)與目前的大數(shù)據(jù)生態(tài)產(chǎn)品(MapReduce,Spark,Hive)能友好兼容,支持離線和準(zhǔn)實(shí)時(shí)OLAP
(4)優(yōu)先選擇有雄厚實(shí)力的商業(yè)公司支持的云平臺(tái),最大限度減少運(yùn)維成本。
最終我們技術(shù)團(tuán)隊(duì)選擇的是阿里云平臺(tái),阿里是國(guó)內(nèi)大數(shù)據(jù)領(lǐng)域技術(shù)最雄厚的公司,比如HBase,阿里擁有2 HBase PMC、3 Committer、數(shù)十位內(nèi)核貢獻(xiàn)者,貢獻(xiàn)200+ Patch,同時(shí)阿里云平臺(tái)提供了多種方便易上手的數(shù)據(jù)產(chǎn)品工具。
3. 車紛享數(shù)據(jù)中心
車紛享的數(shù)據(jù)來自于車載終端上傳的數(shù)據(jù)報(bào)文,首先經(jīng)過系統(tǒng)平臺(tái)的網(wǎng)關(guān),然后借助規(guī)則引擎對(duì)數(shù)據(jù)報(bào)文進(jìn)行解析拆分成有意義的數(shù)據(jù)項(xiàng),以數(shù)據(jù)記錄的方式放入消息隊(duì)列,消息隊(duì)列采用了阿里的MQ,消息隊(duì)列的消費(fèi)程序,會(huì)將消費(fèi)到的數(shù)據(jù)分別存入Redis以及HBase,其中Redis是用來提供車輛實(shí)時(shí)狀態(tài)的查詢,HBase提供車輛歷史數(shù)據(jù)的查詢,為了對(duì)歷史數(shù)據(jù)進(jìn)行災(zāi)備處理,使用了阿里云的OSS存儲(chǔ),將備份數(shù)據(jù)日志文件按照時(shí)間分區(qū)存儲(chǔ)至OSS。
3.1 項(xiàng)目背景
車聯(lián)網(wǎng)符合并發(fā)量大,數(shù)據(jù)上傳頻率高,寫多讀少的高吞吐型業(yè)務(wù)場(chǎng)景,對(duì)查詢要求也接近準(zhǔn)實(shí)時(shí);原有的關(guān)系數(shù)據(jù)庫(kù)已經(jīng)不能滿足我們的業(yè)務(wù)需要,尤其數(shù)億量級(jí)下的分頁查詢和車輛歷史軌跡查詢的場(chǎng)景下,關(guān)系數(shù)據(jù)庫(kù)的讀取相應(yīng)延遲已經(jīng)達(dá)到了數(shù)分鐘級(jí),完全不能滿足客戶的需要。阿里云HBase為我們提供了HBase+Phoenix的組合方案。
HBase是基于磁盤的NoSql數(shù)據(jù)庫(kù),因?yàn)椴捎昧薒SM的數(shù)據(jù)結(jié)構(gòu),隨機(jī)寫效率較高,特別適合車聯(lián)網(wǎng)的數(shù)據(jù)上傳特點(diǎn),在基于Rowkey方面的查詢延時(shí)接近準(zhǔn)實(shí)時(shí)。但是因?yàn)樵鶫Base的查詢方式比較底層,沒有SQL查詢接口,對(duì)于使用者要求較高,而且沒有二級(jí)索引,如果不是基于Rowkey查詢,查詢效率會(huì)急劇下降,為了減少客戶的使用難度,阿里云HBase團(tuán)隊(duì)在HBase集群里集成了Phoenix的交互引擎,簡(jiǎn)單的嵌入架構(gòu)如下:
Phoenix的架構(gòu)
3.2 性能指標(biāo)
1、系統(tǒng)情況
目前測(cè)試集群上有6臺(tái)服務(wù)器,都是16Core 32G的配置
2、查詢測(cè)試
歷史數(shù)據(jù)表(保密需要,字段適當(dāng)裁剪):
create table if not exists 車輛歷史數(shù)據(jù)表 (
車輛標(biāo)識(shí) varchar not null,
上傳時(shí)間 bigint not null,
行駛里程 float,
發(fā)動(dòng)機(jī)溫度 float,
車速 float,
發(fā)動(dòng)機(jī)轉(zhuǎn)速 float,
油耗 float,
續(xù)航里程 float,
電量 float,
充電狀態(tài) integer,
衛(wèi)星數(shù)量 integer,
衛(wèi)星信號(hào)強(qiáng)度 integer,
衛(wèi)星信號(hào) integer,
網(wǎng)絡(luò)信號(hào)強(qiáng)度 integer,
經(jīng)度 double,
緯度 double,
方向角度 float,
循環(huán)模式 integer,
風(fēng)扇模式 integer,
省電模式 integer,
開關(guān)門狀態(tài) integer,
發(fā)動(dòng)機(jī)狀態(tài) integer,
鑰匙狀態(tài) integer,
燈光狀態(tài) integer,
門鎖狀態(tài) integer,
網(wǎng)絡(luò)狀態(tài) varchar,
檔位 integer
CONSTRAINT my_pk PRIMARY KEY (車輛標(biāo)識(shí),上傳時(shí)間 ROW_TIMESTAMP))
COMPRESSION=’SNAPPY’,DATA_BLOCK_ENCODING=’FAST_DIFF’,SALT_BUCKETS=20;
3、建立索引表
create index 車輛歷史狀態(tài)索引表 on 車輛歷史狀態(tài)表(車輛標(biāo)識(shí),上傳時(shí)間,行駛里程,車速,電量) include (發(fā)動(dòng)機(jī)溫度,發(fā)送機(jī)轉(zhuǎn)速,油耗,衛(wèi)星數(shù)量,衛(wèi)星信號(hào)強(qiáng)度,……)
車輛狀態(tài)歷史表中目前有記錄12億條左右,Region有52個(gè)基于rowkey查詢
基于索引字段查詢
通過HBase+Phoenix,豐富了我們的歷史查詢手段,原先的車輛1個(gè)月軌跡歷史數(shù)據(jù)回放查詢需要5-10分鐘,現(xiàn)在2秒內(nèi)就能返回所需數(shù)據(jù)。上面的數(shù)據(jù)都是我們實(shí)際的業(yè)務(wù)場(chǎng)景數(shù)據(jù)測(cè)試的結(jié)果,提升了150倍,大大超出我們的期望。
4、集群狀況
目前接入的車輛大約為3萬輛,其中比較重要的考察指標(biāo)就是OPS(operation per second 每秒操作次數(shù)),主要針對(duì)車輛數(shù)據(jù)的實(shí)時(shí)不間斷寫入,目前HBase集群中,平均在1.5K OPS,峰值可以到達(dá)2K OPS,目前的集群配置可以支撐最大約400K的OPS,至少可以滿足未來2年左右的業(yè)務(wù)增長(zhǎng)需要。阿里云HBase同時(shí)支持資源節(jié)點(diǎn)水平,垂直擴(kuò)展和滾動(dòng)重啟,基本可以做到用戶無感知下完成升級(jí),這種能力對(duì)適應(yīng)業(yè)務(wù)的敏捷變化非常有幫助。
3.3 數(shù)據(jù)處理
場(chǎng)景實(shí)例
以網(wǎng)約車管理平臺(tái)為例,主要數(shù)據(jù)來源為車況數(shù)據(jù)和訂單數(shù)據(jù),進(jìn)入Kafka后,拉出兩個(gè)分支,分別存儲(chǔ)進(jìn)HBase數(shù)據(jù)庫(kù)和進(jìn)入Spark Streaming流式計(jì)算引擎,主要用來為運(yùn)營(yíng)部門優(yōu)化網(wǎng)點(diǎn),車輛分流,監(jiān)控部門的風(fēng)控管理和商業(yè)BI相關(guān)的離線分析提供數(shù)據(jù)支撐。
3.4 使用感受
現(xiàn)在車紛享的車聯(lián)網(wǎng)數(shù)據(jù)平臺(tái)已遷入阿里云HBase團(tuán)隊(duì)已經(jīng)半年多了,平均日寫入數(shù)據(jù)幾十G,到現(xiàn)在還沒出現(xiàn)數(shù)據(jù)服務(wù)器的嚴(yán)重故障問題,總體比較穩(wěn)定,大大降低了我司的運(yùn)營(yíng)管理成本。阿里云HBase團(tuán)隊(duì)也給我們的開發(fā)團(tuán)隊(duì)提供了有力的技術(shù)支撐,碰到技術(shù)問題,我們可以非常及時(shí)得到響應(yīng),幫助我們排除了業(yè)務(wù)開發(fā)中的許多問題。再次證明我們的當(dāng)初選擇是正確的。
同時(shí)也希望阿里云HBase團(tuán)隊(duì)未來可以在產(chǎn)品易用性上更上一層樓。展望未來,隨著業(yè)務(wù)的擴(kuò)展,我們的數(shù)據(jù)會(huì)有一個(gè)指數(shù)級(jí)的增長(zhǎng)。
希望新的一年繼續(xù)和阿里云加大合作,同時(shí)將運(yùn)營(yíng)中的問題反饋到阿里云技術(shù)社區(qū),協(xié)助阿里云技術(shù)團(tuán)隊(duì)將數(shù)據(jù)產(chǎn)品做得越來越好。
原文鏈接
干貨好文,請(qǐng)關(guān)注掃描以下二維碼:
總結(jié)
以上是生活随笔為你收集整理的车纷享:基于阿里云HBase构建车联网平台实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里云大数据利器Maxcompute-使
- 下一篇: 深入理解JAVA虚拟机学习笔记(一)JV