本發(fā)明涉及GPS定位技術以及計算機網(wǎng)絡通信領域,尤其是一種面向GPS移動目標定位追蹤系統(tǒng)的高并發(fā)接入方法。
背景技術:
GPS定位系統(tǒng),最初只是運用于軍事領域,如今在人們生活的許多領域都有所應用,與GPS定位技術相關的位置服務已經(jīng)廣泛應用于人們的生活。目前電動車已經(jīng)成為人們?nèi)粘3鲂械闹匾煌üぞ?,由于電動車方便快捷、環(huán)保節(jié)能等優(yōu)點,中國的電動車數(shù)量越來越多,但是隨著電動車的普及,電動車的失竊問題在許多地區(qū)比較嚴重,電動車被盜這一項安全問題一直困擾著消費者和生產(chǎn)商;利用GPS定位技術來解決電動車防盜問題是一個有效的解決辦法。同時隨著兒童走失問題日益嚴重,基于GPS定位技術的兒童手表逐漸走進了市場,它可以讓家長了解孩子的日常行動軌跡,對孩子起到監(jiān)護的作用;同樣,對一些智障人士、寵物等的監(jiān)管,基于GPS定位技術也是一個相當有效的解決方案。由此可見,GPS定位技術已經(jīng)融入到人們生活的方方面面。
專利申請201510686080.5一種兼容多終端接入的電動車定位追盜系統(tǒng)及其方法,包括前置接收模塊、前置發(fā)送模塊、數(shù)據(jù)中心模塊、路由中心模塊、業(yè)務中心模塊、數(shù)據(jù)庫模塊,提供一種電動車自動追盜導航系統(tǒng),主要用于兼容市場上各種型號定位終端,能夠使得車主及時了解被追蹤車輛的地理位置信息,以及獲取被追蹤車輛的導航路徑;當車輛被盜時,直觀的屏幕顯示能夠?qū)崟r指導車主快速地跟蹤并找到被盜車輛。但是該發(fā)明對GPS終端沒有實現(xiàn)高并發(fā)處理,不適合大規(guī)模應用。
專利申請201510213748.4定位系統(tǒng),包括用于發(fā)送定位信息的GPS定位器、用于發(fā)送地圖坐標的管理中心、及用于接收地圖像素坐標的分機;GPS定位器包括GPS接收模塊、GSM發(fā)送模塊,GPS接收模塊用于獲取定位數(shù)據(jù),GSM發(fā)送模塊用于通過GSM網(wǎng)絡發(fā)送定位信息;管理中心用于在接收所述定位信息后,解析所述定位信息,得到標識碼和定位數(shù)據(jù);分機用于接收并顯示所述地圖像素坐標。但是該發(fā)明涉及的定位系統(tǒng)有以下缺陷:第一,該系統(tǒng)只能實現(xiàn)定位終端與監(jiān)控用戶點對點通信,沒有對接入定位終端實現(xiàn)高并發(fā)處理,不適合大規(guī)模應用;第二,只能實現(xiàn)GPS定位終端與監(jiān)控用戶點對點通信,用戶不能同時管理多個定位終端。
專利申請201410746612.5一種汽車定位系統(tǒng),該汽車定位系統(tǒng)采用無線網(wǎng)絡通訊模塊與手機進行無線通訊,通過移動基站來定位SIM卡的位置,利用移動基站信號采用三點定位方法而獲得經(jīng)緯度;無線網(wǎng)絡通訊模塊通過短信方式與手機通訊,授權用戶手機獲取自身的當前位置信息;當用戶用授權手機發(fā)送定位短信到SIM卡時,GSM模塊會自動將當前的位置信息發(fā)送至手機中,手機中的定位軟件根據(jù)獲得的經(jīng)緯度算出車輛的具體位置,便于用戶實時了解車輛的位置。但是該發(fā)明存在以下缺陷:第一,該系統(tǒng)采用短信方式通訊,不適合大規(guī)模應用;第二,采用短信方式通訊,產(chǎn)生費用高于GPRS流量;第三,無線網(wǎng)絡通訊模塊通過短信與手機通訊,實時性差,不能獲取動態(tài)實時獲取汽車位置信息。
專利申請201610509264.9GPS定位系統(tǒng)和GPS控制方法,包括GPS模塊,GPS導航信息計算模塊,設置模塊;GPS模塊用于接收GPS衛(wèi)星數(shù)據(jù),從GPS衛(wèi)星數(shù)據(jù)中獲得導航報文,上報給GPS導航信息計算模塊;GPS導航信息計算模塊用于根據(jù)GPS數(shù)據(jù)計算用戶導航信息,設置模塊,用于根據(jù)用戶的速度控制接收單元的GPS衛(wèi)星數(shù)據(jù)的接收頻率。但是該發(fā)明所涉及的定位系統(tǒng)有以下缺陷:第一,該系統(tǒng)沒有對定位終端實現(xiàn)高并發(fā)處理,不適合大規(guī)模應用;第二,該系統(tǒng)沒有提供數(shù)據(jù)儲存服務,定位終端發(fā)送的定位信息和軌跡信息不能儲存于數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)難以維護。
專利申請201510884352.2一種兒童定位手表,包括表殼、嵌在表殼中的顯示屏和內(nèi)置于表殼中的控制芯片,控制芯片包括主控單元和與之連接的時間管理單元、存儲單元、語音單元和通訊單元,時間管理單元與顯示屏相連接,輸出顯示時間,通訊單元包括通訊模塊和GPS模塊,通過通訊單元與其他通訊工具相聯(lián)系,通過GPS模塊對手表進行定位,主控單元通過通訊單元將定位信息發(fā)送至指定通訊工具接收。但是該發(fā)明所涉及的定位系統(tǒng)有以下缺陷:第一,該系統(tǒng)只能實現(xiàn)定位手表與監(jiān)控用戶點對點通信,沒有對定位終端實現(xiàn)高并發(fā)處理,不適合大規(guī)模應用;第二,智能手表發(fā)送的定位信息通過語音信道傳輸給監(jiān)控用戶,產(chǎn)生費用高于GPRS流量;第三,只能實現(xiàn)智能手表與監(jiān)控用戶點對點通信,用戶不能同時管理多個定位終端。
專利申請201510258122.5一種GPS汽車防盜器,包括處理器、GPS定位器、防盜監(jiān)控器、防盜報警器、GPS跟蹤路線軌跡成像器、用于向移動終端發(fā)送預測軌跡的信息發(fā)送器、GPS軌跡加密存儲器。但是該發(fā)明所涉及的定位系統(tǒng)有以下缺陷:第一,該系統(tǒng)只能實現(xiàn)防盜器與監(jiān)控用戶點對點通信,不適合大規(guī)模應用;第二,定位器發(fā)送的定位信息和軌跡信息不能儲存于數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)難以維護;第三,只能實現(xiàn)GPS汽車防盜器與監(jiān)控用戶點對點通信,用戶不能同時管理多個定位終端。
專利申請200920277587.5一種電動汽車實時監(jiān)控終端,包括控制模塊、與控制模塊連接的GPS模塊、電源模塊、存儲模塊、時鐘模塊、監(jiān)控模塊、CAN總線模塊、人機交互模塊、無線通信模塊、以太網(wǎng)通信模塊、USB模塊及音頻處理模塊,該終端可以實時獲取電動汽車的運行參數(shù),為研究電動汽車工作性能提供了原始數(shù)據(jù),該終端還能夠?qū)﹄妱悠囘M行實時定位跟蹤,獲取電動汽車的運行位置、運行速度和運行方向等參數(shù)。但是該發(fā)明所涉及的定位系統(tǒng)有以下缺陷:第一,該終端發(fā)送的定位信息和軌跡信息不能儲存于數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)難以維護;第二,接收該終端發(fā)送數(shù)據(jù)的后臺系統(tǒng)沒有實現(xiàn)高并發(fā)處理,不適合大規(guī)模應用。
專利申請200810149573.5一種移動通信設備的定位方法及系統(tǒng),系統(tǒng)的工作原理為:當定位觸發(fā)條件滿足時,GPS模塊啟動,GPS系統(tǒng)獲得移動通信設備的定位信息,生成含有定位信息的SMS定位信息短消息,SMS處理模塊向預先設定的接收用戶發(fā)送SMS定位信息,將GPS模塊置為休眠狀態(tài)。但是該發(fā)明所涉及的定位系統(tǒng)有以下缺陷:第一,該終端發(fā)送的定位信息和軌跡信息不能儲存于數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)難以維護;第二,該系統(tǒng)采用短信方式通訊,不適合大規(guī)模應用;第三,采用短信方式通訊,產(chǎn)生費用高于GPRS流量;第四,定位設備通過短信與后臺通信,實時性差,不能獲取動態(tài)實時獲取終端位置信息。
期刊論文《價值工程》2016.18期基于Android的定位追蹤APP的設計與實現(xiàn),該系統(tǒng)要完成GPS信號接收和通過GPRS進行數(shù)據(jù)傳輸兩項基本功能,GPS模塊用于接收衛(wèi)星報文,通常情況下該模塊與CPU之間采用異步串口通信,GPRS模塊用于與指揮中心進行數(shù)據(jù)通信,GPRS模塊通過運營商的網(wǎng)絡,撥號成功便可以通過相應網(wǎng)關接入互聯(lián)網(wǎng)。但是該論文所涉及的系統(tǒng)有以下缺陷:第一,服務器沒有對定位終端實現(xiàn)高并發(fā)處理,不適合大規(guī)模應用;第二,GPRS模塊需要通過撥號方式接入網(wǎng)關,占用帶寬高,費用昂貴。
期刊論文《科學與財富》2015.08期基于GPS和GSM的電動車防盜追蹤報警系統(tǒng),該防盜系統(tǒng)采用STC15F為中央處理單元,作為控制系統(tǒng)的核心;通過GPS模塊檢測電動車的位置移動信息傳遞給單片機;當單片機檢測到電動車超出設定范圍的情況(即被盜)時,利用SIM900A無線通信模塊向預設的車主手機發(fā)送報警短信;同時,用戶可以通過手機發(fā)送短信指令的方式,對車輛進行遠程操作,實現(xiàn)斷電功能。但是該論文所涉及的系統(tǒng)有以下缺陷:第一,只能實現(xiàn)單一的定位終端與車主手機的通信,用戶不能同時管理多個定位終端;第二,SIM900A無線通信模塊通過短信與手機通訊,實時性差,不能獲取動態(tài)實時獲取汽車位置信息;第三,該系統(tǒng)采用短信方式通訊,不適合大規(guī)模應用。
期刊論文《微計算機應用》2007.6期基于無線網(wǎng)絡的GPS定位信息的傳輸研究,該論文介紹了了一種在無線網(wǎng)絡環(huán)境下實現(xiàn)將GPS的定位信息從GPS接收終端傳到控制中心的高效傳輸方法,控制中心服務器主要負責接收來自GPS接收終端的GPS定位數(shù)據(jù),控制中心在某個端口上進行SOCKET套接字的偵聽,如果發(fā)現(xiàn)某個時刻有客戶端連接服務器操作,服務器將提示客戶端發(fā)送驗證信息,在接收到由客戶端發(fā)送過來的數(shù)據(jù)后,服務器根據(jù)通信協(xié)議的要求,提取所需的日期、時間、經(jīng)緯度信息等等,然后寫入后臺數(shù)據(jù)庫,服務器應用程序采用VC6.0開發(fā)工具進行編在Windows操作系統(tǒng)下通過編譯測試。但是該論文所涉及的系統(tǒng)有以下缺陷:第一,程序采用VC6.0,編譯系統(tǒng)為Windows,不能跨平臺,可移植性差;第二,控制中心服務器沒有對接入的GPS定位終端進行高并發(fā)處理,系統(tǒng)不適合大規(guī)模應用。
期刊論文《科技視界》2016.23期基于單片機的老人小孩防丟控制器,該論文介紹了一種老人小孩定位防丟控制器,它以單片機為基礎,添加GPS模塊和GSM模塊來實現(xiàn)定位尋找功能。能夠遠距離定位通訊,在獲得目標的位置信息后,能判斷并選擇最佳線路尋找目標,該系統(tǒng)主要采用型號為STCl2C5A60S2芯片,結合GPS、GSM實現(xiàn)雙串口同時工作。但是該論文所涉及的系統(tǒng)有以下缺陷:第一,該系統(tǒng)采用GSM短信方式通訊,不適合大規(guī)模應用;第二,GSM模塊通過短信與手機通訊,實時性差,不能獲取動態(tài)實時獲取汽車位置信息。
技術實現(xiàn)要素:
技術問題:針對以上定位系統(tǒng)不能大規(guī)模高并發(fā)接入GPS定位終端,不能動態(tài)實時獲取終端位置信息等技術問題,本發(fā)明的主要目的在于提出了一種可以高并發(fā)接入GPS移動目標定位終端的系統(tǒng)和方法。采用本發(fā)明可以讓GPS定位終端以大于600Kbps的速率完成接入,使用戶可以動態(tài)實時獲取移動目標地理位置信息,并獲取被追蹤目標的導航路徑;總接入規(guī)??蛇_200萬臺。
技術方案:本發(fā)明提供的一種面向GPS移動目標定位追蹤系統(tǒng)的高并發(fā)接入方法,包括終端接收模塊,負載分配模塊,數(shù)據(jù)并發(fā)處理模塊,數(shù)據(jù)庫連接模塊,數(shù)據(jù)庫模塊;其中,所述的終端接收模塊作為系統(tǒng)與定位終端的接口,負責監(jiān)聽定位終端發(fā)送的連接請求;所述的負載分配模塊負責系統(tǒng)的負載均衡,均勻分配報文數(shù)據(jù)流量,防止出現(xiàn)由于單一服務器流量過高導致系統(tǒng)崩潰的情況;所述的數(shù)據(jù)并發(fā)處理模塊并行解析定位終端發(fā)送的原始報文信息,利用ASCII碼轉(zhuǎn)制規(guī)則,將報文信息轉(zhuǎn)碼為可見ASCII碼,并按照終端對應的協(xié)議準則,將以ASCII碼呈現(xiàn)的報文信息解析為以JSON格式封裝的業(yè)務邏輯信息;所述的數(shù)據(jù)庫連接模塊負責建立數(shù)據(jù)庫連接池,提高系統(tǒng)對數(shù)據(jù)庫讀寫的速率,減小頻繁創(chuàng)建與刪除數(shù)據(jù)庫連接導致的系統(tǒng)不穩(wěn)定;所述的數(shù)據(jù)庫模塊負責模塊化儲存定位終端對應的用戶信息和終端位置信息,并且為整個系統(tǒng)數(shù)據(jù)信息的安全性和高可靠性提供保障。
所述的終端接收模塊包括接入線程模塊,業(yè)務線程模塊這兩個子模塊;負責監(jiān)聽定位終端發(fā)送的連接請求,并且以每臺大于600Kbps的速率,總量為200萬臺的規(guī)模接收終端發(fā)送的報文信息;
所述的終端接收模塊由4個非阻塞IO線程組成,采用TCP/IP傳輸協(xié)議,通過socket接口,與定位終端交互,接收定位終端發(fā)送的報文數(shù)據(jù),終端接收模塊選擇一個空閑的非阻塞IO線程與定位終端建立TCP連接,創(chuàng)建一個socket連接,將此socket連接注冊到一個空閑的業(yè)務線程模塊,之后非阻塞IO線程斷開與定位終端的連接,保持空閑狀態(tài)等待接收新的定位終端連接;所述的業(yè)務線程模塊由八個業(yè)務線程組成,負責接收終端接收模塊注冊的socket連接,讀取定位終端發(fā)送的報文信息,并將報文信息傳遞給負載分配策略模塊;
所述的負載分配模塊包括策略選擇模塊,前臺數(shù)據(jù)發(fā)送模塊這兩個子模塊;負責系統(tǒng)的負載均衡,均勻分配報文數(shù)據(jù)流量,防止出現(xiàn)由于單一服務器流量過高導致系統(tǒng)崩潰的情況,負載分配模塊接收終端接收模塊發(fā)送的報文信息,利用均衡分配負載策略,將報文信息均衡的分派給數(shù)據(jù)并發(fā)處理模塊;
所述的策略選擇模塊可以手動配置負載策略,使多個數(shù)據(jù)并發(fā)處理模塊能夠協(xié)同完成報文處理任務,消除網(wǎng)絡負載分配不均,解決數(shù)據(jù)流量擁擠導致響應時間過長的問題;系統(tǒng)提供的負載策略包括輪詢均衡策略,權重輪詢均衡策略,隨機均衡策略,響應速度均衡策略,最少連接數(shù)均衡策略,DNS響應均衡策略;輪詢均衡策略:每一次終端接收模塊發(fā)送的請求輪流選擇數(shù)據(jù)并發(fā)處理模塊,此均衡算法適合系統(tǒng)中所有服務器都有相同硬件配置的情況;權重輪詢均衡策略:根據(jù)裝載數(shù)據(jù)并發(fā)處理模塊的服務器配置不同,給每個服務器分配不同的權值,按照相應權值接收終端接收模塊發(fā)送的請求;隨機均衡策略:通過隨機數(shù)生成算法,把終端接收模塊發(fā)送的請求隨機分配給數(shù)據(jù)并發(fā)處理模塊;響應速度均衡策略:終端接收模塊向所有數(shù)據(jù)并發(fā)處理模塊發(fā)出一個PING探測請求,根據(jù)探測請求響應時間,把報文信息發(fā)送到響應時間最快的數(shù)據(jù)并發(fā)處理模塊;最少連接數(shù)均衡策略:每一個數(shù)據(jù)并發(fā)處理模塊都有一個數(shù)據(jù)記錄,記錄當前正在處理的連接數(shù)量,當有新的連接請求時,把連接請求分配給連接數(shù)最少的數(shù)據(jù)并發(fā)處理模塊;DNS響應均衡策略:分處在不同地理位置的數(shù)據(jù)并發(fā)處理模塊所對應的DNS服務器收到來自同一終端接收模塊的域名解析請求,在同一時間內(nèi)把此域名解析成IP地址并返回,終端接收模塊將以最先收到的域名解析IP地址來發(fā)送請求服務,忽略其它的IP地址響應;
所述的前臺數(shù)據(jù)發(fā)送模塊采用socket接口,通過TCP/IP傳輸協(xié)議,負責將報文信息傳輸?shù)讲呗赃x擇模塊所選中的數(shù)據(jù)并發(fā)處理模塊;
所述的數(shù)據(jù)并發(fā)處理模塊包括前臺數(shù)據(jù)接收模塊,報文轉(zhuǎn)碼模塊,報文數(shù)據(jù)解析模塊,控制轉(zhuǎn)發(fā)模塊這四個子模塊;并行解析定位終端發(fā)送的原始報文信息,利用ASCII碼轉(zhuǎn)制規(guī)則,將報文信息轉(zhuǎn)碼為可見ASCII碼,并按照終端對應的協(xié)議準則,將以ASCII碼呈現(xiàn)的報文解析為以JSON格式封裝的業(yè)務邏輯,數(shù)據(jù)并發(fā)處理模塊接收負載分配模塊發(fā)送的原始報文信息,并將報文信息解碼、解析為業(yè)務邏輯信息,并行發(fā)送給數(shù)據(jù)庫連接模塊;
所述的前臺數(shù)據(jù)接收模塊采用socket接口,利用socket Listen監(jiān)聽機制,并行監(jiān)聽前臺數(shù)據(jù)發(fā)送模塊發(fā)送的報文信息;所述的報文轉(zhuǎn)碼模塊根據(jù)解碼協(xié)議,將報文信息解碼為可見ASCII碼,以供報文數(shù)據(jù)解析模塊解析,其中,報文轉(zhuǎn)碼模塊提供的解碼協(xié)議有二進制與ASCII碼制轉(zhuǎn)換,八進制與ASCII碼制轉(zhuǎn)換,十六進制與ASCII碼制轉(zhuǎn)換,十進制與ASCII碼制轉(zhuǎn)換,反十六進制與ASCII碼制轉(zhuǎn)換;所述的報文數(shù)據(jù)解析模塊將報文轉(zhuǎn)碼模塊轉(zhuǎn)換后以ASCII碼呈現(xiàn)的報文信息按照定位終端所對應的協(xié)議準則,將協(xié)議內(nèi)容轉(zhuǎn)換為JSON格式數(shù)據(jù),其中,協(xié)議內(nèi)容包括定位終端的位置信息與用戶基本信息;所述的控制轉(zhuǎn)發(fā)模塊利用Socket Connection接口,將系統(tǒng)可識別的JSON格式數(shù)據(jù)并行發(fā)送到數(shù)據(jù)庫連接模塊;
所述的數(shù)據(jù)庫連接模塊包括后臺數(shù)據(jù)接收模塊,數(shù)據(jù)庫連接池模塊,數(shù)據(jù)庫連接選擇模塊,數(shù)據(jù)入庫模塊這四個子模塊;負責建立數(shù)據(jù)庫連接池,提高系統(tǒng)對數(shù)據(jù)庫讀寫的速率,減小頻繁創(chuàng)建與刪除數(shù)據(jù)庫連接導致的系統(tǒng)不穩(wěn)定,數(shù)據(jù)庫連接模塊接收數(shù)據(jù)并發(fā)處理模塊發(fā)送的業(yè)務邏輯信息,并與數(shù)據(jù)庫模塊建立連接池,將業(yè)務邏輯信息分類存入數(shù)據(jù)庫模塊;
所述的后臺數(shù)據(jù)接收模塊利用本地Socket Connection接口,并行接收數(shù)據(jù)并發(fā)處理模塊發(fā)送的以JSON格式封裝的業(yè)務信息,以供數(shù)據(jù)庫連接選擇模塊選擇入庫;所述的數(shù)據(jù)庫連接池模塊由一組數(shù)據(jù)庫連接對象組成的隊列緩沖池所組成,數(shù)據(jù)庫連接是一個費時的活動,每次都要花費0.05s~1s的時間,數(shù)據(jù)入庫模塊對數(shù)據(jù)庫模塊不斷讀寫,頻繁建立和維護新的數(shù)據(jù)庫連接,系統(tǒng)的性能會受到影響,甚至會造成服務器的崩潰,所以,數(shù)據(jù)庫連接池模塊預先放入一定數(shù)量的數(shù)據(jù)庫連接形成緩沖池,當需要建立連接時,只需從緩沖池中取出一個連接,使用完畢之后放回,可以降低系統(tǒng)的開銷;所述的數(shù)據(jù)庫連接選擇模塊負責管理數(shù)據(jù)庫連接池模塊,選擇最佳的數(shù)據(jù)庫連接對數(shù)據(jù)庫模塊進行讀寫;所述的數(shù)據(jù)入庫模塊負責將數(shù)據(jù)庫連接選擇模塊分配的數(shù)據(jù)庫連接與數(shù)據(jù)庫模塊通信,完成數(shù)據(jù)的讀寫操作,數(shù)據(jù)庫入庫模塊(4-4)與底層數(shù)據(jù)庫建立TCP/IP連接,向數(shù)據(jù)庫模塊提供Connection接口;數(shù)據(jù)庫連接選擇模塊選取數(shù)據(jù)庫連接的流程如下:
首先,數(shù)據(jù)庫連接池模塊中已經(jīng)創(chuàng)建但尚未分配出去的數(shù)據(jù)庫連接按照創(chuàng)建時間存到一個空閑池中,每當有一個連接請求時,數(shù)據(jù)庫連接選擇模塊首先檢查空閑池內(nèi)是否有空閑的數(shù)據(jù)庫連接;接著,如果有空閑的數(shù)據(jù)庫連接則把建立時間最長的那個連接分配給數(shù)據(jù)入庫模塊,如果沒有則檢查當前所開的緩沖池是否達到最大連接數(shù);然后,如果緩沖池沒有到達最大連接數(shù),則新建一個連接加入緩沖池中,如果緩沖池已經(jīng)達到最大連接數(shù),則等待預設的時間timeout;最后,如果在等待的時間有數(shù)據(jù)庫連接被釋放出來,則將此連接分配給請求,如果等待時間超過timeout,則此請求失效;
所述的數(shù)據(jù)庫模塊包括數(shù)據(jù)庫接入代理模塊,主數(shù)據(jù)庫模塊,輔助數(shù)據(jù)庫模塊三個子模塊;負責模塊化儲存定位終端對應的用戶信息和終端位置信息,并且為整個系統(tǒng)數(shù)據(jù)信息的安全性和高可靠性提供保障;
所述的數(shù)據(jù)庫接入代理模塊位于數(shù)據(jù)庫連接模塊與主數(shù)據(jù)庫模塊、輔助數(shù)據(jù)庫模塊之間,負責解析數(shù)據(jù)入庫模塊發(fā)送的SQL語句,并進行分類,將“寫”的語句傳遞給主數(shù)據(jù)庫模塊,“讀”的語句傳遞給輔助數(shù)據(jù)庫模塊;所述的主數(shù)據(jù)庫模塊處理數(shù)據(jù)入庫模塊的“寫”操作,并且按模塊化方式分類儲存定位終端對應的用戶和位置信息,并且提供GPS定位糾偏庫與運營商基站經(jīng)緯度坐標庫;所述的輔助數(shù)據(jù)庫模塊功能為:第一,負責處理入庫模塊發(fā)送的“讀”操作請求,減少主數(shù)據(jù)庫模塊的負載,加快數(shù)據(jù)讀寫速度;第二,為系統(tǒng)的數(shù)據(jù)提供備份服務,備份方式為異步復制,主數(shù)據(jù)庫模塊完成自身“寫”操作的同時,將SQL語句操作日志發(fā)送到輔助數(shù)據(jù)庫模塊,輔助數(shù)據(jù)庫模塊根據(jù)日志內(nèi)容完成備份;輔助數(shù)據(jù)庫模塊備份主數(shù)據(jù)庫模塊流程如下:
首先,主數(shù)據(jù)庫模塊開啟一個日志“寫”入線程,輔助數(shù)據(jù)庫模塊開啟一個日志讀取線程和一個SQL復制線程;接著,主數(shù)據(jù)庫模塊在執(zhí)行“寫”操作時,會利用日志寫入線程將SQL語句寫入到主數(shù)據(jù)庫模塊的本地日志文件Master Log中;然后,日志讀取線程讀取主數(shù)據(jù)庫模塊中的Master Log文件,并且將讀取的日志內(nèi)容寫入輔助數(shù)據(jù)庫模塊的本地日志文件Sub Log中;最后,SQL復制線程根據(jù)Sub Log的SQL記錄,將輔助數(shù)據(jù)庫模塊更新,保證數(shù)據(jù)與主數(shù)據(jù)庫模塊同步;
一種面向GPS移動目標定位追蹤系統(tǒng)的高并發(fā)接入方法的整體工作流程如下:
1.系統(tǒng)與定位終端建立連接;系統(tǒng)啟動,終端接收模塊在后臺運行,監(jiān)聽是否有定位終端連接請求;終端接收模塊由用戶線程和內(nèi)核線程組成,當定位終端調(diào)用connect()函數(shù)與終端接收模塊連接時,用戶線程調(diào)用select()函數(shù),整個終端接收模塊被阻塞,同時,內(nèi)核線程監(jiān)聽select()函數(shù)掛載的socket連接,當socket中的數(shù)據(jù)準備就緒,select()函數(shù)返回;用戶線程調(diào)用read()函數(shù),將報文信息從內(nèi)核線程拷貝到用戶線程,業(yè)務線程模塊從用戶線程將報文信息讀?。?/p>
2.系統(tǒng)流量負載均衡;業(yè)務線程模塊將讀取到的報文信息發(fā)送到策略選擇模塊,前臺數(shù)據(jù)發(fā)送模塊根據(jù)策略選擇模塊手動配置的負載策略,將報文信息發(fā)送到前臺數(shù)據(jù)接收模塊;
3.將終端信息解碼并按照協(xié)議解析;首先由報文轉(zhuǎn)碼模塊將定位終端信息解碼,使其統(tǒng)一變?yōu)榭梢夾SCII碼,然后由報文數(shù)據(jù)解析模塊將定位終端發(fā)送的數(shù)據(jù)按照協(xié)議轉(zhuǎn)化為系統(tǒng)約定的JSON格式,最后將統(tǒng)一的JSON格式數(shù)據(jù)由控制轉(zhuǎn)發(fā)模塊發(fā)送到后臺數(shù)據(jù)接收模塊;
4.將終端信息存入數(shù)據(jù)庫;首先后臺數(shù)據(jù)接收模塊接收控制轉(zhuǎn)發(fā)模塊發(fā)送的JSON數(shù)據(jù),然后數(shù)據(jù)庫連接選擇模塊選擇數(shù)據(jù)庫連接池模塊中空閑的數(shù)據(jù)庫連接,并把此連接分配給數(shù)據(jù)入庫模塊,最后數(shù)據(jù)入庫模塊與數(shù)據(jù)庫接入代理模塊建立連接,將終端信息寫入數(shù)據(jù)庫模塊。
有益效果:本發(fā)明的一種面向GPS移動目標定位追蹤系統(tǒng)的高并發(fā)接入方法,只要將定位裝置連接系統(tǒng),便可以每臺大于600Kbps的速率,實現(xiàn)總量為200萬臺的規(guī)模接入。定位終端采用網(wǎng)關接入方式,因此具有更好的系統(tǒng)穩(wěn)定性。數(shù)據(jù)庫采用模塊化管理,避免了當終端接入或者撤除時造成系統(tǒng)結構破壞。本發(fā)明的結構簡單、使用便捷,其整體防盜性能好,可操作性能強,使用穩(wěn)定性好且功能齊全,實用性強。
附圖說明:
圖1是本發(fā)明的整體框圖;
圖2是本發(fā)明的整體原理結構圖;
圖3是本發(fā)明的系統(tǒng)工作流程圖;
圖4是本發(fā)明的終端接入模塊結構圖;
圖5是本發(fā)明的負載分配模塊結構圖;
圖6是本發(fā)明的數(shù)據(jù)并發(fā)處理模塊結構圖;
圖7是本發(fā)明的數(shù)據(jù)庫連接模塊結構圖;
圖8是本發(fā)明的數(shù)據(jù)庫模塊結構圖。
具體實施方式:
以下結合附圖對本發(fā)明中的關鍵技術和具體實現(xiàn)方法進行詳細說明。
如圖1所示為本發(fā)明的整體框圖,本發(fā)明所提出的一種面向GPS移動目標定位追蹤系統(tǒng)的高并發(fā)接入方法有:終端接收模塊1,負載分配模塊2,數(shù)據(jù)并發(fā)處理模塊3,數(shù)據(jù)庫連接模塊4,數(shù)據(jù)庫模塊5。終端接收模塊1使用TCP/IP協(xié)議,通過接入線程模塊1-1與定位終端相連。負載分配模塊2與數(shù)據(jù)并發(fā)處理模塊3,數(shù)據(jù)并發(fā)處理模塊3與數(shù)據(jù)庫連接模塊4,數(shù)據(jù)庫連接模塊4與數(shù)據(jù)庫模塊5均通過socket接口完成數(shù)據(jù)交互。
如圖2所示為整體原理結構圖,本發(fā)明主要包括五大部分:終端接收模塊1,負載分配模塊2,數(shù)據(jù)并發(fā)處理模塊3,數(shù)據(jù)庫連接模塊4,數(shù)據(jù)庫模塊5。所述的終端接收模塊1包括接入線程模塊1-1,業(yè)務線程模塊1-2。所述的負載分配模塊2包括策略選擇模塊2-1,前臺數(shù)據(jù)發(fā)送模塊2-2。所述的數(shù)據(jù)并發(fā)處理模塊3包括前臺數(shù)據(jù)接收模塊3-1,報文轉(zhuǎn)碼模塊3-2,報文數(shù)據(jù)解析模塊3-3,控制轉(zhuǎn)發(fā)模塊3-4。所述的數(shù)據(jù)庫連接4模塊包括后臺數(shù)據(jù)接收模塊4-1,數(shù)據(jù)庫連接池模塊4-2,數(shù)據(jù)庫連接選擇模塊4-3,數(shù)據(jù)入庫模塊4-4。所述的數(shù)據(jù)庫模塊5包括數(shù)據(jù)庫接入代理模塊5-1,主數(shù)據(jù)庫模塊5-2,輔助數(shù)據(jù)庫模塊5-3。
系統(tǒng)整體工作流程如圖3所示:
第一步,系統(tǒng)與定位終端建立連接;系統(tǒng)啟動,終端接收模塊1-1在后臺運行,監(jiān)聽是否有定位終端連接請求;終端接收模塊1-1由用戶線程和內(nèi)核線程組成,當定位終端調(diào)用connect()函數(shù)與終端接收模塊1-1連接時,用戶線程調(diào)用select()函數(shù),整個終端接收模塊1-1被阻塞,同時,內(nèi)核線程監(jiān)聽select()函數(shù)掛載的socket連接,當socket中的數(shù)據(jù)準備就緒,select()函數(shù)返回;用戶線程調(diào)用read()函數(shù),將報文信息從內(nèi)核線程拷貝到用戶線程,業(yè)務線程模塊1-2從用戶線程將報文信息讀取。
第二步,系統(tǒng)流量負載均衡;業(yè)務線程模塊1-2將讀取到的報文信息發(fā)送到策略選擇模塊2-1,前臺數(shù)據(jù)發(fā)送模塊2-2根據(jù)策略選擇模塊2-1手動配置的負載策略,將報文信息發(fā)送到前臺數(shù)據(jù)接收模塊3-1。
第三步,將終端信息解碼并按照協(xié)議解析;首先由報文轉(zhuǎn)碼模塊3-2將定位終端信息解碼,使其統(tǒng)一變?yōu)榭梢夾SCII碼,然后由報文數(shù)據(jù)解析模塊3-3將定位終端發(fā)送的數(shù)據(jù)按照協(xié)議轉(zhuǎn)化為系統(tǒng)約定的JSON格式,最后將統(tǒng)一的JSON格式數(shù)據(jù)由控制轉(zhuǎn)發(fā)模塊3-4發(fā)送到后臺數(shù)據(jù)接收模塊4-1。
第四步,將終端信息存入數(shù)據(jù)庫;首先后臺數(shù)據(jù)接收模塊4-1接收控制轉(zhuǎn)發(fā)模塊3-4發(fā)送的JSON數(shù)據(jù),然后數(shù)據(jù)庫連接選擇模塊4-3選擇數(shù)據(jù)庫連接池模塊4-2中空閑的數(shù)據(jù)庫連接,并把此連接分配給數(shù)據(jù)入庫模塊4-4,最后數(shù)據(jù)入庫模塊4-4與數(shù)據(jù)庫接入代理模塊5-1建立連接,將終端信息寫入數(shù)據(jù)庫模塊5。
如圖4所示為終端接入模塊結構圖,包括接入線程模塊1-1,業(yè)務線程模塊1-2這兩個子模塊。負責監(jiān)聽定位終端發(fā)送的連接請求,并且以每臺大于600Kbps的速率,總量為200萬臺的規(guī)模接收終端發(fā)送的報文信息。
所述的終端接收模塊1-1由4個非阻塞IO線程組成,采用TCP/IP傳輸協(xié)議,通過socket接口,與定位終端交互,接收定位終端發(fā)送的報文數(shù)據(jù),終端接收模塊1-1選擇一個空閑的非阻塞IO線程與定位終端建立TCP連接,創(chuàng)建一個socket連接,將此socket連接注冊到一個空閑的業(yè)務線程模塊1-2,之后非阻塞IO線程斷開與定位終端的連接,保持空閑狀態(tài)等待接收新的定位終端連接。所述的業(yè)務線程模塊1-2由八個業(yè)務線程組成,負責接收終端接收模塊1-1注冊的socket連接,讀取定位終端發(fā)送的報文信息,并將報文信息傳遞給負載分配策略模塊2。
如圖5所示為負載分配模塊結構圖,包括策略選擇模塊2-1,前臺數(shù)據(jù)發(fā)送模塊2-2這兩個子模塊。負責系統(tǒng)的負載均衡,均勻分配報文數(shù)據(jù)流量,防止出現(xiàn)由于單一服務器流量過高導致系統(tǒng)崩潰的情況,負載分配模塊2接收終端接收模塊1發(fā)送的報文信息,利用均衡分配負載策略,將報文信息均衡的分派給數(shù)據(jù)并發(fā)處理模塊3。
所述的策略選擇模塊2-1可以手動配置負載策略,使多個數(shù)據(jù)并發(fā)處理模塊3能夠協(xié)同完成報文處理任務,消除網(wǎng)絡負載分配不均,解決數(shù)據(jù)流量擁擠導致響應時間過長的問題;系統(tǒng)提供的負載策略包括輪詢均衡策略,權重輪詢均衡策略,隨機均衡策略,響應速度均衡策略,最少連接數(shù)均衡策略,DNS響應均衡策略;輪詢均衡策略:每一次終端接收模塊1發(fā)送的請求輪流選擇數(shù)據(jù)并發(fā)處理模塊3,此均衡算法適合系統(tǒng)中所有服務器都有相同硬件配置的情況;權重輪詢均衡策略:根據(jù)裝載數(shù)據(jù)并發(fā)處理模塊3的服務器配置不同,給每個服務器分配不同的權值,按照相應權值接收終端接收模塊1發(fā)送的請求;隨機均衡策略:通過隨機數(shù)生成算法,把終端接收模塊1發(fā)送的請求隨機分配給數(shù)據(jù)并發(fā)處理模塊3;響應速度均衡策略:終端接收模塊1向所有數(shù)據(jù)并發(fā)處理模塊3發(fā)出一個PING探測請求,根據(jù)探測請求響應時間,把報文信息發(fā)送到響應時間最快的數(shù)據(jù)并發(fā)處理模塊3;最少連接數(shù)均衡策略:每一個數(shù)據(jù)并發(fā)處理模塊3都有一個數(shù)據(jù)記錄,記錄當前正在處理的連接數(shù)量,當有新的連接請求時,把連接請求分配給連接數(shù)最少的數(shù)據(jù)并發(fā)處理模塊3;DNS響應均衡策略:分處在不同地理位置的數(shù)據(jù)并發(fā)處理模塊3所對應的DNS服務器收到來自同一終端接收模塊1的域名解析請求,在同一時間內(nèi)把此域名解析成IP地址并返回,終端接收模塊1將以最先收到的域名解析IP地址來發(fā)送請求服務,忽略其它的IP地址響應。
所述的前臺數(shù)據(jù)發(fā)送模塊2-2采用socket接口,通過TCP/IP傳輸協(xié)議,負責將報文信息傳輸?shù)讲呗赃x擇模塊2-1所選中的數(shù)據(jù)并發(fā)處理模塊3。
如圖6所示為并發(fā)處理模塊結構圖,包括前臺數(shù)據(jù)接收模塊3-1,報文轉(zhuǎn)碼模塊3-2,報文數(shù)據(jù)解析模塊3-3,控制轉(zhuǎn)發(fā)模塊3-4這四個子模塊。并行解析定位終端發(fā)送的原始報文信息,利用ASCII碼轉(zhuǎn)制規(guī)則,將報文信息轉(zhuǎn)碼為可見ASCII碼,并按照終端對應的協(xié)議準則,將以ASCII碼呈現(xiàn)的報文解析為以JSON格式封裝的業(yè)務邏輯,數(shù)據(jù)并發(fā)處理模塊3接收負載分配模塊2發(fā)送的原始報文信息,并將報文信息解碼、解析為業(yè)務邏輯信息,并行發(fā)送給數(shù)據(jù)庫連接模塊4。
所述的前臺數(shù)據(jù)接收模塊3-1采用socket接口,利用socket Listen監(jiān)聽機制,并行監(jiān)聽前臺數(shù)據(jù)發(fā)送模塊2-2發(fā)送的報文信息。所述的報文轉(zhuǎn)碼模塊3-2根據(jù)解碼協(xié)議,將報文信息解碼為可見ASCII碼,以供報文數(shù)據(jù)解析模塊3-3解析,其中,報文轉(zhuǎn)碼模塊3-2提供的解碼協(xié)議有二進制與ASCII碼制轉(zhuǎn)換,八進制與ASCII碼制轉(zhuǎn)換,十六進制與ASCII碼制轉(zhuǎn)換,十進制與ASCII碼制轉(zhuǎn)換,反十六進制與ASCII碼制轉(zhuǎn)換。所述的報文數(shù)據(jù)解析模塊3-3將報文轉(zhuǎn)碼模塊3-2轉(zhuǎn)換后以ASCII碼呈現(xiàn)的報文信息按照定位終端所對應的協(xié)議準則,將協(xié)議內(nèi)容轉(zhuǎn)換為JSON格式數(shù)據(jù),其中,協(xié)議內(nèi)容包括定位終端的位置信息與用戶基本信息。所述的控制轉(zhuǎn)發(fā)模塊3-4利用Socket Connection接口,將系統(tǒng)可識別的JSON格式數(shù)據(jù)并行發(fā)送到數(shù)據(jù)庫連接模塊4。
如圖7所示為數(shù)據(jù)庫連接模塊結構圖,后臺數(shù)據(jù)接收模塊4-1,數(shù)據(jù)庫連接池模塊4-2,數(shù)據(jù)庫連接選擇模塊4-3,數(shù)據(jù)入庫模塊4-4。負責建立數(shù)據(jù)庫連接池,提高系統(tǒng)對數(shù)據(jù)庫讀寫的速率,減小頻繁創(chuàng)建與刪除數(shù)據(jù)庫連接導致的系統(tǒng)不穩(wěn)定,數(shù)據(jù)庫連接模塊4接收數(shù)據(jù)并發(fā)處理模塊3發(fā)送的業(yè)務邏輯信息,并與數(shù)據(jù)庫模塊5建立連接池,將業(yè)務邏輯信息分類存入數(shù)據(jù)庫模塊5。
所述的后臺數(shù)據(jù)接收模塊4-1利用本地Socket Connection接口,并行接收數(shù)據(jù)并發(fā)處理模塊3發(fā)送的以JSON格式封裝的業(yè)務信息,以供數(shù)據(jù)庫連接選擇模塊4-3選擇入庫。所述的數(shù)據(jù)庫連接池模塊4-2由一組數(shù)據(jù)庫連接對象組成的隊列緩沖池所組成,數(shù)據(jù)庫連接是一個費時的活動,每次都要花費0.05s~1s的時間,數(shù)據(jù)入庫模塊4-4對數(shù)據(jù)庫模塊5不斷讀寫,頻繁建立和維護新的數(shù)據(jù)庫連接,系統(tǒng)的性能會受到影響,甚至會造成服務器的崩潰,所以,數(shù)據(jù)庫連接池模塊4-2預先放入一定數(shù)量的數(shù)據(jù)庫連接形成緩沖池,當需要建立連接時,只需從緩沖池中取出一個連接,使用完畢之后放回,可以降低系統(tǒng)的開銷。所述的數(shù)據(jù)庫連接選擇模塊4-3負責管理數(shù)據(jù)庫連接池模塊4-2,選擇最佳的數(shù)據(jù)庫連接對數(shù)據(jù)庫模塊5進行讀寫。所述的數(shù)據(jù)入庫模塊4-4負責將數(shù)據(jù)庫連接選擇模塊4-3分配的數(shù)據(jù)庫連接與數(shù)據(jù)庫模塊5通信,完成數(shù)據(jù)的讀寫操作,數(shù)據(jù)庫入庫模塊4-4與底層數(shù)據(jù)庫建立TCP/IP連接,向數(shù)據(jù)庫模塊提供Connection接口。數(shù)據(jù)庫連接選擇模塊4-3選取數(shù)據(jù)庫連接的流程如下:
首先,數(shù)據(jù)庫連接池模塊4-2中已經(jīng)創(chuàng)建但尚未分配出去的數(shù)據(jù)庫連接按照創(chuàng)建時間存到一個空閑池中,每當有一個連接請求時,數(shù)據(jù)庫連接選擇模塊4-3首先檢查空閑池內(nèi)是否有空閑的數(shù)據(jù)庫連接;接著,如果有空閑的數(shù)據(jù)庫連接則把建立時間最長的那個連接分配給數(shù)據(jù)入庫模塊4-4,如果沒有則檢查當前所開的緩沖池是否達到最大連接數(shù);然后,如果緩沖池沒有到達最大連接數(shù),則新建一個連接加入緩沖池中,如果緩沖池已經(jīng)達到最大連接數(shù),則等待預設的時間timeout;最后,如果在等待的時間有數(shù)據(jù)庫連接被釋放出來,則將此連接分配給請求,如果等待時間超過timeout,則此請求失效。
如圖8所示為數(shù)據(jù)庫模塊結構圖,包括數(shù)據(jù)庫接入代理模塊5-1,主數(shù)據(jù)庫模塊5-2,輔助數(shù)據(jù)庫模塊5-3這三個子模塊。負責模塊化儲存定位終端對應的車主信息和車輛信息,并且為整個系統(tǒng)數(shù)據(jù)信息的安全性和高可靠性提供保障。
所述的數(shù)據(jù)庫接入代理模塊5-1位于數(shù)據(jù)庫連接模塊4與主數(shù)據(jù)庫模塊5-2、輔助數(shù)據(jù)庫模塊5-3之間,負責解析數(shù)據(jù)入庫模塊4-4發(fā)送的SQL語句,并進行分類,將“寫”的語句傳遞給主數(shù)據(jù)庫模塊5-2,“讀”的語句傳遞給輔助數(shù)據(jù)庫模塊5-3。所述的主數(shù)據(jù)庫模塊5-2處理數(shù)據(jù)入庫模塊4-4的“寫”操作,并且按模塊化方式分類儲存定位終端對應的用戶和位置信息,并且提供GPS定位糾偏庫與運營商基站經(jīng)緯度坐標庫。所述的輔助數(shù)據(jù)庫模塊5-3功能為:第一,負責處理入庫模塊4-4發(fā)送的“讀”操作請求,減少主數(shù)據(jù)庫模塊5-2的負載,加快數(shù)據(jù)讀寫速度;第二,為系統(tǒng)的數(shù)據(jù)提供備份服務,備份方式為異步復制,主數(shù)據(jù)庫模塊5-2完成自身“寫”操作的同時,將SQL語句操作日志發(fā)送到輔助數(shù)據(jù)庫模塊5-3,輔助數(shù)據(jù)庫模塊5-3根據(jù)日志內(nèi)容完成備份。輔助數(shù)據(jù)庫模塊5-3備份主數(shù)據(jù)庫模塊5-2流程如下:
首先,主數(shù)據(jù)庫模塊5-2開啟一個日志“寫”入線程,輔助數(shù)據(jù)庫模塊5-3開啟一個日志讀取線程和一個SQL復制線程;接著,主數(shù)據(jù)庫模塊5-2在執(zhí)行“寫”操作時,會利用日志寫入線程將SQL語句寫入到主數(shù)據(jù)庫模塊5-2本地的日志文件Master Log中;然后,日志讀取線程讀取主數(shù)據(jù)庫模塊5-2中的Master Log文件,并且將讀取的日志內(nèi)容寫入輔助數(shù)據(jù)庫模塊5-3本地的日志文件Sub Log中;最后,SQL復制線程根據(jù)Sub Log的SQL記錄,將輔助數(shù)據(jù)庫模塊5-3更新,保證數(shù)據(jù)與主數(shù)據(jù)庫模塊5-2同步。