本發(fā)明涉及一種基于thrift的大數(shù)據(jù)跨平臺(tái)實(shí)時(shí)處理方法,屬于數(shù)據(jù)處理技術(shù)領(lǐng)域。
背景技術(shù):
隨著汽車(chē)產(chǎn)業(yè)的飛速發(fā)展、車(chē)輛數(shù)量的大幅提升,如何獲取更多車(chē)輛信息、實(shí)現(xiàn)對(duì)車(chē)輛的遠(yuǎn)程控制,成為車(chē)輛生命周期上各個(gè)環(huán)節(jié)機(jī)構(gòu)的首要問(wèn)題。傳統(tǒng)的車(chē)輛管理系統(tǒng)可以做到提供用戶所需的車(chē)輛信息,但由于各級(jí)用戶側(cè)重點(diǎn)不同,導(dǎo)致了其對(duì)車(chē)輛各項(xiàng)數(shù)據(jù)的關(guān)注度有巨大的差異,而從海量數(shù)據(jù)里分離出各自所需的數(shù)據(jù)會(huì)給用戶帶來(lái)了不便,并且由于傳統(tǒng)車(chē)輛管理系統(tǒng)的數(shù)據(jù)儲(chǔ)存機(jī)制,導(dǎo)致數(shù)據(jù)量越來(lái)越龐大,對(duì)車(chē)輛實(shí)時(shí)信息的讀取和歷史數(shù)據(jù)的分析更是難上加難。如何快速查詢(xún)信息、分析歷史數(shù)據(jù)、下發(fā)指令等功能給客戶,是目前亟待解決的問(wèn)題。
目前,工程機(jī)械行業(yè)中對(duì)車(chē)輛信息的管理,一般采用的方式是:車(chē)輛關(guān)系數(shù)據(jù)庫(kù),使用分庫(kù)分表存儲(chǔ);前端應(yīng)用將關(guān)系數(shù)據(jù)庫(kù)中車(chē)輛實(shí)時(shí)數(shù)據(jù)、歷史數(shù)據(jù)展現(xiàn);前端應(yīng)用遠(yuǎn)程下發(fā)指令到終端。這種方式能解決傳統(tǒng)的數(shù)據(jù)處理和數(shù)據(jù)存儲(chǔ)問(wèn)題,但當(dāng)存在海量數(shù)據(jù)需要處理時(shí),計(jì)算機(jī)性能和數(shù)據(jù)存儲(chǔ)上都會(huì)遇到瓶頸,只能通過(guò)提高服務(wù)器配置,購(gòu)買(mǎi)昂貴的硬件設(shè)施等方式來(lái)解燃眉之急,然而也只能暫時(shí)解決問(wèn)題,無(wú)法從根本上解決問(wèn)題;而且當(dāng)前端應(yīng)用編程語(yǔ)言改變,必須重新編寫(xiě)應(yīng)用代碼,開(kāi)發(fā)者的工作量要增加,用戶的體驗(yàn)也不好。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述現(xiàn)有技術(shù)存在的問(wèn)題,本發(fā)明提供一種基于thrift的大數(shù)據(jù)跨平臺(tái)實(shí)時(shí)處理方法,可解決傳統(tǒng)解決方案存在的弊端,并且更靈活更實(shí)用。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用的一種基于thrift的大數(shù)據(jù)跨平臺(tái)實(shí)時(shí)處理方法,包括ssl認(rèn)證模塊、授權(quán)認(rèn)證模塊、實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊、歷史數(shù)據(jù)查詢(xún)模塊以及下發(fā)指令模塊,ssl認(rèn)證模塊用于認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器,并且將數(shù)據(jù)加密以防止數(shù)據(jù)中途被竊取,維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被改變;授權(quán)認(rèn)證模塊用于通過(guò)業(yè)務(wù)邏輯驗(yàn)證訪問(wèn)者是否擁有對(duì)車(chē)輛信息的查詢(xún)及管理權(quán)限,拒絕無(wú)效訪問(wèn)者,避免數(shù)據(jù)信息的泄露;實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊用于將車(chē)輛的實(shí)時(shí)數(shù)據(jù)信息提供給訪問(wèn)者,進(jìn)行高并發(fā)、緩存機(jī)制處理,保證數(shù)據(jù)信息的及時(shí)性;歷史數(shù)據(jù)查詢(xún)模塊用于將存儲(chǔ)的車(chē)輛歷史數(shù)據(jù)提供給訪問(wèn)者,簡(jiǎn)化訪問(wèn)方式,給客戶更高效的使用效率;下發(fā)指令模塊用于將指令準(zhǔn)確的發(fā)送給終端,統(tǒng)一對(duì)終端的命令操作,解決使用者的多個(gè)入口,避免下發(fā)指令的混亂;基于thrift的大數(shù)據(jù)跨平臺(tái)實(shí)時(shí)處理方法的具體步驟如下:
首先,用戶根據(jù)ssl認(rèn)證模塊進(jìn)行數(shù)據(jù)的訪問(wèn),若ssl授權(quán)通過(guò)之后,則進(jìn)行授權(quán)認(rèn)證模塊的認(rèn)證,判斷是否擁有車(chē)輛信息的操作權(quán)限;
其次,若授權(quán)認(rèn)證通過(guò),則可進(jìn)行實(shí)時(shí)數(shù)據(jù)、歷史數(shù)據(jù)或下發(fā)指令的操作;反之,告知用戶不具備訪問(wèn)權(quán)限;
最后,將請(qǐng)求的相應(yīng)結(jié)果返回給用戶,并記錄每一步的操作日志。
所述實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊采用緩存技術(shù)redis與界面進(jìn)行實(shí)時(shí)交互,其中,redis指高性能的“鍵值對(duì)”存儲(chǔ)系統(tǒng)。
所述歷史數(shù)據(jù)查詢(xún)模塊采用了hadoop的hbase技術(shù)進(jìn)行分布式存儲(chǔ)。其中,hbase是分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù)。
與現(xiàn)有技術(shù)相比,本發(fā)明通過(guò)在授權(quán)認(rèn)證中使用ssl認(rèn)證和車(chē)輛授權(quán)驗(yàn)證,保證數(shù)據(jù)傳輸、使用上安全;在車(chē)輛信息查詢(xún)中使用redis數(shù)據(jù)庫(kù),保證數(shù)據(jù)查詢(xún)的及時(shí)性;在車(chē)輛歷史信息分析中使用封裝的方法對(duì)hbase的讀取,簡(jiǎn)化對(duì)hbase數(shù)據(jù)的訪問(wèn);在車(chē)輛遠(yuǎn)程下發(fā)中建立車(chē)輛信息通信通道,保證數(shù)據(jù)傳輸安全,并保存下發(fā)指令歷史。最終,具有如下優(yōu)點(diǎn):
1、通過(guò)授權(quán)認(rèn)證,使應(yīng)用層與平臺(tái)層之間的數(shù)據(jù)交換既安全又簡(jiǎn)捷;
2、表達(dá)相同的內(nèi)容所需的數(shù)據(jù)包比xml和json小,傳輸所占用的服務(wù)器資源更少;
3、技術(shù)成熟,性能良好,具備高并發(fā)的數(shù)據(jù)訪問(wèn)與處理能力;
4、跨平臺(tái),支持多語(yǔ)言客戶端的應(yīng)用;
5、數(shù)據(jù)存儲(chǔ)采用redis緩存數(shù)據(jù)庫(kù),提供數(shù)據(jù)訪問(wèn)速度。
附圖說(shuō)明
圖1為本發(fā)明的原理示意圖;
圖2為本發(fā)明的流程示意圖;
圖3為本發(fā)明的程序部署示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
thrift主要用于各個(gè)服務(wù)之間的rpc通信,支持跨語(yǔ)言,常用的語(yǔ)言比如c++,java,python,php,ruby,erlang,perl,haskell,c#,cocoa,javascript,node.js,smalltalk,andocaml都支持。thrift是一個(gè)典型的cs(客戶端/服務(wù)端)結(jié)構(gòu),客戶端和服務(wù)端可以使用不同的語(yǔ)言開(kāi)發(fā)。既然客戶端和服務(wù)端能使用不同的語(yǔ)言開(kāi)發(fā),那么一定就要有一種中間語(yǔ)言來(lái)關(guān)聯(lián)客戶端和服務(wù)端的語(yǔ)言,這種語(yǔ)言就是idl(interfacedescriptionlanguage)。thriftidl支持的數(shù)據(jù)類(lèi)型包括:基本類(lèi)型、容器類(lèi)型、結(jié)構(gòu)體、枚舉、異常、服務(wù)、類(lèi)型定義、常量、命名空間、文件包含等。知道了怎么定義thrift文件,接下來(lái)就是此方法的具體實(shí)施步驟,如圖3所示:
1、編寫(xiě)thrift文件,定義ssl認(rèn)證模塊、授權(quán)認(rèn)證模塊、實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊、歷史數(shù)據(jù)查詢(xún)模塊和下發(fā)指令模塊,此方法的目標(biāo)語(yǔ)言為java,所以在終端執(zhí)行命令:“thrift--genjavatest.thrift”,則在當(dāng)前目錄會(huì)生成一個(gè)gen-java目錄,該目錄下會(huì)按照命名空間定義的路徑名一層層生成文件夾,這樣就完成了支持java語(yǔ)言的基本的框架代碼,這些代碼是包含了模塊的接口。
2、建立服務(wù)端項(xiàng)目,創(chuàng)建模塊接口的實(shí)現(xiàn)類(lèi),實(shí)現(xiàn)具體的邏輯。
3、在服務(wù)端項(xiàng)目中創(chuàng)建啟動(dòng)類(lèi),并將hbase配置文件、redis配置文件、數(shù)據(jù)庫(kù)配置文件、私鑰文件等加入代碼中,編譯項(xiàng)目后將程序放到服務(wù)器上并啟動(dòng)服務(wù),至此服務(wù)端已經(jīng)完成。
4、建立客戶端項(xiàng)目,創(chuàng)建訪問(wèn)類(lèi),加載配置文件和公鑰文件,通過(guò)ssl認(rèn)證與服務(wù)端的連接。
5、認(rèn)證通過(guò)之后進(jìn)入授權(quán)認(rèn)證模塊,驗(yàn)證通過(guò)后可以訪問(wèn)實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊、歷史數(shù)據(jù)查詢(xún)模塊以及下發(fā)指令模塊,得到服務(wù)端返回的結(jié)果。每一步操作都記錄到日志中,最后將與服務(wù)端的連接關(guān)閉。
如圖1和圖2所示,一種基于thrift的大數(shù)據(jù)跨平臺(tái)實(shí)時(shí)處理方法,包括ssl認(rèn)證模塊、授權(quán)認(rèn)證模塊、實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊、歷史數(shù)據(jù)查詢(xún)模塊以及下發(fā)指令模塊,ssl認(rèn)證模塊用于認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器,并且將數(shù)據(jù)加密以防止數(shù)據(jù)中途被竊取,維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被改變;授權(quán)認(rèn)證模塊用于通過(guò)業(yè)務(wù)邏輯驗(yàn)證訪問(wèn)者是否擁有對(duì)車(chē)輛信息的查詢(xún)及管理權(quán)限,拒絕無(wú)效訪問(wèn)者,避免數(shù)據(jù)信息的泄露;實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊用于將車(chē)輛的實(shí)時(shí)數(shù)據(jù)信息提供給訪問(wèn)者,進(jìn)行高并發(fā)、緩存機(jī)制處理,保證數(shù)據(jù)信息的及時(shí)性;歷史數(shù)據(jù)查詢(xún)模塊用于將存儲(chǔ)的車(chē)輛歷史數(shù)據(jù)提供給訪問(wèn)者,簡(jiǎn)化訪問(wèn)方式,給客戶更高效的使用效率;下發(fā)指令模塊用于將指令準(zhǔn)確的發(fā)送給終端,統(tǒng)一對(duì)終端的命令操作,解決使用者的多個(gè)入口,避免下發(fā)指令的混亂;基于thrift的大數(shù)據(jù)跨平臺(tái)實(shí)時(shí)處理方法的具體步驟如下:
首先,用戶根據(jù)ssl認(rèn)證模塊進(jìn)行數(shù)據(jù)的訪問(wèn),若ssl授權(quán)通過(guò)之后,則進(jìn)行授權(quán)認(rèn)證模塊的認(rèn)證,判斷是否擁有車(chē)輛信息的操作權(quán)限;
其次,若授權(quán)認(rèn)證通過(guò),則可進(jìn)行實(shí)時(shí)數(shù)據(jù)、歷史數(shù)據(jù)或下發(fā)指令的操作;反之,告知用戶不具備訪問(wèn)權(quán)限;
最后,將請(qǐng)求的相應(yīng)結(jié)果返回給用戶,并記錄每一步的操作日志。
所述實(shí)時(shí)數(shù)據(jù)查詢(xún)模塊采用緩存技術(shù)redis與界面進(jìn)行實(shí)時(shí)交互,其中,redis指高性能的“鍵值對(duì)”存儲(chǔ)系統(tǒng)。
所述歷史數(shù)據(jù)查詢(xún)模塊采用了hadoop的hbase技術(shù)進(jìn)行分布式存儲(chǔ)。其中,hbase是分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù)。
綜上所述,本發(fā)明在工程機(jī)械行業(yè)中使用了大數(shù)據(jù)技術(shù),其中thrift作為目前最火的遠(yuǎn)程服務(wù)調(diào)用框架,在車(chē)輛信息管理中承擔(dān)著重要角色,因其夸平臺(tái)、高性能、高并發(fā)等特性能快速準(zhǔn)確處理數(shù)據(jù)。另一方面,實(shí)時(shí)數(shù)據(jù)存儲(chǔ)采用緩存技術(shù)redis進(jìn)行與界面進(jìn)行實(shí)時(shí)交互,大大提升了數(shù)據(jù)讀取性能,歷史數(shù)據(jù)采用了hadoop的hbase技術(shù)進(jìn)行分布式存儲(chǔ)。同時(shí),在數(shù)據(jù)安全方面,采用ssl技術(shù)和授權(quán)驗(yàn)證技術(shù),保證數(shù)據(jù)安全、及時(shí)的提供給客戶,正確的指導(dǎo)生產(chǎn)工作。具備如下優(yōu)點(diǎn):
1、通過(guò)授權(quán)認(rèn)證,使應(yīng)用層與平臺(tái)層之間的數(shù)據(jù)交換既安全又簡(jiǎn)捷;
2、表達(dá)相同的內(nèi)容所需的數(shù)據(jù)包比xml和json小,傳輸所占用的服務(wù)器資源更少;
3、技術(shù)成熟,性能良好,具備高并發(fā)的數(shù)據(jù)訪問(wèn)與處理能力;
4、跨平臺(tái),支持多語(yǔ)言客戶端的應(yīng)用;
5、數(shù)據(jù)存儲(chǔ)采用redis緩存數(shù)據(jù)庫(kù),提供數(shù)據(jù)訪問(wèn)速度。