專利名稱:一種地圖顯示系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及地圖顯示領(lǐng)域,尤其涉及一種地圖顯示系統(tǒng)和方法。
背景技術(shù):
隨著社會的不斷進步,互聯(lián)網(wǎng)應(yīng)用的日益廣泛,基于位置的業(yè)務(wù)也在逐漸被用戶 接受并普及。在移動互聯(lián)網(wǎng)的迅速發(fā)展下,目前已經(jīng)實現(xiàn)不同精度的定位應(yīng)用,用戶隨時可 以通過移動終端中的應(yīng)用程序使用GIS的相關(guān)業(yè)務(wù),如定位、公交查詢、路線查詢等功能?,F(xiàn)有的移動互聯(lián)網(wǎng)地圖服務(wù)器端系統(tǒng)中,目前可分為地圖數(shù)據(jù)提供商,和地圖應(yīng) 用提供商。兩者負責的主要業(yè)務(wù)有所不同,地圖數(shù)據(jù)提供商專注于地圖數(shù)據(jù)、地圖引擎的開 發(fā);而地圖應(yīng)用提供商專注于產(chǎn)品應(yīng)用的開發(fā)。現(xiàn)有技術(shù)中,移動互聯(lián)網(wǎng)地圖應(yīng)用系統(tǒng)的實現(xiàn)方案中數(shù)據(jù)獲取方面常見的做法是通過地圖數(shù)據(jù)提供商的接口中獲取數(shù)據(jù)的,然后將 常用的地圖數(shù)據(jù)存放到緩存,將不常用的數(shù)據(jù)存放到數(shù)據(jù)庫中,在通過從緩存和數(shù)據(jù)庫中 獲取數(shù)據(jù)。這種做法存在性能問題,隨著用戶的增加,常用地圖數(shù)據(jù)量會過大,按傳統(tǒng)的緩存 方式存放會出現(xiàn)緩存不夠用的情況,因為根據(jù)不同的操作系統(tǒng),每個進程操作內(nèi)存的大小 是有限止的,一個32位的操作系統(tǒng),一個進程最大可操作為4G內(nèi)存。當緩存不夠時直接訪 問數(shù)據(jù)庫中的地圖數(shù)據(jù),大量的數(shù)據(jù)是可以存放到數(shù)據(jù)庫中的,但是隨著用戶的增加,數(shù)據(jù) 庫的I/O性能會下降,會影響獲取地圖數(shù)據(jù)的速度從而導(dǎo)致訪問速度變慢。網(wǎng)絡(luò)連接方面?zhèn)鹘y(tǒng)的Server/Client實現(xiàn)是基于Thread per request,即服務(wù) 器為每個客戶端請求建立一個線程處理,單獨負責處理一個客戶的請求。比如像Tomcat、 Resin等Web服務(wù)器就是這樣實現(xiàn)的。當然為了減少瞬間峰值問題,服務(wù)器一般都使用線程 池,規(guī)定了同時并發(fā)的最大數(shù)量,避免了線程的無限增長。但這樣存在一個問題當有大量用戶同時通過Socket或HTTP獲取大量圖片,所有 的線程都在傳輸圖片,服務(wù)器的線程池已用完時,即使接下來的請求者僅僅請求一個很小 字節(jié)的圖片,服務(wù)器也無法響應(yīng)了,只有等到線程池中有空閑的線程出現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明實施例的目的在于提出一種地圖顯示系統(tǒng),旨在解決現(xiàn)有技術(shù)地圖顯示系 統(tǒng)的網(wǎng)絡(luò)傳輸速度慢,并發(fā)能力不強,處理請求的響應(yīng)時間長的問題。一種地圖顯示系統(tǒng),所述系統(tǒng)包括網(wǎng)絡(luò)傳輸裝置、地圖協(xié)議裝置、分布式緩存裝置,所述地圖協(xié)議裝置分別于網(wǎng)絡(luò)傳 輸裝置和分布式緩存裝置相連。網(wǎng)絡(luò)傳輸裝置,用于NIO框架適配、數(shù)據(jù)接收與發(fā)送、數(shù)據(jù)加解碼;地圖協(xié)議裝置,與所述網(wǎng)絡(luò)傳輸裝置相連接,用于處理協(xié)議的解析和組裝、協(xié)議的 派發(fā)、協(xié)議邏輯處理、鍵值生成;
分布式緩存裝置,與所述地圖協(xié)議裝置相連接,用于存放地圖數(shù)據(jù)的緩存組、緩存 分區(qū)、緩存?zhèn)浞?、緩存還原。本發(fā)明實施例的另一目的在于提出一種地圖顯示方法,所述方法包括根據(jù)XML文件配置支持的NIO框架,根據(jù)所述框架實現(xiàn)了 Socket和HTTP ;接收來自客戶端的網(wǎng)絡(luò)請求,發(fā)送響應(yīng)數(shù)據(jù)給客戶端,并對傳輸?shù)臄?shù)據(jù)進行加解 碼;接收來自網(wǎng)絡(luò)傳輸過來的數(shù)據(jù),并對所述數(shù)據(jù)進行協(xié)議解析、業(yè)務(wù)邏輯處理、生成 鍵值和訪問緩存接口,在完成業(yè)務(wù)邏輯處理后將返回的數(shù)據(jù)進行協(xié)議組裝;根據(jù)緩存接口的訪問對緩存分區(qū)文件劃分的區(qū)域緩存進訪問。本發(fā)明實施例的另一目的在于提出一種網(wǎng)絡(luò)傳輸裝置,所述網(wǎng)絡(luò)傳輸裝置包括NIO框架適配模塊,用于根據(jù)抽象類定義抽象方法,通過擴展該抽象類和配置相應(yīng) 屬性文件的方式,實現(xiàn)了 NIO框架的適配;網(wǎng)絡(luò)協(xié)議支持模塊,與所述NIO框架適配模塊相連接,用于支持移動終端的網(wǎng)絡(luò) 協(xié)議;數(shù)據(jù)收接模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于接收網(wǎng)絡(luò)協(xié)議支持模塊,傳 送過來的數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于將協(xié)議加解碼傳過來的數(shù) 據(jù)發(fā)送給網(wǎng)絡(luò)協(xié)議支持模塊;協(xié)議加解碼模塊,與所述數(shù)據(jù)發(fā)送模塊和數(shù)據(jù)接收模塊相連接,用于將數(shù)據(jù)接收 模塊傳輸過來的數(shù)據(jù)進行解碼后發(fā)送給協(xié)議解析模塊,接收協(xié)議組裝模塊發(fā)送的數(shù)據(jù)并進 行加碼后發(fā)送給數(shù)據(jù)發(fā)送模塊。本發(fā)明實施例的另一目的在于提出一種地圖協(xié)議裝置,所述地圖協(xié)議裝置包括協(xié)議解析模塊,用于將接受到的網(wǎng)絡(luò)數(shù)據(jù)按照預(yù)定格式進行協(xié)議解析,并將解析 后的數(shù)據(jù)發(fā)送到業(yè)務(wù)邏輯處理模塊;其中所述預(yù)定格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議相 關(guān)屬性+請求的數(shù)據(jù)包內(nèi)容”;協(xié)議組裝模塊,用于組裝來自業(yè)務(wù)邏輯處理模塊的響應(yīng)數(shù)據(jù),將所述響應(yīng)數(shù)據(jù)與 協(xié)議頭進行組裝,并發(fā)送組裝后的協(xié)議包;其中所述組裝格式為“數(shù)據(jù)包長度+協(xié)議號+ 協(xié)議相關(guān)屬性+響應(yīng)的數(shù)據(jù)包內(nèi)容”;業(yè)務(wù)邏輯處理模塊,與協(xié)議組裝模塊相連接,用于將解析后的數(shù)據(jù)派發(fā)到相應(yīng)的 協(xié)議邏輯處理功能上;鍵值組裝模塊,與所述業(yè)務(wù)邏輯處理模塊相連接,用于當業(yè)務(wù)邏輯處理模塊處理 數(shù)據(jù)需要獲取非實時數(shù)據(jù)時,生成相應(yīng)的鍵值,通過該鍵值作為訪問緩存的參數(shù);所述生成 相應(yīng)的鍵值的格式分為兩種一種是"鍵值類型+協(xié)議相關(guān)屬性",另一種是"鍵值類型+ 縮放級別+坐標偏移量";緩存接口模塊,與所述鍵值組裝模塊相連接,用與作為訪問分布式緩存的引用句 柄,所述句柄的初始化根據(jù)讀取緩存分區(qū)模塊的配置而生成,所述緩存接口模塊中包含一 組緩存引用句柄,每個引用句柄與緩存組模塊中的區(qū)域緩存子模塊相連接;日志模塊,與所述的地圖協(xié)議裝置中所有模塊相連接,用于記錄請求日志,邏輯性 處理日志和緩存訪問日志,方便跟蹤調(diào)試所述地圖協(xié)議裝置;
本發(fā)明實施例的另一目的在于提出一種分布式緩存裝置,所述分布式緩存裝置包 括緩存分區(qū)模塊,用于為緩存接口功能提供初始化參數(shù),以及根據(jù)緩存類型,縮放級 別,坐標偏移量將緩存接口連接到不同的緩存組模塊中的區(qū)域緩存子模塊;緩存模塊組,與所述緩存分區(qū)模塊相連接,用于提供統(tǒng)一的緩存訪問接口,使用 Telnet協(xié)議作為基礎(chǔ)協(xié)議,利用內(nèi)存作為緩存,通過支持32/64位操作系統(tǒng)最大可利用內(nèi) 存不受物理內(nèi)存限制,此模塊中包括多個區(qū)域緩存子模塊;定時備份模塊,與所述緩存模塊組相連接,用于根據(jù)定時任務(wù),定時將緩存模塊組 中的多個區(qū)域緩存子模塊的緩存數(shù)據(jù)持久化保存到數(shù)據(jù)庫中;數(shù)據(jù)還原模塊,與所述緩存模塊組相連接,用于將備份數(shù)據(jù)還原到緩存模塊組中 的多個區(qū)域緩存子模塊中。本發(fā)明實施例的另一目的在于提出一種網(wǎng)絡(luò)傳輸方法,所述方法包括根據(jù)XML 文件配置支持的NIO框架;接收用戶請求,根據(jù)用戶訪問的端口區(qū)分是HTTP協(xié)議還是Socket協(xié)議;根據(jù)不同 的協(xié)議調(diào)用請求數(shù)據(jù)的相應(yīng)的回調(diào)方法,同時將所述請求數(shù)據(jù)以參數(shù)的方式傳入所述相應(yīng) 的回調(diào)方法,調(diào)用數(shù)據(jù)響應(yīng)方法,并發(fā)送所述數(shù)據(jù)響應(yīng)方法傳回的響應(yīng)數(shù)據(jù);使過濾器機制對所述請求數(shù)據(jù)與所述響應(yīng)數(shù)據(jù)進行加解碼。本發(fā)明實施例的另一目的在于提出一種地圖協(xié)議方法,所述方法包括將用戶的請求數(shù)據(jù)以自定義協(xié)議的結(jié)構(gòu)進行解析;對解析后的自定義協(xié)議中的協(xié)議號進行協(xié)議劃分,并派發(fā)到相應(yīng)的地圖處理邏輯 方法中,再根據(jù)具體的請求數(shù)據(jù)進行相應(yīng)的邏輯處理;生成緩存鍵值,獲取緩存集合接口句柄,調(diào)用該句柄獲取緩存接口方法,同時將所 述緩存鍵值傳入,分析所述緩存鍵值是否在有效范圍內(nèi),如在有效范圍內(nèi)則返回相應(yīng)的緩存接口對象,通過所述緩存接口對象獲取緩存數(shù) 據(jù);如果所述緩存鍵值不在有效范圍內(nèi)或獲取緩存數(shù)據(jù)失敗,則訪問第三方數(shù)據(jù)口來 獲取數(shù)據(jù);將返回的數(shù)據(jù)以自定義協(xié)議的結(jié)構(gòu)進行組裝并返回。本發(fā)明實施例的另一目的在于提出一種分布式緩存方法,所述方法包括配置緩存分區(qū)文件,將緩存鍵值以范圍的方式配置到分區(qū)文件中;接收緩存接口請求,根據(jù)緩存分區(qū)配置,訪問相應(yīng)的緩存服務(wù)器,獲取數(shù)據(jù);啟動定時任務(wù),將緩存中的數(shù)據(jù)備份到數(shù)據(jù)庫中,然后將數(shù)據(jù)庫定時備份;批量還原數(shù)據(jù)到指定的緩存服務(wù)器列表中;訪問第三方接口,生成緩存數(shù)據(jù),根據(jù)緩存分區(qū)配置,將數(shù)據(jù)存放到相應(yīng)的緩存服 務(wù)器中。本發(fā)明的有益效果本發(fā)明通過實現(xiàn)現(xiàn)有NIO框架,加快了網(wǎng)絡(luò)傳輸速度并且解 決了網(wǎng)絡(luò)并發(fā)問題,為系統(tǒng)提供了可伸縮性;通過實現(xiàn)自定義協(xié)議,精簡了請求/響應(yīng)的數(shù) 據(jù)包更加快了請求響應(yīng)的速度;充分利用緩存的特性,數(shù)據(jù)存儲結(jié)構(gòu)是以緩存為主,所有數(shù) 據(jù)全部放到分布式緩存中,從而加快了處理請求的響應(yīng)時間。
圖1是本發(fā)明實施例一種地圖顯示服務(wù)器系統(tǒng)結(jié)構(gòu)圖;圖2是本發(fā)明實施例一種地圖顯示服務(wù)器詳細系統(tǒng)結(jié)構(gòu)圖;圖3是本發(fā)明實施例網(wǎng)絡(luò)傳輸裝置的系統(tǒng)結(jié)構(gòu)示意圖;圖4是本發(fā)明實施例地圖協(xié)議裝置的系統(tǒng)結(jié)構(gòu)示意圖;圖5是本發(fā)明實施例分布式緩存裝置的系統(tǒng)結(jié)構(gòu)示意圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖和實施例,對 本發(fā)明進行進一步詳細說明,為了便于說明,僅示出了與本發(fā)明實施例相關(guān)的部分。應(yīng)當理 解,此處所描寫的具體實施例,僅僅用于解釋本發(fā)明,并不用以限制本發(fā)明。本發(fā)明對傳統(tǒng)的地圖應(yīng)用服務(wù)端系統(tǒng)的網(wǎng)絡(luò)模塊、邏輯處理模塊、數(shù)據(jù)存儲模塊 進行了重新的設(shè)計與優(yōu)化。通過實現(xiàn)現(xiàn)有NIO框架,加快了網(wǎng)絡(luò)傳輸速度并且解決了網(wǎng)絡(luò) 并發(fā)問題,同時支持簡單的擴展和配置就可以實現(xiàn)適配現(xiàn)有優(yōu)秀的NIO框架,為系統(tǒng)提供 了可伸縮性;通過實現(xiàn)自定義協(xié)議,精簡了請求/響應(yīng)的數(shù)據(jù)包,去除其它協(xié)議所帶來的多 余屬性,起到了給數(shù)據(jù)包減肥的做用,規(guī)范地圖數(shù)據(jù)請求協(xié)議規(guī)格,更加快了請求響應(yīng)的速 度;通過調(diào)整數(shù)據(jù)存儲結(jié)構(gòu),使用高速分布式緩存服務(wù)器組,將根據(jù)地圖數(shù)據(jù)的參數(shù)生成相 應(yīng)的鍵值,根據(jù)該鍵值劃分緩存分區(qū),分別值數(shù)據(jù)存放到不同的緩存服務(wù)器中,以加快獲取 地圖數(shù)據(jù)的速度,同時通過緩存定時備份與還原機制,實現(xiàn)了緩存數(shù)據(jù)持久化,有效的解決 了緩存數(shù)據(jù)丟失等問題,充分利用緩存的特性,從而加快了處理請求的響應(yīng)時間。調(diào)整后的 數(shù)據(jù)存儲結(jié)構(gòu)是以緩存為主,所有數(shù)據(jù)全部放到分布式緩存中。圖1、圖2是本發(fā)明實施例一種地圖顯示服務(wù)器系統(tǒng)結(jié)構(gòu)圖,所述服務(wù)器包括網(wǎng)絡(luò)傳輸裝置、地圖協(xié)議裝置、分布式緩存裝置,所述地圖協(xié)議裝置分別于網(wǎng)絡(luò)傳 輸裝置和分布式緩存裝置相連。網(wǎng)絡(luò)傳輸裝置,用于NIO框架適配、數(shù)據(jù)接收與發(fā)送、數(shù)據(jù)加解碼;如圖3所述為網(wǎng) 絡(luò)傳輸裝置的系統(tǒng)結(jié)構(gòu)圖,所述網(wǎng)絡(luò)傳輸裝置包括NIO框架適配模塊,用于根據(jù)抽象類定義抽象方法,通過擴展該抽象類和配置相應(yīng) 屬性文件的方式,實現(xiàn)了 NIO框架的適配;網(wǎng)絡(luò)協(xié)議支持模塊,與所述NIO框架適配模塊相連接,用于支持移動終端的網(wǎng)絡(luò) 協(xié)議;其中所述網(wǎng)絡(luò)協(xié)議包括Socket、HTTP1. 0/HTTP1. 1等移動終端流行的網(wǎng)絡(luò)協(xié)議數(shù)據(jù)收接模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于接收網(wǎng)絡(luò)協(xié)議支持模塊,傳 送過來的數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于將協(xié)議加解碼傳過來的數(shù) 據(jù)發(fā)送給網(wǎng)絡(luò)協(xié)議支持模塊;協(xié)議加解碼模塊,與所述數(shù)據(jù)發(fā)送模塊和數(shù)據(jù)接收模塊相連接,用于將數(shù)據(jù)接收 模塊傳輸過來的數(shù)據(jù)進行解碼后發(fā)送給協(xié)議解析模塊,接收協(xié)議組裝模塊發(fā)送的數(shù)據(jù)并進 行加碼后發(fā)送給數(shù)據(jù)發(fā)送模塊。地圖協(xié)議裝置,與所述網(wǎng)絡(luò)傳輸裝置相連接,用于處理協(xié)議的解析和組裝、協(xié)議的
9派發(fā)、協(xié)議邏輯處理、鍵值生成;如圖4所述為地圖協(xié)議裝置的系統(tǒng)結(jié)構(gòu)圖,所述地圖協(xié)議裝置包括協(xié)議解析模塊,與所述協(xié)議加解碼模塊相和日志模塊連接,用于解析網(wǎng)絡(luò)傳輸裝 置中的協(xié)議加解碼模塊發(fā)送的數(shù)據(jù),根據(jù)預(yù)定格式進行協(xié)議解析,并將解析后的數(shù)據(jù)發(fā)送 到業(yè)務(wù)邏輯處理模塊;其中所述預(yù)定格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議相關(guān)屬性+請求 的數(shù)據(jù)包內(nèi)容”;協(xié)議組裝模塊,與所述協(xié)議加解碼模塊和日志模塊相連接,用于組裝來自業(yè)務(wù)邏 輯處理模塊的響應(yīng)數(shù)據(jù),將所述響應(yīng)數(shù)據(jù)與協(xié)議頭進行組裝,并將組裝后的協(xié)議包發(fā)送到 網(wǎng)絡(luò)傳輸裝置的協(xié)議加解碼模塊;其中所述組裝格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議相關(guān) 屬性+響應(yīng)的數(shù)據(jù)包內(nèi)容”;業(yè)務(wù)邏輯處理模塊,與所述協(xié)議解析模塊、協(xié)議組裝模塊相連接,用于將協(xié)議解析 模塊解析后的數(shù)據(jù)派發(fā)到相應(yīng)的協(xié)議邏輯處理功能上;其協(xié)議邏輯處理具體功能包括(1)取地圖(2)取實時路況地圖信息(3)獲取截圖(4)發(fā)送地圖彩信(5)地圖糾錯(6)搜索信息(7)搜索第三方數(shù)據(jù)信息(8)基站定位(9)通過GPS模塊實際經(jīng)緯度獲取偏移量(10)駕車路線查詢(11)關(guān)鍵字查詢公交線路名稱(12)根據(jù)公交路線名稱查詢公交線路信息(13)根據(jù)經(jīng)緯度及城市代碼查詢大城市公交換乘(14)根據(jù)當前中心坐標獲取不同比例下相對于中心經(jīng)緯度的偏移量(15)心跳包(16)地址解析服務(wù)(17)得到地理位置經(jīng)緯度、城市名稱等;鍵值組裝模塊,與所述業(yè)務(wù)邏輯處理模塊相連接,用于當業(yè)務(wù)邏輯處理模塊處理 數(shù)據(jù)需要獲取非實時數(shù)據(jù)時,生成相應(yīng)的鍵值,通過該鍵值作為訪問緩存的參數(shù);所述生成 相應(yīng)的鍵值的格式分為兩種一種是"鍵值類型+協(xié)議相關(guān)屬性"、另一種是"鍵值類型+ 縮放級別+坐標偏移量"。緩存接口模塊,與所述鍵值組裝模塊相連接,用與作為訪問分布式緩存裝置的引 用句柄,所述句柄的初始化根據(jù)讀取緩存分區(qū)模塊的配置而生成,所述緩存接口模塊中包 含一組緩存引用句柄,每個引用句柄與緩存組模塊中的區(qū)域緩存子模塊相連接;日志模塊,與所述的地圖協(xié)議裝置中所有模塊相連接,用于記錄請求日志,邏輯性 處理日志和緩存訪問日志,方便跟蹤調(diào)試所述地圖協(xié)議裝置;分布式緩存裝置,與所述地圖協(xié)議裝置相連接,用于存放地圖數(shù)據(jù)的緩存組、緩存分區(qū)、緩存?zhèn)浞?、緩存還原。如圖5所述為分布式緩存裝置的系統(tǒng)結(jié)構(gòu)圖,所述分布式緩存裝置包括緩存分區(qū)模塊,與所述緩存接口模塊相連接,用于為緩存接口功能提供初始化參 數(shù),以及根據(jù)緩存類型,縮放級別,坐標偏移量將緩存接口連接到不同的緩存組模塊中的區(qū) 域緩存子模塊;緩存模塊組,與所述緩存分區(qū)模塊相連接,用于提供統(tǒng)一的緩存訪問接口,使用 Telnet協(xié)議作為基礎(chǔ)協(xié)議,利用內(nèi)存作為緩存,通過支持32/64位操作系統(tǒng)最大可利用內(nèi) 存不受物理內(nèi)存限制,此模塊中還包括多個區(qū)域緩存子模塊;定時備份模塊,與所述緩存模塊組相連接,此模塊為自動觸發(fā),用于根據(jù)定時任 務(wù),定時將緩存模塊組中的多個區(qū)域緩存子模塊的緩存數(shù)據(jù)持久化保存到數(shù)據(jù)庫中;數(shù)據(jù)還原模塊,與所述緩存模塊組相連接,此模塊為手動觸發(fā),用于將備份數(shù)據(jù)還 原到緩存模塊組中的多個區(qū)域緩存子模塊中。本發(fā)明實施例對傳統(tǒng)的地圖應(yīng)用服務(wù)端系統(tǒng)的網(wǎng)絡(luò)模塊、邏輯處理模塊、數(shù)據(jù)存 儲模塊進行了重新的設(shè)計與優(yōu)化。通過實現(xiàn)現(xiàn)有Nio框架,加快了網(wǎng)絡(luò)傳輸速度并且解決 了網(wǎng)絡(luò)并發(fā)問題,同時支持簡單的擴展和配置就可以實現(xiàn)適配現(xiàn)有優(yōu)秀的NIO框架,為系 統(tǒng)提供了可伸縮性;通過實現(xiàn)自定義協(xié)議,精簡了請求/響應(yīng)的數(shù)據(jù)包,去除其它協(xié)議所帶 來的多余屬性,起到了給數(shù)據(jù)包減肥的做用,規(guī)范地圖數(shù)據(jù)請求協(xié)議規(guī)格,更加快了請求響 應(yīng)的速度;通過調(diào)整數(shù)據(jù)存儲結(jié)構(gòu),使用高速分布式緩存服務(wù)器組,將根據(jù)地圖數(shù)據(jù)的參數(shù) 生成相應(yīng)的鍵值,根據(jù)該鍵值劃分緩存分區(qū),分別值數(shù)據(jù)存放到不同的緩存服務(wù)器中,以加 快獲取地圖數(shù)據(jù)的速度,同時通過緩存定時備份與還原機制,實現(xiàn)了緩存數(shù)據(jù)持久化,有效 的解決了緩存數(shù)據(jù)丟失等問題,充分利用緩存的特性,從而加快了處理請求的響應(yīng)時間。調(diào) 整后的數(shù)據(jù)存儲結(jié)構(gòu)是以緩存為主,所有數(shù)據(jù)全部放到分布式緩存中。以下為本發(fā)明實施例一種地圖顯示方法的流程步驟步驟1.根據(jù)XML文件配置支持的NIO框架,根據(jù)所述框架實現(xiàn)了 Socket和HTTP ; 接收來自客戶端的網(wǎng)絡(luò)請求,發(fā)送響應(yīng)數(shù)據(jù)給客戶端,并對傳輸?shù)臄?shù)據(jù)進行加解碼。步驟2.接收來自網(wǎng)絡(luò)傳輸過來的數(shù)據(jù),并對所述數(shù)據(jù)進行協(xié)議解析、業(yè)務(wù)邏輯處 理、生成鍵值和訪問緩存接口,在完成業(yè)務(wù)邏輯處理后將返回的數(shù)據(jù)進行協(xié)議組裝。步驟3.根據(jù)緩存接口的訪問對緩存分區(qū)文件劃分的區(qū)域緩存進訪問。以下為本發(fā)明實施例一種網(wǎng)絡(luò)傳輸方法的流程步驟步驟1,根據(jù)XML文件配置支持的NIO框架。步驟2,接收用戶請求,根據(jù)用戶訪問的端口區(qū)分是HTTP還是Socket。步驟3,根據(jù)不同的協(xié)議調(diào)用請求數(shù)據(jù)的相應(yīng)的回調(diào)方法,同時將所述請求數(shù)據(jù)以 參數(shù)的方式傳入所述相應(yīng)的回調(diào)方法,調(diào)用數(shù)據(jù)響應(yīng)方法,并發(fā)送所述數(shù)據(jù)響應(yīng)方法傳回 的響應(yīng)數(shù)據(jù)。步驟4,使過濾器機制對所述請求數(shù)據(jù)與所述響應(yīng)數(shù)據(jù)進行加解碼。本發(fā)明實施例通過實現(xiàn)現(xiàn)有NIO框架,加快了網(wǎng)絡(luò)傳輸速度并且解決了網(wǎng)絡(luò)并發(fā) 問題,同時支持簡單的擴展和配置就可以實現(xiàn)適配現(xiàn)有優(yōu)秀的NIO框架,為系統(tǒng)提供了可 伸縮性。以下為本發(fā)明實施例地圖協(xié)議方法的流程步驟
步驟1.將用戶的請求數(shù)據(jù)以自定義協(xié)議的結(jié)構(gòu)進行解析。其中所述自定義協(xié)議的格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議相關(guān)屬性+請求的數(shù) 據(jù)包內(nèi)容”;步驟2.對解析后的自定義協(xié)議中的協(xié)議號進行協(xié)議劃分,并派發(fā)到相應(yīng)的地圖 處理邏輯方法中,再根據(jù)具體的請求數(shù)據(jù)進行相應(yīng)的邏輯處理。步驟3.生成緩存鍵值,獲取緩存集合接口句柄,調(diào)用該句柄獲取緩存接口方法, 同時將所述緩存鍵值傳入,分析所述緩存鍵值是否在有效范圍內(nèi),如在有效范圍內(nèi)則返回相應(yīng)的緩存接口對象,通過所述緩存接口對象獲取緩存數(shù) 據(jù);如果所述緩存鍵值不在有效范圍內(nèi)或獲取緩存數(shù)據(jù)失敗,則訪問第三方數(shù)據(jù)口來 獲取數(shù)據(jù)。其中緩存鍵值在有效范圍內(nèi)指的是需要訪問的數(shù)據(jù)在緩存分區(qū)模塊內(nèi)。步驟4.將返回的數(shù)據(jù)以自定義協(xié)議的結(jié)構(gòu)進行組裝并返回。本發(fā)明實施例通過實現(xiàn)自定義協(xié)議,精簡了請求/響應(yīng)的數(shù)據(jù)包,去除其它協(xié)議 所帶來的多余屬性,起到了給數(shù)據(jù)包減肥的做用,規(guī)范地圖數(shù)據(jù)請求協(xié)議規(guī)格,更加快了請 求響應(yīng)的速度。以下為本發(fā)明實施例分布式緩存方法的流程步驟步驟1.配置緩存分區(qū)文件,將緩存鍵值以范圍的方式配置到分區(qū)文件中,例如 一組緩存鍵值范圍對應(yīng)到一個緩存服務(wù)器等。步驟2.接收緩存接口請求,根據(jù)緩存分區(qū)配置,訪問相應(yīng)的緩存服務(wù)器,獲取數(shù) 據(jù)。步驟3.啟動定時任務(wù),將緩存中的數(shù)據(jù)備份到數(shù)據(jù)庫中,然后將數(shù)據(jù)庫定時備 份。步驟4.批量還原數(shù)據(jù)到指定的緩存服務(wù)器列表中。步驟5.訪問第三方接口,生成緩存數(shù)據(jù),根據(jù)緩存分區(qū)配置,將數(shù)據(jù)存放到相應(yīng) 的緩存服務(wù)器中。本發(fā)明實施例通過調(diào)整數(shù)據(jù)存儲結(jié)構(gòu),使用高速分布式緩存服務(wù)器組,將根據(jù)地 圖數(shù)據(jù)的參數(shù)生成相應(yīng)的鍵值,根據(jù)該鍵值劃分緩存分區(qū),分別值數(shù)據(jù)存放到不同的緩存 服務(wù)器中,以加快獲取地圖數(shù)據(jù)的速度,同時通過緩存定時備份與還原機制,實現(xiàn)了緩存數(shù) 據(jù)持久化,有效的解決了緩存數(shù)據(jù)丟失等問題,充分利用緩存的特性,從而加快了處理請求 的響應(yīng)時間。調(diào)整后的數(shù)據(jù)存儲結(jié)構(gòu)是以緩存為主,所有數(shù)據(jù)全部放到分布式緩存中。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
一種地圖顯示系統(tǒng),其特征在于,所述系統(tǒng)包括網(wǎng)絡(luò)傳輸裝置、地圖協(xié)議裝置、分布式緩存裝置,所述地圖協(xié)議裝置分別于網(wǎng)絡(luò)傳輸裝置和分布式緩存裝置相連。網(wǎng)絡(luò)傳輸裝置,用于NIO框架適配、數(shù)據(jù)接收與發(fā)送、數(shù)據(jù)加解碼;地圖協(xié)議裝置,與所述網(wǎng)絡(luò)傳輸裝置相連接,用于處理協(xié)議的解析和組裝、協(xié)議的派發(fā)、協(xié)議邏輯處理、鍵值生成;分布式緩存裝置,與所述地圖協(xié)議裝置相連接,用于存放地圖數(shù)據(jù)的緩存組、緩存分區(qū)、緩存?zhèn)浞?、緩存還原。
2.如權(quán)利要求1所述的地圖顯示系統(tǒng),其特征在于, 所述網(wǎng)絡(luò)傳輸裝置包括NIO框架適配模塊,用于根據(jù)抽象類定義抽象方法,通過擴展該抽象類和配置相應(yīng)屬性 文件的方式,實現(xiàn)了 NIO框架的適配;網(wǎng)絡(luò)協(xié)議支持模塊,與所述NIO框架適配模塊相連接,用于支持移動終端的網(wǎng)絡(luò)協(xié)議; 數(shù)據(jù)收接模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于接收網(wǎng)絡(luò)協(xié)議支持模塊,傳送過 來的數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于將協(xié)議加解碼傳過來的數(shù)據(jù)發(fā) 送給網(wǎng)絡(luò)協(xié)議支持模塊;協(xié)議加解碼模塊,與所述數(shù)據(jù)發(fā)送模塊和數(shù)據(jù)接收模塊相連接,用于將數(shù)據(jù)接收模塊 傳輸過來的數(shù)據(jù)進行解碼后發(fā)送給協(xié)議解析模塊,接收協(xié)議組裝模塊發(fā)送的數(shù)據(jù)并進行加 碼后發(fā)送給數(shù)據(jù)發(fā)送模塊。 所述地圖協(xié)議裝置包括協(xié)議解析模塊,與所述協(xié)議加解碼模塊相和日志模塊連接,用于解析網(wǎng)絡(luò)傳輸裝置中 的協(xié)議加解碼模塊發(fā)送的數(shù)據(jù),根據(jù)預(yù)定格式進行協(xié)議解析,并將解析后的數(shù)據(jù)發(fā)送到業(yè) 務(wù)邏輯處理模塊;其中所述預(yù)定格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議相關(guān)屬性+請求的數(shù) 據(jù)包內(nèi)容”;協(xié)議組裝模塊,與所述協(xié)議加解碼模塊和日志模塊相連接,用于組裝來自業(yè)務(wù)邏輯處 理模塊的響應(yīng)數(shù)據(jù),將所述響應(yīng)數(shù)據(jù)與協(xié)議頭進行組裝,并將組裝后的協(xié)議包發(fā)送到網(wǎng)絡(luò) 傳輸裝置的協(xié)議加解碼模塊;其中所述組裝格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議相關(guān)屬性 +響應(yīng)的數(shù)據(jù)包內(nèi)容”;業(yè)務(wù)邏輯處理模塊,與所述協(xié)議解析模塊、協(xié)議組裝模塊相連接,用于將解析后的數(shù)據(jù) 派發(fā)到相應(yīng)的協(xié)議邏輯處理功能上;鍵值組裝模塊,與所述業(yè)務(wù)邏輯處理模塊相連接,用于當業(yè)務(wù)邏輯處理模塊處理數(shù)據(jù) 需要獲取非實時數(shù)據(jù)時,生成相應(yīng)的鍵值,通過該鍵值作為訪問緩存的參數(shù);所述生成相應(yīng) 的鍵值的格式分為兩種一種是"鍵值類型+協(xié)議相關(guān)屬性"、另一種是"鍵值類型+縮放 級別+坐標偏移量〃;緩存接口模塊,與所述鍵值組裝模塊相連接,用與作為訪問分布式緩存裝置的引用句 柄,所述句柄的初始化根據(jù)讀取緩存分區(qū)模塊的配置而生成,所述緩存接口模塊中包含一 組緩存引用句柄,每個引用句柄與緩存組模塊中的區(qū)域緩存子模塊相連接;日志模塊,與所述的地圖協(xié)議裝置中所有模塊相連接,用于記錄請求日志,邏輯性處理日志和緩存訪問日志,方便跟蹤調(diào)試所述地圖協(xié)議裝置; 所述分布式緩存裝置包括緩存分區(qū)模塊,與所述緩存接口模塊相連接,用于為緩存接口功能提供初始化參數(shù),以 及根據(jù)緩存類型,縮放級別,坐標偏移量將緩存接口連接到不同的緩存組模塊中的區(qū)域緩 存子模塊;緩存模塊組,與所述緩存分區(qū)模塊相連接,用于提供統(tǒng)一的緩存訪問接口,使用Telnet 協(xié)議作為基礎(chǔ)協(xié)議,利用內(nèi)存作為緩存,通過支持32/64位操作系統(tǒng)最大可利用內(nèi)存不受 物理內(nèi)存限制,此模塊中還包括多個區(qū)域緩存子模塊;定時備份模塊,與所述緩存模塊組相連接,此模塊為自動觸發(fā),用于根據(jù)定時任務(wù),定 時將緩存模塊組中的多個區(qū)域緩存子模塊的緩存數(shù)據(jù)持久化保存到數(shù)據(jù)庫中;數(shù)據(jù)還原模塊,與所述緩存模塊組相連接,此模塊為手動觸發(fā),用于將備份數(shù)據(jù)還原到 緩存模塊組中的多個區(qū)域緩存子模塊中。
3.—種網(wǎng)絡(luò)傳輸裝置,其特征在于,所述網(wǎng)絡(luò)傳輸裝置包括NIO框架適配模塊,用于根據(jù)抽象類定義抽象方法,通過擴展該抽象類和配置相應(yīng)屬性 文件的方式,實現(xiàn)了 NIO框架的適配;網(wǎng)絡(luò)協(xié)議支持模塊,與所述NIO框架適配模塊相連接,用于支持移動終端的網(wǎng)絡(luò)協(xié)議; 數(shù)據(jù)收接模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于接收網(wǎng)絡(luò)協(xié)議支持模塊,傳送過 來的數(shù)據(jù);數(shù)據(jù)發(fā)送模塊,與所述網(wǎng)絡(luò)協(xié)議支持模塊相連接,用于將協(xié)議加解碼傳過來的數(shù)據(jù)發(fā) 送給網(wǎng)絡(luò)協(xié)議支持模塊;協(xié)議加解碼模塊,與所述數(shù)據(jù)發(fā)送模塊和數(shù)據(jù)接收模塊相連接,用于將數(shù)據(jù)接收模塊 傳輸過來的數(shù)據(jù)進行解碼后發(fā)送給協(xié)議解析模塊,接收協(xié)議組裝模塊發(fā)送的數(shù)據(jù)并進行加 碼后發(fā)送給數(shù)據(jù)發(fā)送模塊。
4.一種地圖協(xié)議裝置,其特征在于,所述地圖協(xié)議裝置包括協(xié)議解析模塊,用于將接受到的網(wǎng)絡(luò)數(shù)據(jù)按照預(yù)定格式進行協(xié)議解析,并將解析后的 數(shù)據(jù)發(fā)送到業(yè)務(wù)邏輯處理模塊;其中所述預(yù)定格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議相關(guān)屬 性+請求的數(shù)據(jù)包內(nèi)容”;協(xié)議組裝模塊,用于組裝來自業(yè)務(wù)邏輯處理模塊的響應(yīng)數(shù)據(jù),將所述響應(yīng)數(shù)據(jù)與協(xié)議 頭進行組裝,并發(fā)送組裝后的協(xié)議包;其中所述組裝格式為“數(shù)據(jù)包長度+協(xié)議號+協(xié)議 相關(guān)屬性+響應(yīng)的數(shù)據(jù)包內(nèi)容”;業(yè)務(wù)邏輯處理模塊,與協(xié)議組裝模塊相連接,用于將解析后的數(shù)據(jù)派發(fā)到相應(yīng)的協(xié)議 邏輯處理功能上;鍵值組裝模塊,與所述業(yè)務(wù)邏輯處理模塊相連接,用于當業(yè)務(wù)邏輯處理模塊處理數(shù)據(jù) 需要獲取非實時數(shù)據(jù)時,生成相應(yīng)的鍵值,通過該鍵值作為訪問緩存的參數(shù);所述生成相應(yīng) 的鍵值的格式分為兩種一種是"鍵值類型+協(xié)議相關(guān)屬性",另一種是"鍵值類型+縮放 級別+坐標偏移量〃;緩存接口模塊,與所述鍵值組裝模塊相連接,用與作為訪問分布式緩存的引用句柄,所 述句柄的初始化根據(jù)讀取緩存分區(qū)模塊的配置而生成,所述緩存接口模塊中包含一組緩存 引用句柄,每個引用句柄與緩存組模塊中的區(qū)域緩存子模塊相連接;日志模塊,與所述的地圖協(xié)議裝置中所有模塊相連接,用于記錄請求日志,邏輯性處理 日志和緩存訪問日志,方便跟蹤調(diào)試所述地圖協(xié)議裝置。
5.一種分布式緩存裝置,其特征在于,所述分布式緩存裝置包括緩存分區(qū)模塊,用于為緩存接口功能提供初始化參數(shù),以及根據(jù)緩存類型,縮放級別, 坐標偏移量將緩存接口連接到不同的緩存組模塊中的區(qū)域緩存子模塊;緩存模塊組,與所述緩存分區(qū)模塊相連接,用于提供統(tǒng)一的緩存訪問接口,使用Telnet 協(xié)議作為基礎(chǔ)協(xié)議,利用內(nèi)存作為緩存,通過支持32/64位操作系統(tǒng)最大可利用內(nèi)存不受 物理內(nèi)存限制,此模塊中包括多個區(qū)域緩存子模塊;定時備份模塊,與所述緩存模塊組相連接,用于根據(jù)定時任務(wù),定時將緩存模塊組中的 多個區(qū)域緩存子模塊的緩存數(shù)據(jù)持久化保存到數(shù)據(jù)庫中;數(shù)據(jù)還原模塊,與所述緩存模塊組相連接,用于將備份數(shù)據(jù)還原到緩存模塊組中的多 個區(qū)域緩存子模塊中。
6.一種網(wǎng)絡(luò)傳輸方法,其特征在于,所述方法包括 根據(jù)XML文件配置支持的NIO框架;接收用戶請求,根據(jù)用戶訪問的端口區(qū)分是HTTP還是Socket ; 根據(jù)不同的協(xié)議調(diào)用請求數(shù)據(jù)的相應(yīng)的回調(diào)方法,同時將所述請求數(shù)據(jù)以參數(shù)的方 式傳入所述相應(yīng)的回調(diào)方法,調(diào)用數(shù)據(jù)響應(yīng)方法,并發(fā)送所述數(shù)據(jù)響應(yīng)方法傳回的響應(yīng)數(shù) 據(jù);使過濾器機制對所述請求數(shù)據(jù)與所述響應(yīng)數(shù)據(jù)進行加解碼。
7.—種地圖協(xié)議方法,其特征在于,所述方法包括 將用戶的請求數(shù)據(jù)以自定義協(xié)議的結(jié)構(gòu)進行解析;對解析后的自定義協(xié)議中的協(xié)議號進行協(xié)議劃分,并派發(fā)到相應(yīng)的地圖處理邏輯方法 中,再根據(jù)具體的請求數(shù)據(jù)進行相應(yīng)的邏輯處理;生成緩存鍵值,獲取緩存集合接口句柄,調(diào)用該句柄獲取緩存接口方法,同時將所述緩 存鍵值傳入,分析所述緩存鍵值是否在有效范圍內(nèi),如在有效范圍內(nèi)則返回相應(yīng)的緩存接口對象,通過所述緩存接口對象獲取緩存數(shù)據(jù); 如果所述緩存鍵值不在有效范圍內(nèi)或獲取緩存數(shù)據(jù)失敗,則訪問第三方數(shù)據(jù)口來獲取 數(shù)據(jù);將返回的數(shù)據(jù)以自定義協(xié)議的結(jié)構(gòu)進行組裝并返回。
8.如圖7所述的地圖協(xié)議方法,其特征在于,所述自定義協(xié)議的格式為“數(shù)據(jù)包長度 +協(xié)議號+協(xié)議相關(guān)屬性+請求的數(shù)據(jù)包內(nèi)容”。
9.一種分布式緩存方法,其特征在于,所述方法包括配置緩存分區(qū)文件,將緩存鍵值以范圍的方式配置到分區(qū)文件中; 接收緩存接口請求,根據(jù)緩存分區(qū)配置,訪問相應(yīng)的緩存服務(wù)器,獲取數(shù)據(jù); 啟動定時任務(wù),將緩存中的數(shù)據(jù)備份到數(shù)據(jù)庫中,然后將數(shù)據(jù)庫定時備份; 批量還原數(shù)據(jù)到指定的緩存服務(wù)器列表中;訪問第三方接口,生成緩存數(shù)據(jù),根據(jù)緩存分區(qū)配置,將數(shù)據(jù)存放到相應(yīng)的緩存服務(wù)器中。
10.一種地圖顯示方法,其特征在于,所述方法包括根據(jù)XML文件配置支持的NIO框架,根據(jù)所述框架實現(xiàn)了 Socket和HTTP ;接收來自客戶端的網(wǎng)絡(luò)請求,發(fā)送響應(yīng)數(shù)據(jù)給客戶端,并對傳輸?shù)臄?shù)據(jù)進行加解碼; 接收來自網(wǎng)絡(luò)傳輸過來的數(shù)據(jù),并對所述數(shù)據(jù)進行協(xié)議解析、業(yè)務(wù)邏輯處理、生成鍵值 和訪問緩存接口,在完成業(yè)務(wù)邏輯處理后將返回的數(shù)據(jù)進行協(xié)議組裝; 根據(jù)緩存接口的訪問對緩存分區(qū)文件劃分的區(qū)域緩存進訪問。
全文摘要
本發(fā)明公開一種地圖顯示系統(tǒng),所述系統(tǒng)包括網(wǎng)絡(luò)傳輸裝置,用于NIO框架適配、數(shù)據(jù)接收與發(fā)送、數(shù)據(jù)加解碼;地圖協(xié)議裝置,與所述網(wǎng)絡(luò)傳輸裝置相連接,用于處理協(xié)議的解析和組裝、協(xié)議的派發(fā)、協(xié)議邏輯處理、鍵值生成;分布式緩存裝置,與所述地圖協(xié)議裝置相連接,用于存放地圖數(shù)據(jù)的緩存組、緩存分區(qū)、緩存?zhèn)浞?、緩存還原。本發(fā)明通過適配現(xiàn)有NIO框架,加快了網(wǎng)絡(luò)傳輸速度并且解決了網(wǎng)絡(luò)并發(fā)問題,為系統(tǒng)提供了可伸縮性;通過實現(xiàn)自定義協(xié)議,精簡了請求/響應(yīng)的數(shù)據(jù)包更加快了請求響應(yīng)的速度;充分利用緩存的特性,數(shù)據(jù)存儲結(jié)構(gòu)是以緩存為主,所有數(shù)據(jù)全部放到分布式緩存中,從而加快了處理請求的響應(yīng)時間。
文檔編號G06F17/30GK101969456SQ20101028547
公開日2011年2月9日 申請日期2010年9月17日 優(yōu)先權(quán)日2010年9月17日
發(fā)明者李春雨 申請人:深圳市融創(chuàng)天下科技發(fā)展有限公司