一種大規(guī)模上下文管理系統(tǒng)、方法及實現(xiàn)方法
【專利摘要】本發(fā)明提供一種大規(guī)模上下文管理系統(tǒng)、方法及實現(xiàn)方法,該系統(tǒng)包括移動終端和云端兩部分,所述移動終端包括訂閱與配置模塊、統(tǒng)一接口模塊、上下文建模模塊和上下文傳輸模塊;所述云端包括并發(fā)接收模塊、存儲/讀取模塊、上下文聚合模塊和聚合結(jié)果服務(wù)模塊。其中移動終端自主訂閱、收集原始大規(guī)模上下文信息、對原始大規(guī)模上下文信息進行建模、并將建模后的大規(guī)模上下文信息發(fā)送至云端;云端對所接收的大規(guī)模上下文信息進行聚合并向移動云計算應(yīng)用提供該聚合結(jié)果。所述系統(tǒng)和方法解決了收集、聚合與處理大規(guī)模上下文信息缺乏有效、可重用中間件的問題,能夠為移動云計算應(yīng)用開發(fā)人員提供更好的服務(wù)。
【專利說明】一種大規(guī)模上下文管理系統(tǒng)、方法及實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及上下文感知【技術(shù)領(lǐng)域】,特別涉及一種大規(guī)模上下文管理系統(tǒng)、方法及實現(xiàn)方法。
【背景技術(shù)】
[0002]現(xiàn)有的移動終端基本上都攜帶了豐富的傳感器,而且這類移動終端的使用也越來越廣泛,因此可以利用移動終端來收集大規(guī)模的上下文信息(即移動終端能感知到的周圍環(huán)境信息,和移動終端自身的硬件信息、軟件信息)?;谠朴嬎愕拇笠?guī)模上下文管理過程包括:移動終端收集各種大規(guī)模上下文信息,然后將所收集的大規(guī)模上下文信息發(fā)送給云端,云端對接收到的大規(guī)模上下文信息進行處理,為具體的移動應(yīng)用提供大規(guī)模上下文聚合結(jié)果服務(wù),從而為移動用戶和其他用戶提供更好的服務(wù)(云端指為移動終端等用戶提供服務(wù)的云計算系統(tǒng))。因此,面向移動云計算的大規(guī)模上下文管理方法具有重要的意義。
[0003]利用大規(guī)模的上下文信息為用戶提供更好的服務(wù),在學(xué)術(shù)界已有一些相關(guān)的研究成果。力口州大學(xué)洛杉肌分校研究的PEIR (Personal Environme ntal Impact Report)項目通過手機上的GPS傳感器,獲取用戶一天中所處的不同位置,結(jié)合城市中各個地方的空氣質(zhì)量情況,給每個用戶一份實時的個人環(huán)境影響報告;MIT研究的VTrack項目和Nokia、NAVTEQ、加州大學(xué)伯克利分校聯(lián)合研究的Mobile Millennium項目通過司機手機上的GPS傳感器獲得司機所駕駛車輛當(dāng)前所處的位置,進而獲得每一條道路的車輛行駛情況,最終獲得整個城市中各條道路上的實時交通路況。
[0004]然而,現(xiàn)有的項目都是針對特定的應(yīng)用場景,不同項目之間沒有相互可重用的代碼,使得開發(fā)人員在開發(fā)另一個相關(guān)項目的時候需要從頭做起,因為目前還沒有一個有效的、可重用的中間件來支持大規(guī)模上下文信息的收集、聚合與處理過程。
【發(fā)明內(nèi)容】
[0005]為解決上述收集、聚合與處理大規(guī)模上下文信息缺乏有效、可重用中間件的問題,本發(fā)明提供一種大規(guī)模上下文管理系統(tǒng),并且提供基于該系統(tǒng)的大規(guī)模上下文管理系統(tǒng)方法以及該系統(tǒng)的實現(xiàn)方法。
[0006]根據(jù)本發(fā)明一個方面,提供一種大規(guī)模上下文管理系統(tǒng),該系統(tǒng)包括移動終端和云端兩部分,所述移動終端包括訂閱與配置模塊、統(tǒng)一接口模塊、上下文建模模塊和上下文傳輸模塊;所述云端包括并發(fā)接收模塊、存儲/讀取模塊、上下文聚合模塊和聚合結(jié)果服務(wù)模塊;其中
[0007]所述訂閱與配置模塊用于使移動終端自主地收集與移動云計算應(yīng)用需求相關(guān)的大規(guī)模上下文信息,以及配置系統(tǒng)所需的信息。
[0008]所述統(tǒng)一接口模塊用于對移動終端的各種大規(guī)模上下文信息獲取方式進行封裝,對上下文建模模塊提供統(tǒng)一接口。
[0009]所述上下文建模模塊用于對從統(tǒng)一接口模塊獲取的原始大規(guī)模上下文信息進行建模表示,并將建模后的大規(guī)模上下文信息傳遞給上下文傳輸模塊。
[0010]所述上下文傳輸模塊用于將從上下文建模模塊傳遞過來的建模后的大規(guī)模上下文信息發(fā)送至云端的并發(fā)接收模塊。
[0011]所述并發(fā)接收模塊用于接收從所述上下文傳輸模塊發(fā)送過來的建模后的大規(guī)模上下文信息,并且將所接收的大規(guī)模上下文信息存儲到存儲/讀取模塊。
[0012]所述存儲/讀取模塊用于在云端保存所接收的大規(guī)模上下文信息。
[0013]所述上下文聚合模塊用于對所接收的大規(guī)模上下文信息進行聚合。
[0014]所述聚合結(jié)果服務(wù)模塊用于讀取最新的聚合結(jié)果,并且向移動云計算應(yīng)用提供該聚合結(jié)果。
[0015]在本發(fā)明一個實施例中,所述移動終端還包括擴展接口,用于在沒有得到所述統(tǒng)一接口模塊中相應(yīng)接口支持的情況下,提供給移動云計算應(yīng)用的開發(fā)人員來獲取所需求的大規(guī)模上下文信息,所述上下文建模模塊對從所述擴展接口獲取的原始大規(guī)模上下文信息進行建模表示,并將建模后的大規(guī)模上下文信息傳遞給上下文傳輸模塊;所述訂閱與配置模塊還包括允許開發(fā)人員根據(jù)所述擴展接口自主地實現(xiàn)移動云計算應(yīng)用所需求的特殊大規(guī)模上下文信息的獲取方法。
[0016]在本發(fā)明另一個實施例中,所述云端還包括自定義接口模塊,用于使移動云計算應(yīng)用開發(fā)人員實現(xiàn)除在上下文聚合模塊中提供的操作之外的其他的應(yīng)用邏輯過程。
[0017]在本發(fā)明一個實施例中,系統(tǒng)所需的信息包括原始大規(guī)模上下文信息獲取與建模后的大規(guī)模上下文信息發(fā)送的周期、云端地址,以及原始大規(guī)模上下文信息的建模方式。
[0018]在本發(fā)明一個實施例中,原始大規(guī)模上下文信息的建模方式包括標記模型和鍵值對模型,并通過開關(guān)的配置的方式在模型之間切換,其中:
[0019]當(dāng)切換為標記模型時,所獲取的原始大規(guī)模上下文信息將采用XML格式的標記模型進行描述;
[0020]當(dāng)切換為鍵值對模型時,所獲取的原始大規(guī)模上下文信息將采用JSON格式的鍵值對模型進行描述。
[0021]在本發(fā)明一個實施例中,所述上下文傳輸模塊將從所述上下文建模模塊傳遞過來的建模后的大規(guī)模上下文信息封裝成HTTP數(shù)據(jù)包再發(fā)送到所述并發(fā)接收模塊。
[0022]在本發(fā)明一個實施例中,所述云端米用基于MapReduce模型實現(xiàn)的云系統(tǒng);所述上下文聚合模塊在云端的大部分節(jié)點上周期性地運行MapReduce作業(yè),該周期可以動態(tài)地在運行時調(diào)整。
[0023]在本發(fā)明一個實施例中,云端米用Hadoop云系統(tǒng)或者Phoenix云系統(tǒng)。
[0024]根據(jù)本發(fā)明另一個方面,提供了一種大規(guī)模上下文管理方法,該方法包括:
[0025]步驟I)、根據(jù)在訂閱與配置模塊中訂閱的大規(guī)模上下文信息,獲取所需的原始大規(guī)模上下文信息;
[0026]步驟2)、根據(jù)在訂閱與配置模塊中配置的信息,對從步驟I)獲取的原始大規(guī)模上下文信息進行建模表示,并且由上下文傳輸模塊將建模后的大規(guī)模上下文信息發(fā)送到云端的并發(fā)接收模塊;
[0027]步驟3)、云端的并發(fā)接收模塊接收建模后的大規(guī)模上下文信息,并將所接收的大規(guī)模上下文信息存儲到云端的存儲/讀取模塊;[0028]步驟4)、云端對所接收的大規(guī)模上下文信息進行聚合,并將聚合結(jié)果存儲到云端的存儲/讀取模塊;
[0029]步驟5)、云端的聚合結(jié)果服務(wù)模塊對移動云計算應(yīng)用提供聚合結(jié)果的服務(wù)。
[0030]在本發(fā)明一個實施例中,步驟I)的獲取所需的原始大規(guī)模上下文信息還包括:
[0031](I)如果統(tǒng)一接口模塊有相應(yīng)接口支持所需的原始大規(guī)模上下文信息,則通過統(tǒng)一接口模塊獲取原始大規(guī)模上下文信息,
[0032](2)如果統(tǒng)一接口模塊沒有相應(yīng)接口支持所需的原始大規(guī)模上下文信息,則通過擴展接口提供移動云計算應(yīng)用開發(fā)人員實現(xiàn)相應(yīng)的方法來獲取所需的原始大規(guī)模上下文信息,其中,擴展接口用于自行實現(xiàn)相應(yīng)方法來獲取統(tǒng)一接口模塊沒有提供接口的原始大規(guī)模上下文信息。
[0033]在本發(fā)明一個實施例中,步驟2)的建模表示包括使用可擴展標記語言XML或者使用JSON語言。
[0034]在本發(fā)明另一個實施例中,步驟2)還包括在發(fā)送到云端的并發(fā)接收模塊之前,由上下文傳輸模塊將建模后的大規(guī)模上下文信息封裝成HTTP數(shù)據(jù)包。
[0035]在本發(fā)明一個實施例中,步驟4)還包括:
[0036](I)如果上下文聚合模塊提供聚合所需的操作,則通過上下文聚合模塊對所接收的大規(guī)模上下文信息進行聚合;
[0037](2)如果上下文聚合模塊沒有提供聚合所需的操作,則通過自定義接口模塊提供上下文聚合實現(xiàn),其中,自定義接口模塊用于實現(xiàn)除在上下文聚合模塊中提供的操作之外的其他的應(yīng)用邏輯過程。
[0038]在本發(fā)明一個實施例中,通過上下文聚合模塊對所接收的大規(guī)模上下文信息進行聚合包括:運行MapReduce作業(yè)以聚合所接收的大規(guī)模上下文信息。
[0039]根據(jù)本發(fā)明另一個方面,提供了一種大規(guī)模上下文管理系統(tǒng)的實現(xiàn)方法,所述方法包括:
[0040]步驟I)、在移動終端實現(xiàn)訂閱與配置模塊,該模塊與統(tǒng)一接口模塊、上下文建模模塊以及上下文傳輸模塊交互以實現(xiàn)訂閱功能和配置功能;
[0041]步驟2)、在移動終端實現(xiàn)統(tǒng)一接口模塊,該統(tǒng)一接口模塊通過對移動終端傳感器獲取數(shù)據(jù)的API進行統(tǒng)一的封裝或以調(diào)用Linux命令的方式來對外提供統(tǒng)一的接口 ;
[0042]步驟3)、在移動終端實現(xiàn)上下文建模模塊,對獲取的各種原始大規(guī)模上下文信息進行建模表示,并提供動態(tài)配置機制來動態(tài)地選擇建模方式;
[0043]步驟4)、在移動終端實現(xiàn)上下文傳輸模塊,包括:根據(jù)所配置的云端地址和發(fā)送周期,將建模后的上下文信息封裝成HTTP數(shù)據(jù)包并向云端發(fā)送;
[0044]步驟5)、在云端一集群上部署并發(fā)接收模塊,并發(fā)接收模塊以進程的形式運行在該集群中的每一個節(jié)點上,每一個進程中都維護一個線程池,用于處理每一個連接進來的Socket,并完成上下文信息的接收;
[0045]步驟6)、在云端實現(xiàn)存儲/讀取模塊,大規(guī)模上下文信息在云端存儲的格式類似于表格,不同時刻所接收到的大規(guī)模上下文信息分別存儲在不同的位置,各個上下文信息存儲位置之間采用不同的時間戳信息進行區(qū)別;
[0046]步驟7)、在云端實現(xiàn)上下文聚合模塊,包括基于MapReduce基礎(chǔ)框架實現(xiàn)一些基本的數(shù)據(jù)操作算法;
[0047]步驟8)、在云端一集群上部署聚合結(jié)果服務(wù)模塊,該集群的各個節(jié)點上始終運行著一個等待接收請求的進程,該進程在特定端口上監(jiān)聽,并且維護著一個線程池,當(dāng)請求到來后馬上啟動一個線程來處理請求。
[0048]在本發(fā)明一個實施例中,步驟2)還包括在移動終端實現(xiàn)擴展接口,該接口用于實現(xiàn)相應(yīng)的方法來獲取在統(tǒng)一接口模塊中沒有相應(yīng)接口支持的上下文信息。
[0049]在本發(fā)明另一個實施例中,步驟7)還包括在在云端實現(xiàn)自定義接口模塊,該模塊用于實現(xiàn)上下文聚合模塊沒有提供的其他操作。
[0050]相對于現(xiàn)有技術(shù),本發(fā)明具有下列技術(shù)效果:
[0051](I)本發(fā)明使得與應(yīng)用需求相關(guān)的大規(guī)模上下文信息會被自動獲取并發(fā)送給云端,移動云計算應(yīng)用的開發(fā)人員只需關(guān)心具體的應(yīng)用邏輯。
[0052](2)本發(fā)明支持大規(guī)模上下文信息的聚合,開發(fā)人員只需關(guān)心與具體移動云計算應(yīng)用邏輯相關(guān)的聚合過程。
【專利附圖】
【附圖說明】
[0053]圖1是根據(jù)本發(fā)明一個實施例的大規(guī)模上下文管理系統(tǒng)結(jié)構(gòu)圖;
[0054]圖2是根據(jù)本發(fā)明一個實施例的大規(guī)模上下文管理系統(tǒng)中云端各個模塊的部署結(jié)構(gòu)圖;
[0055]圖3是根據(jù)本發(fā)明一個實施例的大規(guī)模上下文管理系統(tǒng)實現(xiàn)方法的流程圖;
`[0056]圖4是移動z?計算應(yīng)用不例的實現(xiàn)流程圖。
【具體實施方式】
[0057]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖,對本發(fā)明提供的大規(guī)模上下文管理系統(tǒng)、方法及實現(xiàn)方法進行詳細描述。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0058]根據(jù)本發(fā)明的一個實施例,提供了一種大規(guī)模上下文管理系統(tǒng)。圖1示出了該系統(tǒng)的總體結(jié)構(gòu),該系統(tǒng)分為移動終端和云端兩部分,其中:
[0059]所述移動終端包括:訂閱與配置模塊、統(tǒng)一接口模塊、上下文建模模塊和上下文傳輸模塊。下面詳細描述移動終端包括的各個模塊的功能。
[0060]訂閱與配置模塊,用于使移動終端能夠自主地收集與移動云計算應(yīng)用需求相關(guān)的上下文信息、允許開發(fā)人員配置原始大規(guī)模上下文信息獲取與建模后的大規(guī)模上下文信息發(fā)送的周期、原始上下文建模方式以及云端的地址。因為大部分的應(yīng)用只需要部分的上下文信息,移動終端就需要去收集與應(yīng)用相關(guān)的上下文信息,通過該模塊中的訂閱功能只訂閱與應(yīng)用相關(guān)的上下文信息。由于移動終端能耗的原因,上下文信息的收集與發(fā)送過程不宜太過頻繁,根據(jù)本發(fā)明一個實施例,根據(jù)具體的移動云計算應(yīng)用需求來配置收集原始大規(guī)模上下文信息與發(fā)送建模后的大規(guī)模上下文信息的周期。另外,移動終端可能要將上下文信息發(fā)送到不同的云端服務(wù)器,根據(jù)本發(fā)明另一個實施例,通過配置功能配置不同的云端地址來控制將上下文信息發(fā)送到何處。
[0061]統(tǒng)一接口模塊,用于對移動終端各種上下文信息的獲取方式進行封裝,對外提供統(tǒng)一的接口。因為在移動終端上獲取各種上下文信息的方式不一樣,例如不同的上下文信息需要通過調(diào)用不同的API獲取(例如通過傳感器API),還有些上下文信息則需要通過運行命令行的方式獲取(例如運行命令行獲取系統(tǒng)實時運行信息),為了屏蔽這種異構(gòu)性,統(tǒng)一接口模塊對各種不同上下文信息獲取方式進行封裝,對下面將描述的上下文建模模塊提供統(tǒng)一的接口標準。
[0062]上下文建模模塊,用于對獲取的原始大規(guī)模上下文信息進行建模表示,幫助用戶理解上下文信息的含義,并且進一步對上下文信息進行處理。根據(jù)本發(fā)明的一個實施例,建模方式包括標記模型和鍵值對模型,可通過開關(guān)的配置方式在這些模型之間切換。例如,當(dāng)切換成標記模型時,從統(tǒng)一接口模塊獲取的原始大規(guī)模上下文信息將采用XML格式的標記模型進行描述,其標簽描述上下文信息的名稱、類型,其值描述上下文信息所對應(yīng)的值;而當(dāng)切換成鍵值對模型時,原始大規(guī)模上下文信息將采用JSON格式的鍵值對模型進行描述,其名稱描述上下文信息的名稱、類型,其值描述上下文信息所對應(yīng)的值。該模塊會將建模后的大規(guī)模上下文信息交給上下文傳輸模塊以發(fā)送出去。本領(lǐng)域普通技術(shù)人員應(yīng)理解,除了XML格式和JSON格式,本發(fā)明也可以采用其他合適的建模方式。
[0063]上下文傳輸模塊,用于把與具體移動云計算應(yīng)用需求相關(guān)的大規(guī)模上下文信息發(fā)送至云端。根據(jù)本發(fā)明的一個實施例,將從上下文建模模塊傳遞過來的上下文信息,封裝成HTTP數(shù)據(jù)包,并根據(jù)訂閱與配置模塊中配置的云端地址,將該大規(guī)模上下文信息發(fā)送到相應(yīng)的云端地址。
[0064]所述云端包括:并發(fā)接收模塊,存儲/讀取模塊,上下文聚合模塊以及聚合結(jié)果服務(wù)模塊。下面詳細描述云端包括的各個模塊的功能。
[0065]并發(fā)接收模塊,用于高并發(fā)接收移動終端發(fā)送過來的大規(guī)模上下文信息。大量的移動終端在往云端發(fā)送上下文信息的時候,云端應(yīng)該能夠具有同時接收大規(guī)模上下文信息的能力。圖2描述了根據(jù)本發(fā)明的云端的一個實施例,并發(fā)接收模塊一般部署在集群之上,以防止單點失效的情況發(fā)生,保證了云端能夠同時接收大規(guī)模的上下文信息。并發(fā)接收模塊會調(diào)用存儲/讀取模塊的存儲功能來將新接收到的上下文信息存儲在云端。
[0066]存儲/讀取模塊,用于在云端保存大規(guī)模上下文信息。在該模塊中,將大規(guī)模的上下文信息按照規(guī)定的格式存儲到云端,調(diào)用云端的存儲接口實現(xiàn)大規(guī)模上下文信息的存儲。大規(guī)模上下文信息具體存儲在云端的哪些節(jié)點是由云端的存儲接口完成,對存儲/讀取模塊來說展現(xiàn)的是一個邏輯的全局視圖。該模塊可被并發(fā)接收模塊調(diào)用存儲功能,可被聚合結(jié)果服務(wù)模塊調(diào)用讀取功能。
[0067]上下文聚合模塊,對所接收的大規(guī)模上下文信息進行聚合,以及將聚合結(jié)果存儲到云端。在圖2所示的實施例中,該模塊在云端的大部分節(jié)點上周期性地運行大規(guī)模數(shù)據(jù)集的并行計算,把新接收到的大規(guī)模上下文信息作為作業(yè)的輸入,作業(yè)的輸出就是聚合結(jié)果,并將聚合結(jié)果存儲到云端的存儲/讀取模塊中,供聚合結(jié)果服務(wù)模塊使用。以Hadoop開源云系統(tǒng)和MapReduce編程模型為例,該模塊會在云端的大部分節(jié)點上周期性地運行一個MapReduce作業(yè),MapReduce作業(yè)所運行的周期則與具體的移動云計算應(yīng)用需求相關(guān),可以動態(tài)地在運行時進行調(diào)整。MapReduce是本領(lǐng)域公知的一種編程模型,適用于大規(guī)模數(shù)據(jù)集的并行運算。在該模塊中還提供了大量的原子操作(如加減乘除、求和、排序、分類等),使得用戶在開發(fā)聚合大規(guī)模上下文的應(yīng)用邏輯時可以很方便地調(diào)用,提高了開發(fā)效率。[0068]聚合結(jié)果服務(wù)模塊,用于向移動云計算應(yīng)用提供上下文聚合結(jié)果的服務(wù)。大規(guī)模上下文信息的聚合結(jié)果最終將為具體的移動云計算應(yīng)用服務(wù),提高具體移動云計算應(yīng)用的服務(wù)質(zhì)量。根據(jù)本發(fā)明的一個實施例,具體的移動云計算應(yīng)用可部署在云端的多個節(jié)點(集群)上,如果應(yīng)用所部署的節(jié)點很多的話,就會產(chǎn)生大量請求聚合結(jié)果的連接,因此聚合結(jié)果服務(wù)模塊也部署在集群之上,如圖2所示。當(dāng)接收到來自具體移動云計算應(yīng)用的聚合結(jié)果服務(wù)請求時,該模塊會調(diào)用存儲/讀取模塊中的讀取功能來獲取云端最新的聚合結(jié)果,然后將聚合結(jié)果返回給請求的應(yīng)用。
[0069]根據(jù)本發(fā)明的一個實施例,所述移動終端還包括擴展接口,用于在移動云計算應(yīng)用需要獲取的上下文信息沒有得到上述統(tǒng)一接口模塊中相應(yīng)接口支持的情況下,提供給應(yīng)用開發(fā)人員以獲取所需求的上下文信息。雖然統(tǒng)一接口模塊中已經(jīng)提供了獲取移動終端大部分上下文信息的統(tǒng)一接口,但難免會存在某些特殊的應(yīng)用需要收集的上下文信息相對應(yīng)的接口沒有在統(tǒng)一接口模塊中提供,那么就需要通過擴展接口,來自行實現(xiàn)相應(yīng)方法來獲取這些統(tǒng)一接口模塊沒有提供接口的上下文信息。該模塊彌補統(tǒng)一接口模塊中的接口不完整性,并與上下文建模模塊進行交互。所述訂閱與配置模塊還包括允許開發(fā)人員根據(jù)擴展接口自主地實現(xiàn)移動云計算應(yīng)用所需求的特殊大規(guī)模上下文信息的獲取方法。
[0070]根據(jù)本發(fā)明的一個實施例,云端還包括自定義接口模塊,用于為開發(fā)人員提供更加靈活的上下文聚合過程實現(xiàn)。該模塊和移動終端擴展接口的功能類似,在上下文聚合模塊中提供了大部分聚合大規(guī)模上下文信息所需要的原子操作,但并不保證這些操作能夠處理所有的應(yīng)用邏輯,因此自定義接口模塊可以幫助開發(fā)人員實現(xiàn)大規(guī)模上下文聚合中其他的應(yīng)用邏輯過程,例如可以將所提供的原子操作進行組合形成一種新的應(yīng)用邏輯過程。
[0071]根據(jù)本發(fā)明的一個實施例,還提供了基于大規(guī)模上下文管理系統(tǒng)的一種大規(guī)模上下文管理方法,包括:
[0072]步驟I)、根據(jù)移動云計算應(yīng)用開發(fā)人員訂閱的大規(guī)模上下文信息類型,獲取所需的原始大規(guī)模上下文信息。
[0073]步驟2)、根據(jù)移動云計算應(yīng)用開發(fā)人員配置的信息,對從步驟I)中獲取到的原始大規(guī)模上下文信息用相應(yīng)的模型進行建模表示,建模表示包括使用可擴展標記語言XML、JSON語言等,并按照開發(fā)人員配置的信息將建模后的大規(guī)模上下文信息發(fā)送到云端,
[0074]其中,上下文傳輸模塊先將建模后的大規(guī)模上下文信息封裝成HTTP數(shù)據(jù)包,再發(fā)送到云端的并發(fā)/接收模塊。
[0075]步驟3)、云端高并發(fā)接收建模后的大規(guī)模上下文信息,并將所接收的大規(guī)模上下文信息存儲到云端的存儲/讀取模塊。
[0076]步驟4)、云端對所接收的大規(guī)模的上下文信息進行聚合,例如,在上下文聚合模塊中運行一個聚合大規(guī)模上下文信息的MapReduce作業(yè),并將聚合的結(jié)果存儲到云端的存儲/讀取模塊。
[0077]步驟5)、云端的聚合結(jié)果服務(wù)模塊對移動云計算應(yīng)用提供上下文聚合結(jié)果的服務(wù)。每當(dāng)接收到應(yīng)用請求時,聚合結(jié)果服務(wù)模塊就會通過調(diào)用存儲/讀取模塊中的讀取功能處理該請求。
[0078]其中,步驟I)中獲取所需的原始大規(guī)模上下文信息是由統(tǒng)一接口模塊來實現(xiàn)的,而在另一個實施例中,由擴展接口提供移動云計算應(yīng)用開發(fā)人員實現(xiàn)相應(yīng)的方法來獲取所需的原始大規(guī)模上下文信息。
[0079]根據(jù)本發(fā)明的另一個實施例,步驟4)中,由自定義接口模塊實現(xiàn)對所接收的大規(guī)模的上下文信息進行聚合。
[0080]圖3示出了根據(jù)本發(fā)明的一個實施例,實現(xiàn)上述大規(guī)模上下文管理系統(tǒng)的方法,包括如下步驟:
[0081]第一步,在大規(guī)模上下文管理系統(tǒng)的移動終端實現(xiàn)訂閱與配置模塊,該模塊向移動云計算應(yīng)用開發(fā)人員提供訂閱功能和配置功能,訂閱功能用于訂閱應(yīng)用所需的大規(guī)模上下文信息,配置功能用于配置原始大規(guī)模上下文信息獲取與建模后的大規(guī)模上下文信息發(fā)送的周期、云端地址,以及原始大規(guī)模上下文信息的建模方式。開發(fā)人員在實現(xiàn)訂閱功能時,需要與統(tǒng)一接口模塊進行交互,控制統(tǒng)一接口模塊中只有那些與所訂閱上下文信息相關(guān)的一些方法被調(diào)用。在實現(xiàn)配置功能時,也需要與統(tǒng)一接口模塊進行交互,控制獲取上下文信息的方法被調(diào)用的時間周期;還需要與上下文建模模塊交互,控制原始上下文信息是被建模成標記模型還是鍵值對模型,即調(diào)用設(shè)置成標記模型的相關(guān)方法或者調(diào)用設(shè)置成鍵值對模型的相關(guān)方法;最后還需要與上下文傳輸模塊進行交互,控制該模塊發(fā)送上下文信息的周期以及上下文信息發(fā)送到哪里,即在上下文信息發(fā)送之前設(shè)置好目的IP地址和端口號。所有的這些訂閱與配置信息,都是保持在具體的應(yīng)用之中的,設(shè)置好了這些信息,在應(yīng)用程序中都不應(yīng)該被動態(tài)的修改,即在開發(fā)階段中就已經(jīng)和具體的應(yīng)用程序綁定了。
[0082]第二步,在大規(guī)模上下文管理系統(tǒng)的移動終端實現(xiàn)統(tǒng)一接口模塊以獲取原始大規(guī)模上下文信息。統(tǒng)一接口模塊與底層傳感器或系統(tǒng)信息能夠進行交互,該模塊對其他模塊抽象了底層的傳感器和系統(tǒng)信息等細節(jié),使得其他模塊不需要關(guān)注與底層傳感器或系統(tǒng)信息的細節(jié),只需要與統(tǒng)一接口模塊進行交互即可。統(tǒng)一接口模塊將具體的應(yīng)用代碼與傳感器或系統(tǒng)信息交互代碼隔離開,使得移動云計算應(yīng)用開發(fā)人員編寫的應(yīng)用代碼更具可移植性。在Android系統(tǒng)上實現(xiàn)統(tǒng)一接口模塊時,由于Android系統(tǒng)自身提供了從加速度傳感器等八種傳感器獲取數(shù)據(jù)的API,以及獲取電量、位置等上下文的API,統(tǒng)一接口模塊將進一步對這部分API進行統(tǒng)一的封裝,對外提供一個統(tǒng)一的接口。另外,對于Android系統(tǒng)中CPU、內(nèi)存等信息的獲取沒有相應(yīng)的API提供,但是可以通過調(diào)用Linux命令的方式來獲取到這些信息,對于這類上下文信息在內(nèi)部是通過執(zhí)行不同的Linux命令來實現(xiàn),對外則提供統(tǒng)一的接口。通過統(tǒng)一接口模塊,移動云計算應(yīng)用開發(fā)人員可以通過配置的方式就能完成上下文信息的獲取。考慮到應(yīng)用需要獲取的上下文信息在統(tǒng)一接口模塊中可能沒有相應(yīng)的接口支持的情況,提供擴展接口供開發(fā)人員實現(xiàn)相應(yīng)的方法來獲取所需求的上下文信息,其最后獲取的上下文信息結(jié)果方式應(yīng)該和統(tǒng)一接口模塊中默認的實現(xiàn)方式保持一致。訂閱與配置模塊的實現(xiàn),使得統(tǒng)一接口模塊中只針對相應(yīng)上下文信息獲取的接口被調(diào)用,而沒有被訂閱的上下文信息所對應(yīng)的接口則不會被調(diào)用,對具體的開發(fā)人員來說,關(guān)注訂閱與配置模塊的訂閱功能就可以完成上下文信息的收集,甚至不需要去理解統(tǒng)一接口模塊的統(tǒng)一接口。
[0083]第三步,實現(xiàn)上下文建模模塊,對統(tǒng)一接口模塊中獲取到的原始大規(guī)模上下文信息進行建模表示,從而更好地描述上下文信息來幫助用戶理解上下文信息的含義。從統(tǒng)一接口模塊中獲取大規(guī)模上下文信息時,只是獲取到一些原始的數(shù)據(jù),對這些數(shù)據(jù)進行建模表示形成完整的上下文信息。根據(jù)移動終端資源受限、所處環(huán)境動態(tài)變化的特點,需要實現(xiàn)上下文建模方式,如兼容性支持標記模型或鍵值對模型:
[0084](I)標記模型采用可擴展標記語言XML (extensible Markup Language)對上下文信息進行建模表示,其標簽表示上下文信息的名稱,標簽的值表示對應(yīng)上下文信息的值。在實現(xiàn)的時候,對原始的上下文信息進行解析,首先根據(jù)訂閱與配置模塊中所訂閱的上下文信息類型來確定XML標簽(上下文信息的名稱),然后再給標簽的值賦值為具體的數(shù)據(jù)。如果所要建模的上下文信息是復(fù)合類型,如位置信息由經(jīng)度信息和緯度信息組成,父類型的名稱(XML標簽)為上下文信息名稱,值為兩個子類型(經(jīng)度信息和緯度信息),子類型的XML形式和前述的簡單上下文信息模型建模方式一樣。
[0085](2)鍵值對模型采用JSON (Javascript Object Notation)語言對上下文信息進行建模表示,其JSON對象中的鍵表示上下文信息的名稱,JSON對象的值表示對應(yīng)上下文信息的值。在實現(xiàn)的時候,對原始的上下文信息進行解析,首先根據(jù)訂閱與配置模塊中所訂閱的上下文信息類型來確定JSON對象的鍵(上下文信息的名稱),然后再給該鍵賦值為具體的數(shù)據(jù)。如果所要建模的上下文信息是復(fù)合類型,則JSON對象的鍵為上下文信息名稱,值為兩個子類型JSON對象,子類型的JSON對象和前述的簡單建模方式一樣。
[0086]除上述兩種建模方式,本領(lǐng)域普通技術(shù)人員可理解,其他合適的建模方式也可應(yīng)用于此。
[0087]針對所提供的上下文建模方式,根據(jù)本發(fā)明的一個實施例,還提供一種動態(tài)配置機制來保證根據(jù)具體的應(yīng)用需求來動態(tài)地選擇相應(yīng)的上下文建模方式,例如,如果對上下文信息的空間占用需求比較嚴格,則可以動態(tài)地配置成鍵值對模型;如果對網(wǎng)絡(luò)中服務(wù)端與客戶端之間的通用性需求比較高,則可以動態(tài)地配置成標記模型。在訂閱與配置模塊中,可以通過全局變量的形式來描述動態(tài)配置的上下文建模方式。
[0088]第四步,實現(xiàn)上下文傳輸模塊,將上下文建模模塊建模后的大規(guī)模上下文信息封裝成HTTP數(shù)據(jù)包發(fā)送到云端。這里需要先訪問由訂閱與配置模塊所配置的云端服務(wù)器地址和發(fā)送周期,使得移動終端上的建模后的大規(guī)模上下文信息發(fā)送到特定的地址,以及按照所配置的周期發(fā)送建模后的大規(guī)模上下文信息。在將大規(guī)模上下文信息構(gòu)造成HTTP數(shù)據(jù)包后,以HTTP中POST的形式向云端發(fā)送數(shù)據(jù)。在實現(xiàn)的時候,按照HTTP協(xié)議規(guī)范,先構(gòu)造HTTP的數(shù)據(jù)包頭,然后構(gòu)造HTTP的數(shù)據(jù)包體,在構(gòu)造數(shù)據(jù)包體的時候嵌入XML描述的或者JSON描述的上下文信息。在整個數(shù)據(jù)包構(gòu)造完成后再發(fā)送至云端。
[0089]第五步,實現(xiàn)并發(fā)接收模塊。云端并發(fā)接收大規(guī)模上下文信息,并將接收到的大規(guī)模上下文信息存儲到云端。在云端專門有一集群上部署并發(fā)接收模塊,負責(zé)接收大量移動終端發(fā)送過來的建模后的大規(guī)模上下文信息,在集群中各機器之間通過負載均衡機制保證機器之間的網(wǎng)絡(luò)帶寬平衡。在并發(fā)接收模塊中,以進程的形式運行在該集群中的每一個節(jié)點上,每一個進程中都維護一個線程池,用于處理每一個連接進來的Socket,并完成上下文信息的接收。根據(jù)本發(fā)明的一個實施例,在該集群上通過LVS (Linux系統(tǒng)上負載均衡的實現(xiàn))來保證節(jié)點之間的網(wǎng)絡(luò)負載均衡。集群中的每一臺機器在接收到上下文信息之后,會先將上下文信息保存在緩沖區(qū)中,當(dāng)緩沖區(qū)中上下文信息的規(guī)模到達閾值之后再一并將緩沖區(qū)中的所有上下文信息存儲到云端。
[0090]第六步,實現(xiàn)存儲/讀取模塊,在往云端存儲上下文信息的時候,例如可以直接調(diào)用Hadoop提供的FileSystem等類實現(xiàn)。上下文信息在云端存儲的格式類似于表格,表格的列標題是上下文信息的名稱,而每一行記錄則表示一條上下文信息,每一個數(shù)據(jù)表示所對應(yīng)上下文信息的名稱的值。而且不同時刻所接收到的上下文信息則分別存儲在不同的位置,各個上下文信息存儲位置之間采用不同的時間戳信息進行區(qū)別,應(yīng)用可以根據(jù)具體的需求,在上下文聚合過程中選擇性地只聚合最新的上下文信息。
[0091]第七步,實現(xiàn)上下文聚合模塊,在云端(例如Hadoop系統(tǒng))上基于MapReduce基礎(chǔ)框架(即上下文聚合模塊是在MapReduce的框架之上實現(xiàn))實現(xiàn)一些基本的數(shù)據(jù)操作算法。因為云端需要運行一個MapReduce作業(yè)來對大規(guī)模的上下文信息進行聚合,并將聚合的結(jié)果存儲到云端。根據(jù)具體的應(yīng)用需求,開發(fā)人員會對不同的應(yīng)用配置不同的MapReduce作業(yè)運行周期,因此需要能夠支持MapReduce運行周期的控制。在云端運行的MapReduce作業(yè)應(yīng)該只聚合與應(yīng)用相關(guān)的大規(guī)模上下文信息,因此在選擇作業(yè)輸入的時候應(yīng)該具有選擇的功能。當(dāng)聚合完成之后,需將聚合結(jié)果以表格的方式存儲到云端,其結(jié)果存儲的具體實現(xiàn)與大規(guī)模上下文信息存儲實現(xiàn)類似,通過調(diào)用存儲/讀取模塊中的存儲功能實現(xiàn)。采用MapReduce作業(yè)對大規(guī)模上下文信息進行聚合,主要包括Map和Reduce兩個過程:
[0092](I)Map過程,對每一個計算節(jié)點上實際存儲的大規(guī)模上下文信息進行初步的計算處理,如按需選取數(shù)據(jù),或者對原始數(shù)據(jù)做簡單的加減乘除等處理,可以直接調(diào)用MapReduce框架中提供的各種數(shù)據(jù)處理算法來完成。因此在框架中應(yīng)該提供各種基本數(shù)據(jù)處理算法,包括加減乘除、求和、排序、分類等,在實現(xiàn)的時候需要先將上下文信息的字符串格式轉(zhuǎn)化為相應(yīng)數(shù)據(jù)類型的值,然后再進行操作,可以通過繼承Hadoop中提供的Mapper類,并實現(xiàn)其中的map方法完成。Map過程處理后的上下文信息會通過Hadoop內(nèi)部機制分發(fā)到其他的計算節(jié)點上以供Reduce過程處理;
[0093](2)Reduce過程,在進行Reduce過程的計算節(jié)點上對Map過程的結(jié)果進一步處理,可以直接調(diào)用框架中提供的各種計算方法接口來完成,這一部分可以直接調(diào)用MapReduce框架中提供的各種數(shù)據(jù)處理算法來完成。在實現(xiàn)Reduce過程的時候,可以通過繼承Hadoop中提供的Reducer類,并實現(xiàn)其中的Reduce方法完成。然后還需通過Matcher提供的基于規(guī)則的上下文聚合方法來對處理過的上下文信息進行規(guī)則匹配,其中Matcher中的規(guī)則配置應(yīng)該足夠靈活,能由開發(fā)人員自行設(shè)定,通過Matcher自主完成大規(guī)模處理過的上下文信息的匹配。
[0094]對于MapReduce基礎(chǔ)框架沒有實現(xiàn)的操作,實現(xiàn)自定義接口模塊。在自定義模塊中,提供了 ContextMap接口類和ContextReducer接口類,在這兩個接口類中提供了 一些基本的需要實現(xiàn)的方法、Map方法和Reduce方法,供開發(fā)人員實現(xiàn)框架沒有實現(xiàn)的操作。
[0095]第八步,實現(xiàn)聚合結(jié)果服務(wù)模塊,使得云端向移動云計算應(yīng)用提供上下文聚合結(jié)果的服務(wù)。云端可能會接收到來自大量移動云計算應(yīng)用的聚合結(jié)果的請求,因此將聚合結(jié)果服務(wù)模塊也部署在集群之上,集群中各個節(jié)點之間通過負載均衡機制(如LVS)實現(xiàn)網(wǎng)絡(luò)負載均衡。當(dāng)請求到來的時候,該模塊會調(diào)用存儲/讀取模塊中的讀取功能從云端讀取上下文聚合的結(jié)果,然后向具體應(yīng)用返回結(jié)果。在各個節(jié)點上始終運行著一個等待接收請求的進程,該進程在特定端口上監(jiān)聽,并且維護著一個線程池,當(dāng)請求到來后馬上啟動一個線程來處理該請求。同時,為提高性能,還可以在各個節(jié)點上緩存最近的聚合結(jié)果請求,當(dāng)節(jié)點發(fā)現(xiàn)所接收到的請求是已經(jīng)被處理過的請求時就可以將緩存的相應(yīng)結(jié)果發(fā)送給請求者。而不需要再調(diào)用存儲/讀取模塊中的讀取功能去云端讀取。[0096]下面以交通態(tài)勢感知應(yīng)用為例,詳細描述如何根據(jù)本發(fā)明提供的大規(guī)模上下文管理系統(tǒng)和方法來完成該移動云計算應(yīng)用的開發(fā)。
[0097]基于Hadoop開源云系統(tǒng),將本發(fā)明用于獲取某城市的交通態(tài)勢,即獲取該城市的實時交通路況信息。設(shè)計如下場景:某城市擁有一百萬輛車,且假設(shè)這一百萬輛車的司機每人都擁有一部手機,這些手機都攜帶了各種傳感器。開發(fā)人員根據(jù)本發(fā)明,首先開發(fā)出一個交通態(tài)勢感知應(yīng)用的手機端軟件,該軟件直接使用本發(fā)明來訂閱獲取手機的位置信息和速度信息,然后使用本發(fā)明來將收集到的上下文信息發(fā)送至云端,這些內(nèi)部實現(xiàn)細節(jié)都不需要開發(fā)人員關(guān)心。開發(fā)人員只需在該軟件中設(shè)計實現(xiàn)一個Stub程序,以接收云端為移動用戶提供的交通態(tài)勢服務(wù)。手機端的軟件開發(fā)完成后,開發(fā)人員還需要在云端相應(yīng)的完成交通態(tài)勢感知應(yīng)用的開發(fā)。在云端,接收大規(guī)模上下文信息的實現(xiàn)細節(jié)不需要開發(fā)人員關(guān)注,而對于上下文聚合的內(nèi)部實現(xiàn)細節(jié)也不需要關(guān)注,開發(fā)人員需要將上下文聚合的輸入與輸出與交通態(tài)勢應(yīng)用的需求進行結(jié)合,配置好輸入的上下文信息和期望聚合的結(jié)果信息,以及基于規(guī)則匹配時所使用到的規(guī)則。最后,開發(fā)人員在云端設(shè)計實現(xiàn)交通態(tài)勢應(yīng)用服務(wù),該服務(wù)結(jié)合地圖數(shù)據(jù)庫信息,使用上下文聚合結(jié)果,在地圖上實時展示城市中各條道路的交通路況信息。根據(jù)本發(fā)明來完成交通態(tài)勢感知應(yīng)用的總體流程圖如圖4所示,具體步驟如下:
[0098]第一步,根據(jù)大規(guī)模上下文管理系統(tǒng)提供的訂閱與配置模塊,訂閱速度和位置的上下文信息。在交通態(tài)勢感知應(yīng)用中,移動終端所收集的原始上下文信息是手機的位置信息和速度信息,也相當(dāng)于是車輛的位置和速度信息,單輛車的位置和速度信息沒有很實際的意義。但對于某一路段上的所有車輛位置和速度信息進行聚合就可以得到該路段的車輛平均速度,進而判斷該路段的交通狀況。移動終端通過統(tǒng)一接口模塊來獲取所訂閱的上下文信息。使用本發(fā)明時,交通態(tài)勢應(yīng)用移動終端不需要開發(fā)人員編寫獲取上下文信息的代碼,而只需要與統(tǒng)一接口模塊所提供的部分API進行交互,完成上下文信息的訂閱,即可獲取到上下文信息。
[0099]第二步,對交通態(tài)勢感知應(yīng)用中的上下文信息采用一種模型進行建模表示。由于應(yīng)用所處的環(huán)境,期望上下文模型占用更小的內(nèi)存,占用更少的網(wǎng)絡(luò)帶寬,因此開發(fā)人員可以動態(tài)配置為鍵值對模型。根據(jù)應(yīng)用的實時性需求和對能耗的限制,將上下文信息獲取與發(fā)送的周期設(shè)置為10秒或者20秒等等,具體由實際需求來決定。開發(fā)人員還需要配置好云端服務(wù)器的地址,以使得移動終端能夠?qū)@取的上下文信息發(fā)送到正確的目的地。手機最終還需要向用戶展現(xiàn)上下文信息聚合的結(jié)果,需要在手機上實現(xiàn)一個Stub程序,該程序用于接收云端返回的上下文聚合結(jié)果。
[0100]第三步,在云端的一部分機器集群上部署大規(guī)模上下文管理系統(tǒng)的并發(fā)接收模塊。該模塊只需要開發(fā)人員部署到機器集群上即可,不需要編寫任何代碼就會高并發(fā)地接收大量移動終端發(fā)送過來的上下文信息。
[0101]第四步,根據(jù)具體的應(yīng)用需求實現(xiàn)好Map過程和Reduce過程的輸入、輸出以及具體的應(yīng)用邏輯處理過程,通過運行MapReduce作業(yè)來聚合大規(guī)模上下文信息。在交通態(tài)勢感知應(yīng)用中,上下文信息是車輛的速度和位置信息,將這些信息作為Map過程的輸入,其輸出可以設(shè)置為路段的平均速度,然后將路段的平均速度設(shè)置為Reduce過程的輸入,路段的交通路況(擁堵、緩行、通暢)作為Reduce過程的輸出。在Map過程中,需要結(jié)合地圖數(shù)據(jù)信息,以判斷上下文信息是某個路段上某輛車的速度大小,所有的原始上下文信息經(jīng)過Map過程之后輸出就是每一個路段的平均速度。每一個路段的平均速度作為Reduce過程的輸入,結(jié)合開發(fā)人員設(shè)置的規(guī)則,通過本發(fā)明中Matcher的匹配過程,得到每一個路段是處于擁堵、緩行還是暢通。最后將各個路段的實時交通路況信息存儲到云端。
[0102]第五步,當(dāng)交通態(tài)勢感知應(yīng)用需要在地圖上的各個路段標注實時的交通路況信息的時候,就會從云端讀取相應(yīng)路段的實時交通路況。可以選擇將交通態(tài)勢感知應(yīng)用部署在第三方的服務(wù)器上,通過向云端發(fā)送一個Get請求來獲取所需的結(jié)果(各個路段的實時交通路口信息),并結(jié)合具體的應(yīng)用背景向最終用戶提供服務(wù)。
[0103]上述示例是本發(fā)明的一個簡單實現(xiàn),該過程可以方便的推廣到其它應(yīng)用領(lǐng)域,使得利用大規(guī)模上下文信息為用戶提供更好的服務(wù)變得非常容易。應(yīng)用開發(fā)人員在使用本發(fā)明時,只需關(guān)注具體的應(yīng)用邏輯,對于底層的大規(guī)模上下文發(fā)送與接收、存儲、分布式處理等實現(xiàn)細節(jié)不需要太多地關(guān)注。因此,本發(fā)明對于如何有效地利用大規(guī)模上下文信息來為用戶提供更好的服務(wù)具有重要的實際意義。
[0104]應(yīng)該注意到并理解,在不脫離后附的權(quán)利要求所要求的本發(fā)明的精神和范圍的情況下,能夠?qū)ι鲜鲈敿毭枋龅谋景l(fā)明做出各種修改和改進。因此,要求保護的技術(shù)方案的范圍不受所給出的任何特定示范教導(dǎo)的限制。
【權(quán)利要求】
1.一種大規(guī)模上下文管理系統(tǒng),該系統(tǒng)包括移動終端和云端兩部分,所述移動終端包括訂閱與配置模塊、統(tǒng)一接口模塊、上下文建模模塊和上下文傳輸模塊;所述云端包括并發(fā)接收模塊、存儲/讀取模塊、上下文聚合模塊和聚合結(jié)果服務(wù)模塊;其中 所述訂閱與配置模塊用于使移動終端自主地收集與移動云計算應(yīng)用需求相關(guān)的大規(guī)模上下文信息,以及配置系統(tǒng)所需的信息; 所述統(tǒng)一接口模塊用于對移動終端的各種大規(guī)模上下文信息獲取方式進行封裝,對上下文建模模塊提供統(tǒng)一接口; 所述上下文建模模塊用于對從統(tǒng)一接口模塊獲取的原始大規(guī)模上下文信息進行建模表示,并將建模后的大規(guī)模上下文信息傳遞給上下文傳輸模塊; 所述上下文傳輸模塊用于將從上下文建模模塊傳遞過來的建模后的大規(guī)模上下文信息發(fā)送至云端的并發(fā)接收模塊; 所述并發(fā)接收模塊用于接收從所述上下文傳輸模塊發(fā)送過來的建模后的大規(guī)模上下文信息,并且將所接收的大規(guī)模上下文信息存儲到存儲/讀取模塊; 所述存儲/讀取模塊用于在云端保存所接收的大規(guī)模上下文信息; 所述上下文聚合模塊用于對所接收的大規(guī)模上下文信息進行聚合; 所述聚合結(jié)果服務(wù)模塊用于讀取最新的聚合結(jié)果,并且向移動云計算應(yīng)用提供該聚合結(jié)果。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中 所述移動終端還包括擴展接口,用于在沒有得到所述統(tǒng)一接口模塊中相應(yīng)接口支持的情況下,提供給移動云計算應(yīng)用的開發(fā)人員來獲取所需求的大規(guī)模上下文信息,所述上下文建模模塊對從所述擴展接口獲取的原始大規(guī)模上下文信息進行建模表示,并將建模后的大規(guī)模上下文信息傳遞給上下文傳輸模塊; 所述訂閱與配置模塊還包括允許開發(fā)人員根據(jù)所述擴展接口自主地實現(xiàn)移動云計算應(yīng)用所需求的特殊大規(guī)模上下文信息的獲取方法。
3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),所述云端還包括自定義接口模塊,用于使移動云計算應(yīng)用開發(fā)人員實現(xiàn)除在上下文聚合模塊中提供的操作之外的其他的應(yīng)用邏輯過程。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其中系統(tǒng)所需的信息包括原始大規(guī)模上下文信息獲取與建模后的大規(guī)模上下文信息發(fā)送的周期、云端地址,以及原始大規(guī)模上下文信息的建模方式。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),所述原始大規(guī)模上下文信息的建模方式包括標記模型和鍵值對模型,并通過開關(guān)的配置的方式在模型之間切換,其中: 當(dāng)切換為標記模型時,所獲取的原始大規(guī)模上下文信息將采用XML格式的標記模型進行描述; 當(dāng)切換為鍵值對模型時,所獲取的原始大規(guī)模上下文信息將采用JSON格式的鍵值對模型進行描述。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述上下文傳輸模塊將從所述上下文建模模塊傳遞過來的建模后的大規(guī)模上下文信息封裝成HTTP數(shù)據(jù)包再發(fā)送到所述并發(fā)接收模塊。
7.根據(jù)權(quán)利要求1所述的系統(tǒng),所述云端采用基于MapReduce模型實現(xiàn)的云系統(tǒng);所述上下文聚合模塊在云端的大部分節(jié)點上周期性地運行MapReduce作業(yè),該周期可以動態(tài)地在運行時調(diào)整。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其中云端采用Hadoop云系統(tǒng)或者Phoenix云系統(tǒng)。
9.一種基于權(quán)利要求1的大規(guī)模上下文管理系統(tǒng)的大規(guī)模上下文管理方法,該方法包括: 步驟I)、根據(jù)在訂閱與配置模塊中訂閱的大規(guī)模上下文信息,獲取所需的原始大規(guī)模上下文信息; 步驟2)、根據(jù)在訂閱與配置模塊中配置的信息,對從步驟I)獲取的原始大規(guī)模上下文信息進行建模表示,并且由上下文傳輸模塊將建模后的大規(guī)模上下文信息發(fā)送到云端的并發(fā)接收模塊; 步驟3)、云端的并發(fā)接收模塊接收建模后的大規(guī)模上下文信息,并將所接收的大規(guī)模上下文信息存儲到云端的存儲/讀取模塊; 步驟4)、云端對所接收的大規(guī)模上下文信息進行聚合,并將聚合結(jié)果存儲到云端的存儲/讀取模塊; 步驟5)、云端的聚合結(jié)果服務(wù)模塊對移動云計算應(yīng)用提供聚合結(jié)果的服務(wù)。
10.根據(jù)權(quán)利要求9所述的方法,其中步驟I)的獲取所需的原始大規(guī)模上下文信息還包括: (1)如果統(tǒng)一接口模塊有相應(yīng)接口支持所需的原始大規(guī)模上下文信息,則通過統(tǒng)一接口模塊獲取原始大規(guī)模上下文信息, (2)如果統(tǒng)一接口模塊沒有相應(yīng)接口支持所需的原始大規(guī)模上下文信息,則通過擴展接口提供移動云計算應(yīng)用開發(fā)人員實現(xiàn)相應(yīng)的方法來獲取所需的原始大規(guī)模上下文信息,其中,擴展接口用于自行實現(xiàn)相應(yīng)方法來獲取統(tǒng)一接口模塊沒有提供接口的原始大規(guī)模上下文信息。
11.根據(jù)權(quán)利要求9所述的方法,其中步驟2)的建模表示包括使用可擴展標記語言XML或者使用JSON語言。
12.根據(jù)權(quán)利要求9所述的方法,其中步驟2)還包括在發(fā)送到云端的并發(fā)接收模塊之前,由上下文傳輸模塊將建模后的大規(guī)模上下文信息封裝成HTTP數(shù)據(jù)包。
13.根據(jù)權(quán)利要求9所述的方法,其中步驟4)還包括: (1)如果上下文聚合模塊提供聚合所需的操作,則通過上下文聚合模塊對所接收的大規(guī)模上下文信息進行聚合; (2)如果上下文聚合模塊沒有提供聚合所需的操作,則通過自定義接口模塊提供上下文聚合實現(xiàn),其中,自定義接口模塊用于實現(xiàn)除在上下文聚合模塊中提供的操作之外的其他的應(yīng)用邏輯過程。
14.根據(jù)權(quán)利要求13所述的方法,其中通過上下文聚合模塊對所接收的大規(guī)模上下文信息進行聚合包括:運行MapReduce作業(yè)以聚合所接收的大規(guī)模上下文信息。
15.一種權(quán)利要求1所述的大規(guī)模上下文管理系統(tǒng)的實現(xiàn)方法,所述方法包括: 步驟I)、在移動終端實現(xiàn)訂閱與配置模塊,該模塊與統(tǒng)一接口模塊、上下文建模模塊以及上下文傳輸模塊交互以實現(xiàn)訂閱功能和配置功能; 步驟2)、在移動終端實現(xiàn)統(tǒng)一接口模塊,該統(tǒng)一接口模塊通過對移動終端傳感器獲取數(shù)據(jù)的API進行統(tǒng)一的封裝或以調(diào)用Linux命令的方式來對外提供統(tǒng)一的接口 ;步驟3)、在移動終端實現(xiàn)上下文建模模塊,對獲取的各種原始大規(guī)模上下文信息進行建模表示,并提供動態(tài)配置機制來動態(tài)地選擇建模方式; 步驟4)、在移動終端實現(xiàn)上下文傳輸模塊,包括:根據(jù)所配置的云端地址和發(fā)送周期,將建模后的上下文信息封裝成HTTP數(shù)據(jù)包并向云端發(fā)送; 步驟5)、在云端一集群上部署并發(fā)接收模塊,并發(fā)接收模塊以進程的形式運行在該集群中的每一個節(jié)點上,每一個進程中都維護一個線程池,用于處理每一個連接進來的Socket,并完成上下文信息的接收; 步驟6)、在云端實現(xiàn)存儲/讀取模塊,大規(guī)模上下文信息在云端存儲的格式類似于表格,不同時刻所接收到的大規(guī)模上下文信息分別存儲在不同的位置,各個上下文信息存儲位置之間采用不同的時間戳信息進行區(qū)別; 步驟7)、在云端實現(xiàn)上下文聚合模塊,包括基于MapReduce基礎(chǔ)框架實現(xiàn)一些基本的數(shù)據(jù)操作算法; 步驟8)、在云端一集群上部署聚合結(jié)果服務(wù)模塊,該集群的各個節(jié)點上始終運行著一個等待接收請求的進程,該進程在特定端口上監(jiān)聽,并且維護著一個線程池,當(dāng)請求到來后馬上啟動一個線程來處理請求。
16.根據(jù)權(quán)利要求15所述的方法,步驟2)還包括在移動終端實現(xiàn)擴展接口,該接口用于實現(xiàn)相應(yīng)的方法來獲取在統(tǒng)一接口模塊中沒有相應(yīng)接口支持的上下文信息。
17.根據(jù)權(quán)利要求15所述的方法,步驟7)還包括在在云端實現(xiàn)自定義接口模塊,該模塊用于實現(xiàn)上下文聚合模塊沒有提供的其他操作。
【文檔編號】H04L29/08GK103699366SQ201210364764
【公開日】2014年4月2日 申請日期:2012年9月27日 優(yōu)先權(quán)日:2012年9月27日
【發(fā)明者】王懷民, 史殿習(xí), 吳振東, 丁博, 閆慧寧, 劉惠, 尹剛, 滕猛, 肖璽 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)