□ 文/向庭勇 梁俊 向庭波
LZ市公安局卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺于2013年建成并投入使用,該平臺系統(tǒng)由我公司和LZ市公安局合作設計開發(fā),在全國首次將云計算技術(shù)運用于卡口系統(tǒng)聯(lián)網(wǎng)中。系統(tǒng)的主要功能:實現(xiàn)了市局以及各縣局各自建設的不同廠家、不同品牌型號、不同結(jié)構(gòu)的卡口系統(tǒng)的聯(lián)網(wǎng),并在此基礎(chǔ)上實現(xiàn)卡口系統(tǒng)的數(shù)據(jù)整合。平臺自建成投入使用后,各項指標達到設計要求,有效的解決了全局市區(qū)及各縣卡口系統(tǒng)的聯(lián)網(wǎng)整合問題,目前該系統(tǒng)運行正常穩(wěn)定,在公安治安、刑偵、交通、情報等各項業(yè)務信息化工作中發(fā)揮了重要的作用。
隨著公安業(yè)務的發(fā)展,對該LZ市公安局卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺的數(shù)據(jù)存儲和數(shù)據(jù)服務、運算速度、平臺穩(wěn)定性等提出了新的應用需求。為解決上述問題,需要解決如何基于HBase構(gòu)建卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺數(shù)據(jù)庫。本方案從卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺的業(yè)務和數(shù)據(jù)特征開始,根據(jù)項目需求、對平臺新增分布式數(shù)據(jù)庫進行了概要設計和各模塊的詳細設計。
目前HBase已經(jīng)在互聯(lián)網(wǎng)行業(yè)大規(guī)模應用,公安卡口系統(tǒng)聯(lián)網(wǎng)的數(shù)據(jù)每天都是TB級別的,同時對數(shù)據(jù)分析和行為分析的需求也很迫切,而且還常包含部分對隨機讀寫效率(低延遲)要求比較高的應用,因此HBase作為一個能提供在海量數(shù)據(jù)前提下讀寫效率穩(wěn)定的數(shù)據(jù)庫,成為卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺最恰當?shù)倪x擇。
卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺的特性如下:
● 百萬海量的卡口抓拍圖片、過車信息資源;
● 每時每刻都有過車信息更新;
● 快速查詢卡口的信息,8秒內(nèi)響應用戶的查詢;
● 支持圖片下載,下載迅速、便利;
● 海量數(shù)據(jù)庫支持(百萬量級),過車圖片數(shù)據(jù)同步顯示;
● 資源組織形式靈活多樣,能提供不同用戶的查詢使用需求;
● 搜索便捷,支持文字圖片搜索。
● 軟件小巧,易操作;
● 能支撐pc和移動端應用操作。
由上訴卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺的業(yè)務特性,應用特點決定了數(shù)據(jù)特性,其特性如下:
● 過車數(shù)據(jù):包含卡口過車時的過車信息及圖片。過車數(shù)據(jù)包含很多種類信息,主要種類如下:
● 過車時間:車輛通過時間;
● 車道編號:圖像拍攝的車道信息;
● 車道方向名稱:圖像拍攝的車道方向;
● 車輛號牌:所拍攝的車輛的車牌號;
● 號牌顏色:所拍攝的車輛的車牌顏色;
● 車輛速度:所拍攝的車輛的速度;
● 車輛限速:車輛的限速設定;
● 車牌類型:所拍攝的車輛的車牌類型;
● 車輛類型:所拍攝的車輛的類型;
● 車身顏色:所拍攝的車輛的車身顏色;
● 違法類型:所拍攝的車輛的違法類型;
● 正常過車圖片:所拍攝的正常過車圖片;
● 違法過車圖片:所拍攝的違法的車輛圖片;
● 卡口屬性信息:主要指卡口的位置信息及卡口所用設備屬性信息;
● 設備信息:設備所屬廠家、型號、品牌等,還有設備是否在線等設備狀態(tài)信息;
隨著LZ市公安局各業(yè)務工作信息化的發(fā)展,各警種應用對海量卡口信息服務的需求越來越大,建立卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺數(shù)據(jù)庫及后臺查詢系統(tǒng),將為卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺提供最基本的數(shù)據(jù)積累,也為以后對這些數(shù)據(jù)進行深度挖掘、分析,給各警種應用提供更好的海量卡口信息服務。
● 提供海量數(shù)據(jù)搜索支持,能保存半年卡口數(shù)據(jù)的存儲容量;
● 優(yōu)化推薦算法;
● 提供實時計算底層支持:實時計算分業(yè)務方向和數(shù)據(jù)分析方向;
● 支持某些具有特殊需求的項目;
● 卡口數(shù)據(jù)多維度的分析,為各領(lǐng)導提供更準確的決策支持;
● 為數(shù)據(jù)產(chǎn)品提供底層支持,直接服務各警種的警務人員;
需求應該包含范圍和邊界的描述,需求范圍是產(chǎn)品或項目的內(nèi)部,邊界是內(nèi)部和外部的交界。
收集所有卡口信息相關(guān)的紀錄,包含行政區(qū)劃代碼、卡口編號、卡口經(jīng)度、卡口緯度、卡口類型、工作模式、測速模式、車道名稱、車道編號、車道方向名稱、大車限速值、小車限速值、設備名稱、設備編號、設備車道編號。
該部分信息用于精分卡口,利用各種屬性信息將卡口進行多維度歸類。
主要是記錄所有卡口設備的工作狀況。
收集所有卡口的過車記錄,包含卡口編號、卡口設備編號、過車數(shù)據(jù)編號、過車時間、車道編號、車道方向名稱、車輛號牌、號牌顏色、車輛速度、車輛限速、車牌類型、車輛類型、車身顏色、違法類型、正常過車圖片、違法過車圖片等信息。
支持查詢組合維度下的數(shù)據(jù)查詢、統(tǒng)計和展示。
支持交警系統(tǒng)的實時查詢,并且為這些項目提供API支持。
構(gòu)建卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺數(shù)據(jù)庫旨在為相關(guān)警種提供卡口屬性,及相關(guān)的卡口過車信息的唯一平臺,提供便捷API和界面查詢,保證海量數(shù)據(jù)下的查詢和插入性能在一定的水平范圍,保證高并發(fā)范圍性能在一定水平范圍。
系統(tǒng)包含HBase存儲集群、后臺管理系統(tǒng)、批量加載、二級索引等模塊,不包含SQL引擎層、事務性索引、HBase性能優(yōu)化等。
系統(tǒng)不包括服務運營、前端開發(fā)、運維等人員。
● 行政區(qū)劃代碼:用于區(qū)分不同的行政區(qū)域,確定卡口位置所屬的市縣;
● 卡口編號:填寫卡口信息時,卡口唯一的編號;
● 卡口經(jīng)度:卡口的地理位置,經(jīng)度;
● 卡口緯度:卡口的地理位置,緯度;
● 卡口類型:確定卡口的類型,是車輛卡口還是治安卡口;
● 工作模式 :記錄卡口的工作模式
● 測速模式:記錄卡口的測速模式,是視頻測速、線圈測速、雷達測速;
● 車道名稱:記錄卡口設備所監(jiān)控的車道的名稱;
● 車道編號:記錄卡口設備所監(jiān)控的車道的名稱對應的系統(tǒng)編號;
● 車道方向名稱:記錄卡口設備所監(jiān)控的車道方向,如入城方向,由東向西等;
● 大車限速值:確定卡口位置大車的限速值;
● 小車限速值:確定卡口位置小車的限速值;
● 設備名稱:記錄卡口監(jiān)控設備的型號,廠家名稱;
● 設備編號:記錄卡口所用設備的設備編號;
● 設備車道編號:記錄卡口監(jiān)控設備所監(jiān)控的車道編號,同一卡口可能有不同廠家的卡口設備監(jiān)控不同的車道或不同的車道方向。
● 設備編號:記錄卡口所用設備的設備編號,在整個卡口聯(lián)網(wǎng)平臺中是唯一的;
● 設備狀態(tài):記錄卡口設備的使用狀態(tài),是0-正常,1-故障,2-報廢,3-停用,同時對應記錄的時間,定時更新;
● 記錄時間:設備狀態(tài)記錄生成時的時間,定時更新;
● 卡口編號:填寫卡口信息時,卡口唯一的編號;
● 卡口設備編號:記錄卡口所用設備的設備編號;
● 過車時間:記錄卡口監(jiān)控設備拍攝過車畫面時的時間;
● 車道編號:記錄卡口設備所監(jiān)控的車道的名稱對應的系統(tǒng)編號;
● 車道方向名稱:記錄卡口設備所監(jiān)控的車道方向,如入城方向,由東向西等;
● 車輛號牌:記錄卡口監(jiān)控設備拍攝過車的車牌號;
● 號牌顏色:記錄卡口監(jiān)控設備拍攝過車的車牌號顏色;
● 車輛速度:記錄卡口監(jiān)控設備拍攝過車的車輛速度;
● 車輛限速:確定卡口位置車輛的限速值;
● 車牌類型:記錄卡口監(jiān)控設備拍攝過車的車牌的類型;
● 車輛類型:記錄卡口監(jiān)控設備拍攝過車的車輛類型;
● 車身顏色:記錄卡口監(jiān)控設備拍攝過車的車輛車身顏色;
● 違法類型:記錄卡口監(jiān)控設備拍攝過車的違法類型;
● 正常過車圖片:記錄卡口監(jiān)控設備拍攝過車正常行駛時的圖片;
● 違法過車圖片:記錄卡口監(jiān)控設備拍攝過車違章行駛時的圖片;
后臺查詢系統(tǒng)主要用于驗證數(shù)據(jù)準確性,人工維護數(shù)據(jù)和支持開發(fā)測試。主要有查詢卡口信息,查詢卡口設備狀態(tài)信息,查詢卡口過車數(shù)據(jù)信息。
存儲能力
為億級的過車信息建立過車信息庫,存儲過車數(shù)據(jù)信息,后續(xù)可支持5億數(shù)據(jù)量級的信息存儲。能存儲千萬量級的卡口設備及設備狀態(tài)信息庫。
運算和查詢能力
支持前端業(yè)務至少每秒500量級的實時查詢請求,支持每秒10000的寫入效率,支持遍歷查詢,遍歷全表在3小時以內(nèi)。
統(tǒng)計能力
提供后臺,支持查詢組合維度下的統(tǒng)計數(shù)據(jù),查詢到結(jié)果展現(xiàn)速度不超過8秒。
擴展型
數(shù)據(jù)存儲和計算能夠?qū)崿F(xiàn)可擴展,能夠易于通過擴展性解決性能瓶頸問題;后臺管理系統(tǒng)實現(xiàn)可擴展,為以后評估數(shù)據(jù)挖掘算法、實時修改不同警種的業(yè)務查詢做準備;提供統(tǒng)一接口,支持前端各業(yè)務的數(shù)據(jù)需求。
卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺數(shù)據(jù)庫系統(tǒng)可分為以下四個大部分:
數(shù)據(jù)層:底層數(shù)據(jù),包含各卡口設備及卡口服務器產(chǎn)生的各種設備信息、卡口過車數(shù)據(jù)等信息;
數(shù)據(jù)處理層:對數(shù)據(jù)層進行數(shù)據(jù)預處理、批量加載、增量更新等操作;
數(shù)據(jù)存儲層:HBase核心層,存放處理過的結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù),如卡口過車圖片、車牌號,車輛顏色等信息;
數(shù)據(jù)應用層:后臺查詢系統(tǒng),其他服務采用外部API。
系統(tǒng)整體架構(gòu)如圖所示:
不同的表對于主鍵的定義格式不同,表3 過車數(shù)據(jù) sendvehicleinfo使用<pointid><deviceid><Long.MAX_VALUE-System.currentTimeMillis()>作為Rowkey,該Rowkey共由三個部分組成:pointid、deviceid、Long.MAX_VALUE-System.currentTimeMillis(),其中Long.MAX_VALUE-System.currentTimeMillis()是為了使得過車數(shù)據(jù)的最新記錄能夠按照時間順序排列。
所有表中,最多存在2個列族,因為單個列族在flush的時候,它鄰近列族也會觸發(fā)flush,最終導致系統(tǒng)產(chǎn)生很多i/o,如果列族過多對HBase的集群性能影響很大。
考慮系統(tǒng)運行后應用追求低停頓的特性,可考慮創(chuàng)建一兩個擴展列族可有效解決線上添加列族的需求。
BLOOMFILTER屬性(布隆過濾)可以每列族單獨啟用,ROW行鍵的哈希在每次插入行時將被添加到布??;
COMPRESSION屬性(壓縮)采用LZO模式;
根據(jù)項目背景和概要設計中的描述,將業(yè)務需求抽象為如下的表:
表1建表語句如下:
create ‘pointinfo’, { NAME => ‘a(chǎn)ttr’ ,COMPRESSION=> ‘LZO’ , BLOOMFILTER => ‘ ROW’ } , { NAME =>‘device’ ,COMPRESSION => ‘LZO’ , BLOOMFILTER =>‘ ROW’ }
表1 卡口信息 pointinfo
表2建表語句如下:
create ‘devicestatus’ , { NAME => ‘statusattr’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
表2 設備狀態(tài) devicestatus
表3建表語句如下:
create ‘sendvehicleinfo’ , { NAME => ‘info’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
表3 過車數(shù)據(jù) sendvehicleinf
為提高查詢的響應速度,可按行政區(qū)域細分過車數(shù)據(jù)表,把過車數(shù)據(jù)表分為六個表,建表語句如下:
create ‘ luzhai_sendvehicleinfo’ , { NAME => ‘info’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
create ‘liucheng_sendvehicleinfo’ , { NAME => ‘info’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
create ‘liujiang_sendvehicleinfo’ , { NAME => ‘info’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
create ‘rongan_sendvehicleinfo’ , { NAME => ‘info’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
create ‘rongshui_sendvehicleinfo’ , { NAME => ‘info’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
create ‘sanjiang_sendvehicleinfo’ , { NAME => ‘info’,COMPRESSION => ‘LZO’ , BLOOMFILTER => ‘ ROW’ }
為卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺設計的數(shù)據(jù)庫采用了HBase技術(shù),去掉了關(guān)系型數(shù)據(jù)庫的關(guān)系特性,若數(shù)據(jù)之間是弱關(guān)系,則非常容易擴展,非常容易實現(xiàn)支撐數(shù)據(jù)從TB到PB級別的過度。
HBase的表單可以有百億行、百萬列,數(shù)據(jù)矩陣橫向和縱向兩個維度所支持的數(shù)據(jù)量級都非常具有彈性。如采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,如Oracle和MySQL等,如果數(shù)據(jù)記錄在億級別,查詢和寫入的性能都會呈指數(shù)級下降,使用HBase可以大幅縮短億級數(shù)據(jù)的查詢響應時間。
所設計的數(shù)據(jù)庫具有非常良好的讀寫性能,尤其在大數(shù)據(jù)量下,同樣表現(xiàn)優(yōu)秀。這得益于它的弱關(guān)系性,數(shù)據(jù)庫的結(jié)構(gòu)簡單。HBase的Cache 是記錄級的,是一種細粒度的Cache,所以HBase 在這個層面上來說性能要高很多。Region切分、主鍵索引和緩存機制使得HBase在海量數(shù)據(jù)下具備一定的隨機讀取性能,該性能對Rowkey的查詢能夠達到毫秒級別。
所設計的數(shù)據(jù)庫無須事先為要存儲的數(shù)據(jù)建立字段,隨時可以存儲自定義的數(shù)據(jù)格式。而在關(guān)系型數(shù)據(jù)庫中,增刪字段是一件非常麻煩的事情。對于數(shù)據(jù)量非常大的表,增加字段簡直就是一場噩夢。HBase允許使用者隨時隨地的添加字段,并且字段類型可以是任意格式。
在大多數(shù)情況下,采用傳統(tǒng)行式存儲的數(shù)據(jù)往往是稀疏的,即存在大量為空的列(null),而這些列都是占用存儲空間的,造成存儲空間的浪費。對于HBase來說為空的列并不占用存儲空間,表可以設計得非常稀疏。
HBase提供WAL和Replication機制。前者保證了數(shù)據(jù)寫入時不會因集群異常而導致寫入數(shù)據(jù)的丟失;后者保證了在集群出現(xiàn)嚴重問題時,數(shù)據(jù)不會發(fā)生丟失或損壞。而且HBase底層使用HDFS,HDFS本身的副本機制很大程度上保證了HBase的高可靠性。同時,協(xié)調(diào)服務的ZooKeeper組件是經(jīng)過工業(yè)驗證的,具備高可用性和高可靠性。
為卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺設計的HBase數(shù)據(jù)庫能滿足各警種應用對卡口數(shù)據(jù)查詢等提出的需求,一方面提升平臺的能力;另一方面將大數(shù)據(jù)技術(shù)(Hadoop技術(shù))應用于該平臺系統(tǒng)中,充分發(fā)揮云計算系統(tǒng)的潛力,為LZ公安局的卡口查詢系統(tǒng)、情報系統(tǒng)、交警的緝查布控系統(tǒng)等應用提供六縣卡口的大數(shù)據(jù)快速查詢服務。為卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺設計的HBase數(shù)據(jù)庫滿足卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺的如下需求:
1、對現(xiàn)有平臺進行擴充,使數(shù)據(jù)保存能力從十天延長到三個月或者半年;
2、在現(xiàn)有平臺基礎(chǔ)上,使計算能力在現(xiàn)有基礎(chǔ)上提高一倍以上;
3、增加一套基于云計算技術(shù)的數(shù)據(jù)庫及相關(guān)大數(shù)據(jù)工具軟件,整合各卡口系統(tǒng)數(shù)據(jù),并在此基礎(chǔ)上由該聯(lián)網(wǎng)平臺提供統(tǒng)一數(shù)據(jù)查詢、檢索等應用服務,各廠商系統(tǒng)僅與聯(lián)網(wǎng)平臺對接。
4、數(shù)據(jù)檢索、查詢響應時間小于8秒
并且從系統(tǒng)安全、可靠性、計算速度、容量,可擴充性等諸多方面給予全面的考慮:
1、卡口系統(tǒng)云計算聯(lián)網(wǎng)平臺建設應根據(jù)實際情況分步實施,且考慮一定的先進性;
2、平臺應具備高可靠性,可用性較強,具備較完備的故障恢復能力;
3、提高可管理性,降低運維難度,提高運維效率。