本發(fā)明涉及網(wǎng)絡(luò)通信和并行計(jì)算領(lǐng)域,具體而言,是面向物聯(lián)網(wǎng)消息服務(wù)的數(shù)據(jù)網(wǎng)關(guān)服務(wù)和數(shù)據(jù)隊(duì)列服務(wù)。
背景技術(shù):
物聯(lián)網(wǎng)技術(shù)的不斷提高,諸多業(yè)務(wù)領(lǐng)域產(chǎn)生海量、實(shí)時(shí)的數(shù)據(jù),而不同領(lǐng)域?qū)?shù)據(jù)處理又各有需求。當(dāng)前物聯(lián)網(wǎng)數(shù)據(jù)逐漸以連續(xù)、實(shí)時(shí)的流數(shù)據(jù)為主,大規(guī)模、多元、異構(gòu)的數(shù)據(jù)的分析利用,是以數(shù)據(jù)能夠被接入為前提,于是面向物聯(lián)網(wǎng)大數(shù)據(jù)的播發(fā)技術(shù)成為技術(shù)趨勢(shì),而較高技術(shù)性能指標(biāo)也成為系統(tǒng)實(shí)現(xiàn)的挑戰(zhàn)。
業(yè)務(wù)領(lǐng)域中的傳感器數(shù)量呈指數(shù)形態(tài)增長(zhǎng),業(yè)務(wù)需求的變化使得新類型的數(shù)據(jù)不斷被引入,使得接入物聯(lián)網(wǎng)數(shù)據(jù)難度越來(lái)越大,不僅管理海量的數(shù)據(jù)連接存在困難,而且在數(shù)據(jù)向下游業(yè)務(wù)系統(tǒng)傳遞的過(guò)程,需要耗費(fèi)管理者大量精力維護(hù)。例如,智能交通領(lǐng)域內(nèi)的車牌識(shí)別攝像頭采集海量的車牌識(shí)別數(shù)據(jù),手機(jī)或車載終端采集的GPS數(shù)據(jù),傳統(tǒng)上都需要專用的數(shù)據(jù)采集系統(tǒng),隨著傳感設(shè)備數(shù)量的增長(zhǎng)大大增加了管理的難度?,F(xiàn)有技術(shù)中公開(kāi)了一些消息服務(wù)系統(tǒng),但尚未出現(xiàn)支持萬(wàn)級(jí)并發(fā)連接、高吞量、支持異構(gòu)數(shù)據(jù)快速接入的消息服務(wù)系統(tǒng)。如申請(qǐng)?zhí)枮镃N 201410445282.6的專利文獻(xiàn)《位置增強(qiáng)數(shù)據(jù)播發(fā)服務(wù)系統(tǒng)及方法》;申請(qǐng)?zhí)枮镃N 201210461231.3的專利文獻(xiàn)《車聯(lián)網(wǎng)中的數(shù)據(jù)播發(fā)控制和數(shù)據(jù)播發(fā)方法及設(shè)備》;申請(qǐng)?zhí)枮镃N 200410018172.8的專利文獻(xiàn)《一種提高數(shù)據(jù)流播發(fā)效率的方法》等。分析其中的技術(shù)細(xì)節(jié)可知,其對(duì)物聯(lián)網(wǎng)大消息服務(wù)系統(tǒng)并不完善,主要體現(xiàn)在以下幾個(gè)方面:
第一方面:當(dāng)前工作大多是集中式系統(tǒng),面對(duì)物聯(lián)網(wǎng)中海量傳感器快速大規(guī)模數(shù)據(jù)傳輸,缺乏技術(shù)能力方面的支持。當(dāng)前工作都是在單臺(tái)服務(wù)器上搭建系統(tǒng),而單機(jī)能力的局限無(wú)法應(yīng)對(duì)海量終端的連接和數(shù)據(jù)傳輸請(qǐng)求,無(wú)法匹配高速、高吞量的性能需求。
第二方面:當(dāng)前工作面向特定協(xié)議,缺乏靈活的編程模式和接口,難以適應(yīng)多樣的自定義協(xié)議。當(dāng)前物聯(lián)網(wǎng)環(huán)境存在多樣的傳輸協(xié)議、多樣的數(shù)據(jù)類型,而特定協(xié)議限定了數(shù)據(jù)傳輸方式、數(shù)據(jù)結(jié)構(gòu)和編程接口,故當(dāng)前的系統(tǒng)很難無(wú)縫應(yīng)用至其它場(chǎng)景的消息服務(wù)。
第三方面:當(dāng)前工作對(duì)大規(guī)模播發(fā)數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)支持不足。作為播發(fā)系統(tǒng),數(shù)據(jù)的暫存是必須的,而當(dāng)前工作大多部署在單機(jī)環(huán)境,數(shù)據(jù)存儲(chǔ)在確定的單臺(tái)機(jī)器上,可用性存在單點(diǎn)瓶頸,無(wú)法適應(yīng)系統(tǒng)長(zhǎng)時(shí)間不停機(jī)運(yùn)行的場(chǎng)景,而且單機(jī)的輸入輸出瓶頸制約了系統(tǒng)整體的吞吐量。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了解決當(dāng)前播發(fā)系統(tǒng)無(wú)法支持海量終端、多樣協(xié)議和海量數(shù)據(jù)通信的問(wèn)題,提供物聯(lián)網(wǎng)環(huán)境下支持高吞量的分布式播發(fā)服務(wù)的系統(tǒng)。為達(dá)到上述目的,本發(fā)明具體提供了如下技術(shù)方案:
一種物聯(lián)網(wǎng)消息服務(wù)系統(tǒng),所述系統(tǒng)包括:
網(wǎng)關(guān)服務(wù)模塊,用于維護(hù)和保障系統(tǒng)與終端的連接;
隊(duì)列服務(wù)模塊,用于數(shù)據(jù)的緩存和持久化,以及數(shù)據(jù)的預(yù)處理;
配置服務(wù)模塊,用于配置和編輯自定義協(xié)議、配置和定義數(shù)據(jù)結(jié)構(gòu),以及維護(hù)配置文件。
優(yōu)選地,所述網(wǎng)關(guān)服務(wù)模塊還用于接受終端的連接請(qǐng)求,并管理異步連接通道,在分布式系統(tǒng)間實(shí)現(xiàn)負(fù)載均衡,管理線程池,并保障連接的可用性。
優(yōu)選地,所述隊(duì)列服務(wù)模塊還用于對(duì)數(shù)據(jù)收發(fā)雙方的身份進(jìn)行認(rèn)證。
優(yōu)選地,所述網(wǎng)關(guān)服務(wù)模塊管理異步連接通道,包括感知系統(tǒng)所在的操作系統(tǒng)類型,并基于所述操作系統(tǒng)類型調(diào)用對(duì)應(yīng)的庫(kù)函數(shù)實(shí)現(xiàn)異步通道。
優(yōu)選地,所述網(wǎng)關(guān)服務(wù)模塊管理線程池,具體包括:
(1)主線程池,包含可配置數(shù)量的監(jiān)聽(tīng)線程,調(diào)度其中線程響應(yīng)終端與系統(tǒng)的連接請(qǐng)求,當(dāng)請(qǐng)求被響應(yīng),連接將被調(diào)度至從線程池;
(2)從線程池,包含可配置數(shù)量的工作線程,調(diào)度其中線程建立終端與系統(tǒng)的連接,當(dāng)請(qǐng)求被接受,連接狀態(tài)由確定的線程維護(hù)。
優(yōu)選地,所述保障連接的可用性具體包括:通過(guò)監(jiān)聽(tīng)心跳機(jī)制獲取連接狀態(tài),并在發(fā)現(xiàn)連接斷開(kāi)時(shí)進(jìn)行重連。
優(yōu)選地,所述隊(duì)列服務(wù)模塊還用于維護(hù)隊(duì)列,在內(nèi)存中創(chuàng)建數(shù)據(jù)隊(duì)列、在指定數(shù)據(jù)隊(duì)列中追加數(shù)據(jù)和刪除數(shù)據(jù)隊(duì)列。
優(yōu)選地,所述數(shù)據(jù)的持久化包括,將隊(duì)列數(shù)據(jù)定時(shí)持久化至分布式的磁盤,并通過(guò)同步的副本,保障數(shù)據(jù)的可用性。
優(yōu)選地,所述數(shù)據(jù)的預(yù)處理包括:
(1)通過(guò)接口在數(shù)據(jù)寫入隊(duì)列前,進(jìn)行數(shù)據(jù)處理;
(2)通過(guò)接口在數(shù)據(jù)從隊(duì)列讀取時(shí),進(jìn)行數(shù)據(jù)處理。
優(yōu)選地,所述系統(tǒng)為分布式設(shè)置,分別步數(shù)在多個(gè)節(jié)點(diǎn)上,所述系統(tǒng)通過(guò)所述配置文件,獲知所有的節(jié)點(diǎn);所述節(jié)點(diǎn)之間通過(guò)所述網(wǎng)關(guān)服務(wù)模塊實(shí)現(xiàn)負(fù)載均衡。
優(yōu)選地,所述系統(tǒng)建立連接的終端為攝像頭,所述攝像頭具備車牌識(shí)別功能。
當(dāng)然,該終端還可以是傳感器、手機(jī)設(shè)備、車載GPS設(shè)備等。
與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案,通過(guò)分布式技術(shù),解決了物聯(lián)網(wǎng)環(huán)境中海量傳感器消息服務(wù)的性能不足;通過(guò)靈活的編程模式和接口適應(yīng)多樣的協(xié)議,適應(yīng)多種場(chǎng)景下的消息服務(wù);通過(guò)數(shù)據(jù)分片和副本,改善大規(guī)模播發(fā)數(shù)據(jù)時(shí)的可用性和吞吐量,可實(shí)現(xiàn)系統(tǒng)長(zhǎng)時(shí)間不停機(jī)運(yùn)行。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它的附圖。
圖1為本發(fā)明實(shí)施例的系統(tǒng)架構(gòu)圖;
圖2為本發(fā)明實(shí)施例的異步通信時(shí)序圖;
圖3為本發(fā)明實(shí)施例的線程模型;
圖4為本發(fā)明實(shí)施例的系統(tǒng)部署圖;
圖5為使用本發(fā)明實(shí)施例實(shí)現(xiàn)的智能交通領(lǐng)域車牌識(shí)別數(shù)據(jù)傳輸流程圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)行詳細(xì)描述。應(yīng)當(dāng)明確,所描述的實(shí)施例僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,下述具體實(shí)施例或具體實(shí)施方式,是本發(fā)明為進(jìn)一步解釋具體的發(fā)明內(nèi)容而列舉的一系列優(yōu)化的設(shè)置方式,而該些設(shè)置方式之間均是可以相互結(jié)合或者相互關(guān)聯(lián)使用的,除非在本發(fā)明明確提出了其中某些或某一具體實(shí)施例或?qū)嵤┓绞綗o(wú)法與其他的實(shí)施例或?qū)嵤┓绞竭M(jìn)行關(guān)聯(lián)設(shè)置或共同使用。同時(shí),下述的具體實(shí)施例或?qū)嵤┓绞絻H作為最優(yōu)化的設(shè)置方式,而不作為限定本發(fā)明的保護(hù)范圍的理解。
實(shí)施例1:
在一個(gè)具體的實(shí)施例中,本發(fā)明提供的系統(tǒng)可以設(shè)置三個(gè)部分,結(jié)合圖1詳細(xì)說(shuō)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的各個(gè)部分。其中:
本發(fā)明包含的網(wǎng)關(guān)服務(wù),接受終端連接請(qǐng)求,在分布式系統(tǒng)間實(shí)現(xiàn)負(fù)載均衡,管理異步連接通道,管理線程池,并保障可用性。其中,負(fù)載均衡可以基于Apache或者Nginx實(shí)現(xiàn);異步通道可以基于EPoll或者Java NIO實(shí)現(xiàn);線程池可以基于Netty實(shí)現(xiàn)。
本發(fā)明包含的隊(duì)列服務(wù),認(rèn)證數(shù)據(jù)收發(fā)雙方的身份、維護(hù)隊(duì)列、持久化數(shù)據(jù)、并進(jìn)行數(shù)據(jù)的預(yù)處理。其中,身份認(rèn)證可以基于加密/解密的用戶名和密碼識(shí)別,常用的加密方式有Base64和MD5;數(shù)據(jù)隊(duì)列可以采用ActiveMQ、RabbitMQ、ZeroMQ和Kafka;分布式的數(shù)據(jù)持久化可以基于數(shù)據(jù)分片和數(shù)據(jù)副本的方法實(shí)現(xiàn)。
本發(fā)明包含的配置服務(wù),通過(guò)編程接口或配置文件,配置與編輯自定義協(xié)議、配置與定義數(shù)據(jù)結(jié)構(gòu)、維護(hù)配置文件。其中,物聯(lián)網(wǎng)環(huán)境下常見(jiàn)的協(xié)議有TCP、HTTP、MQTT等;常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)有CSV數(shù)據(jù)項(xiàng),TLV數(shù)據(jù)項(xiàng),JSON數(shù)據(jù)項(xiàng)等;配置文件可以基于鍵值對(duì)維護(hù)。
實(shí)施例2:
結(jié)合圖2,在一個(gè)具體的實(shí)施例中,對(duì)本發(fā)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的異步通信模式進(jìn)行說(shuō)明。
本發(fā)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的異步通信,存在于監(jiān)聽(tīng)線程、工作線程和事件服務(wù)之間。聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的監(jiān)聽(tīng)線程用于監(jiān)聽(tīng)連接請(qǐng)求,負(fù)責(zé)打開(kāi)服務(wù)通道,綁定服務(wù)地址和端口、注冊(cè)通道并監(jiān)聽(tīng)連接請(qǐng)求。在發(fā)現(xiàn)連接請(qǐng)求后,監(jiān)聽(tīng)線程分派連接請(qǐng)求至特定的工作線程進(jìn)行后續(xù)服務(wù)。聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的工作線程是實(shí)際用于數(shù)據(jù)收發(fā)和處理的線程,負(fù)責(zé)創(chuàng)建句柄,在激活后接受連接請(qǐng)求,并將請(qǐng)求及其后續(xù)的數(shù)據(jù)發(fā)送至事件服務(wù)進(jìn)行后續(xù)處理,并可以從事件服務(wù)接收結(jié)果。事件服務(wù)是工作線程中,用于數(shù)據(jù)處理的邏輯模塊,不僅可以根據(jù)事件所在位置,配置相關(guān)參數(shù)后處理數(shù)據(jù),還可以將結(jié)果傳遞至后續(xù)事件服務(wù)繼續(xù)處理,同時(shí)接收后續(xù)事件服務(wù)的處理結(jié)果并返回給工作線程。
通過(guò)所述的異步通信,本發(fā)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)將客戶端的連接請(qǐng)求分派給特定的工作線程,一個(gè)工作線程可以同時(shí)負(fù)責(zé)多個(gè)客戶端連接請(qǐng)求,而一個(gè)連接請(qǐng)求被特定的工作線程負(fù)責(zé)服務(wù)。
實(shí)施例3:
結(jié)合圖3,在一個(gè)具體的實(shí)施例中,對(duì)本發(fā)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的線程模型進(jìn)行說(shuō)明。
本發(fā)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的線程模型,實(shí)際上包括了兩個(gè)線程池,一個(gè)監(jiān)聽(tīng)線程池,一個(gè)工作線程池。其中,監(jiān)聽(tīng)線程池是實(shí)施例2中所述監(jiān)聽(tīng)線程的集合,在聯(lián)網(wǎng)消息服務(wù)系統(tǒng)啟動(dòng)后,按照既定參數(shù)進(jìn)行配置。服務(wù)注冊(cè)的異步通道,將觸發(fā)監(jiān)聽(tīng)線程的選取和激活特定的監(jiān)聽(tīng)線程。監(jiān)聽(tīng)線程池中默認(rèn)線程的數(shù)量是當(dāng)前服務(wù)器CPU核數(shù)的2倍。工作線程池是實(shí)施例2中所述工作線程的集合,在特定的監(jiān)聽(tīng)線程分派連接請(qǐng)求時(shí),將觸發(fā)工作線程的選取和激活特定的工作線程。工作線程池中默認(rèn)線程的數(shù)量是當(dāng)前服務(wù)器CPU核數(shù)的2倍。
通過(guò)所述的線程模型,本發(fā)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)將客戶端的連接請(qǐng)求分派給特定的工作線程,一個(gè)工作線程可以同時(shí)負(fù)責(zé)多個(gè)客戶端連接請(qǐng)求,而一個(gè)連接請(qǐng)求被特定的工作線程負(fù)責(zé)服務(wù)。
實(shí)施例4:
結(jié)合圖4,在一個(gè)具體的實(shí)施例中,對(duì)本發(fā)明物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的一優(yōu)化部署模式進(jìn)行說(shuō)明。
物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)是分布式系統(tǒng),可以部署在多個(gè)系統(tǒng)節(jié)點(diǎn)上,每個(gè)節(jié)點(diǎn)部署一套物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)。系統(tǒng)通過(guò)配置服務(wù)維護(hù)的配置文件,獲知系統(tǒng)中所有的系統(tǒng)節(jié)點(diǎn);系統(tǒng)節(jié)點(diǎn)之間通過(guò)網(wǎng)關(guān)服務(wù)實(shí)現(xiàn)負(fù)載均衡,使得每個(gè)系統(tǒng)節(jié)點(diǎn)負(fù)責(zé)數(shù)量大致相同的連接。
連接物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的終端,是獨(dú)立的多個(gè)客戶端,可以是傳感器、手機(jī)設(shè)備、車載GPS設(shè)備等。終端通過(guò)物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的I P地址,基于指定協(xié)議,如TCP、HTTP或MQTT等,向物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)發(fā)送連接請(qǐng)求。當(dāng)連接請(qǐng)求被接受且認(rèn)證通過(guò)后,終端和物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)建立連接,按照指定協(xié)議,終端可以向物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)發(fā)送數(shù)據(jù),也可以從物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)接收數(shù)據(jù)。
實(shí)施例5:
結(jié)合圖5,以在智能交通領(lǐng)域下的應(yīng)用作為一個(gè)具體的實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行進(jìn)一步的舉例說(shuō)明。在智能交通系統(tǒng)中,TCP協(xié)議及TLV數(shù)據(jù)格式是常用的。TLV協(xié)議的UML時(shí)序圖如圖5所示。
在智能交通領(lǐng)域中,連接物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的終端,可以是車牌識(shí)別攝像頭。車牌識(shí)別攝像頭通過(guò)物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)的I P地址,基于TCP協(xié)議,向物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)發(fā)送連接請(qǐng)求。當(dāng)連接請(qǐng)求被接受且認(rèn)證通過(guò)后,車牌識(shí)別攝像頭和物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)建立連接,按照TCP協(xié)議向物聯(lián)網(wǎng)消息服務(wù)系統(tǒng),發(fā)送TLV結(jié)構(gòu)的車牌識(shí)別數(shù)據(jù)。
物聯(lián)網(wǎng)消息服務(wù)系統(tǒng)是可以部署在多個(gè)系統(tǒng)節(jié)點(diǎn)的分布式系統(tǒng),通過(guò)配置服務(wù)維護(hù)的配置文件,獲知系統(tǒng)中所有的系統(tǒng)節(jié)點(diǎn)并通過(guò)網(wǎng)關(guān)服務(wù),基于Apache實(shí)現(xiàn)負(fù)載均衡。其中,網(wǎng)關(guān)服務(wù)基于EPoll在Linux操作系統(tǒng)上管理異步連接通道,基于Netty管理線程池,并通過(guò)心跳機(jī)制保障可用性;隊(duì)列服務(wù)的身份認(rèn)證是基于Base64加密/解密,創(chuàng)建了一個(gè)數(shù)據(jù)隊(duì)列暫存車牌識(shí)別數(shù)據(jù),其數(shù)據(jù)持久化是基于Kafka的數(shù)據(jù)分片和數(shù)據(jù)副本實(shí)現(xiàn);配置服務(wù)通過(guò)編程接口,配置與編輯TCP協(xié)議和TLV數(shù)據(jù)結(jié)構(gòu),通過(guò)配置文件,基于鍵值對(duì)維護(hù)系統(tǒng)服務(wù)的IP地址和端口、系統(tǒng)節(jié)點(diǎn)的IP地址和端口、數(shù)據(jù)隊(duì)列的名稱等等。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。