張以利,楊萬扣
移動和頻繁斷連是移動設備特點之一,利用移動設備自身計算和存儲能力,可緩存服務器中部分“熱點”數(shù)據(jù),當客戶端因斷連或網(wǎng)絡擁塞而與服務器“失聯(lián)”時,在本地即可找到所需數(shù)據(jù)。但當服務端數(shù)據(jù)更新時,客戶端緩存會出現(xiàn)由于未及時更新而與服務器不一致等問題[1]。
移動緩存一致性維護問題是當前研究熱點之一。目前最有代表性算法,是帶有時間戳的廣播算法(Broadcasting Timestamps Strategy,BTS),服務器每隔一個時間段,向客戶端發(fā)送一個包含更新數(shù)據(jù)的失效報告(Invalidation Report,IR),用以更新緩存。但是,BTS算法基于C/S模式,當服務器數(shù)據(jù)更新時,需通知每一客戶端并等待確認,服務端會因為客戶端無法及時確認而產生“寫延遲”,客戶端的頻繁斷接還會加劇“寫延遲”;客戶端不允許斷接,一旦斷接就會始終處于重連等待狀態(tài);客戶端每次斷接重連后需重新驗證緩存;這些都會影響客戶請求響應速度及網(wǎng)絡通信開銷。
移動云計算是移動互聯(lián)網(wǎng)和云計算相結合的新技術;Agent具有主動性和智能性,適合在異構開放環(huán)境中提供中間件服務,在減少網(wǎng)絡“延遲”、支持輕載移動設備方面具有不可比擬的優(yōu)越性[2],而移動設備具有移動性、計算能力弱、存儲空間小、電池容量小特點。因此,移動緩存技術同移動云技術和Agent技術具有天然的匹配性。
移動云環(huán)境中基于 Agent的緩存一致性維護策略(Cache Consistent Maintenance Scheme Based on Agent in Mobile Cloud Environment,CSC),針對傳統(tǒng)算法中存在的服務端“寫延遲”及終端斷接操作,結合移動云技術、Agent技術及緩存技術,搭建三層結構移動云平臺,并在中間層建立數(shù)據(jù)緩存,利用中間層協(xié)調客戶端與服務端關系,通過移動代理來維護“雙緩存”一致性。實驗結果表明,該策略能夠有效解決“寫延遲”和終端斷接操作及斷接重連后的一致性驗證問題,并能提高客戶請求響應速度、減少網(wǎng)絡通信開銷。
移動云環(huán)境中基于 Agent的緩存一致性維護平臺(Cache Consistent Maintenance platform Based on Agent in Mobile Cloud Environment,CPCE),是借助移動云技術、Agent技術及緩存技術搭建起來的三層結構移動云平臺,在云平臺的中間層開辟大緩存空間并建立緩存狀態(tài)信息列表,利用中間層對緩存數(shù)據(jù)進行備份和一致性維護,有效解決服務端“寫延遲”問題,同時支持終端頻繁斷接,提高終端訪問請求的響應速度,減少數(shù)據(jù)通信開銷。CPCE平臺結構圖,如圖1所示:
圖1 移動云環(huán)境中基于Agent的語義緩存維護三層結構模型
Agent具有主動性與智能性特點,能減少網(wǎng)絡“延遲”、支持輕載設備。CPCE平臺中的Agent有靜態(tài)Agent和移動Agent兩種類型,實行統(tǒng)一標識、統(tǒng)一命名管理,采用“黑板報”通信機制,平臺中的Agent之間互相“協(xié)商”,共同完成緩存一致性維護的任務[3]。
定義1 CPCE平臺的Agent模型
CPCE平臺的Agent模型定義為5元組如公式(1):
ID屬性用以標識CPCE平臺的Agent唯一性,一個節(jié)點可以存在一個或多個 Agent,故ID由所在中心服務器號(Central Server)、小區(qū)服務器號(Cell Server)及本地序號共同組成;Type屬性標識Agent類型;state標識Agent當前工作狀態(tài)是否忙;currPara描述Agent當前資源共享情況及歷史信息;policy是Mobile Agent的任務策略屬性,Agent根據(jù)自身情況及相關環(huán)境參數(shù),確定是否進行遷移以及往何處遷移。
靜態(tài)Agent有Process Agent、Service Agent和Monitor Agent 3種類型,分布在客戶端、服務端及中間層,負責處理所在層的相關事務。
移動agent為Mobile Agent,在中間層移動并執(zhí)行任務,也可以移動到其所對應的客戶端執(zhí)行某種任務,同時與其所對應的靜態(tài)Agent進行協(xié)商,以協(xié)調客戶端與服務端關系,共同完成管理并維護緩存的任務。Mobile Agent在CPCE平臺中的運行機制,見圖1。
Agent采取“黑板報”的通信機制。“黑板報”為在云服務器內開辟的一塊為全局共享內存區(qū)域,是標識平臺內Agent及節(jié)點信息的“目錄表”,每個Agent主動向“黑板”上“張貼”或“讀取”相關信息?!昂诎鍒蟆鄙系男畔ⅲ荕obile Agent行動決策的依據(jù)之一。
CPCE平臺是由服務端、客戶端、中間層以及Agent系統(tǒng)構建而成的三層結構移動云平臺系統(tǒng)[4]。服務端由中心服務器(Central Server)、Monitor Agent和 Process Agent組成,可以存放客戶端所需數(shù)據(jù),并有中心控制作用,有線連接多個本地服務器(Cell Server),屬于云中心服務器。Monitor Agent對“熱點”數(shù)據(jù)進行周期性廣播,并由中間層進行數(shù)據(jù)的接收;Process Agent接收來自中間層的Monitor Agent的查詢請求。
客戶端由移動終端(Mobile Terminal,MT)、Monitor Agent和 Service Agent組成,MT無線接入到本地服務器(Cell Server)中,中間層為每個移動終端創(chuàng)建一個Mobile Agen(移動代理),用來代替移動終端處理相關事務。Monitor Agent負責接收來自中間層的廣播數(shù)據(jù)并更新緩存,Service Agent負責提交客戶端的查詢請求并接收來自中間層或服務端的查詢結果。
中間層由本地服務器(Cell Server)、Monitor Agent、Process Agent及若干Mobile Agent組成。Cell Server有固定移動通信網(wǎng)關接口功能,發(fā)送的信號覆蓋的范圍稱為一個“小區(qū)”(Cell),一個 Cell Server無線連接若干 MT。Monitor Agent接收服務端的廣播數(shù)據(jù)并更新緩存,向客戶端廣播更新數(shù)據(jù),Process Agent處理來自客戶端的查詢請求。
Cell Server為其“轄區(qū)”范圍內的每個移動終端創(chuàng)建一個移動代理Mobile Agent,該Mobile Agent可以移動到其對應的客戶端并執(zhí)行某些事務;同時,當移動終端從一個“小區(qū)”移動到另一個“小區(qū)”時,與其對應的 Mobile Agent也要相應移動到其對應的移動終端所在 “小區(qū)”的 Cell Server中,Mobile Agent緊緊“跟隨”移動終端,隨著移動終端來回“穿梭”于各個“小區(qū)”。Mobile Agent實行“屬地管理”機制,接受所在“小區(qū)”的管理[5]。
基于移動終端及移動云端在計算和存儲能力方面各自特點,CSC策略采取“雙緩存”機制,考慮在移動終端和CPCE三層結構云平臺的中間層開辟緩存[6]。移動終端緩存,是利用移動終端自身的處理和存儲能力而開辟的一塊存儲空間以緩存部分“熱點”數(shù)據(jù),可提高數(shù)據(jù)訪問速度、減少網(wǎng)絡擁塞。
考慮到移動終端計算能力弱、存儲空間小、電池容量小等特點,CSC策略利用移動云存儲,在CPCE平臺中間層開辟大緩存空間,用以緩存終端熱點數(shù)據(jù)。在CPCE平臺中間層Cell Server中建立的緩存里,每個客戶端都有對應的備份,并建立一個云端緩存區(qū)號,且由“Cell緩存狀態(tài)信息列表”記錄相應信息。移動終端與其相應的“Mobile Agent號”、“云端緩存區(qū)號”以及“Cell緩存狀態(tài)信息列表號”一一對應。
定義2 Cell緩存狀態(tài)信息列表
Cell緩存狀態(tài)信息列表,記錄中間層緩存狀態(tài)信息,存放于 CPCE三層結構云平臺中間層的緩存中,每一個 Cell緩存狀態(tài)信息列表對應中間層一塊緩存區(qū),由 Cell Server中的 Monitor Agent維護并管理,可以被其對應的 Mobile Agent攜帶,“游離”于其所在的Cell Server及其相應的移動終端,還可隨著移動終端的移動而“穿梭”于各個“小區(qū)”。Cell緩存狀態(tài)信息列表cachTabl定義為五元組[7]:invaFlag屬性為數(shù)據(jù)項失效標志,starLog屬性為記錄脫機事務日志啟動與否的量。offTimeMobi為記錄客戶端與 Cell Server斷接時間長度。counter記錄客戶端在某段時間內的訪問次數(shù)平均值,是數(shù)據(jù)訪問熱度標志,是Cell緩存數(shù)據(jù)換出換入的依據(jù)。
中間層 Cell Server與其中的 Monitor Agent、Process Agent及Mobile Agent,起到協(xié)調移動客戶端與服務端的作用,負責監(jiān)控、管理、維護緩存以及接受移動客戶端數(shù)據(jù)請求,維護移動終端緩存數(shù)據(jù)的一致性。
考慮到空間資源利用率,CSC策略根據(jù)Cell緩存狀態(tài)信息列表的相關記錄參數(shù),實現(xiàn)緩存數(shù)據(jù)“換入換出”的動態(tài)機制,“換人”移動客戶端近期常訪問的“熱點”數(shù)據(jù),“換出”那些長期未訪問過的較“舊”的數(shù)據(jù)。
CSC策略,搭建三層結構移動云平臺并構建“雙緩存”,利用中間層對緩存數(shù)據(jù)進行備份和一致性維護,既減輕移動終端負擔,又達到了數(shù)據(jù)強一致性,并支持移動終端頻繁斷接。
客戶端事務驅動緩存一致性維護,是由客戶端查詢請求事件驅動發(fā)起,是客戶端的MT及其Agent與中間層交互并維護客戶端緩存與中間層緩存一致性的過程[8]。
移動客戶端的Monitor Agent可對網(wǎng)絡連接進行實時監(jiān)聽。當客戶端有數(shù)據(jù)查詢請求時,如果客戶端處于聯(lián)機狀態(tài),則客戶端的Service Agent啟動聯(lián)機事務,如果客戶端處于斷接狀態(tài),并且斷接時間offTimeMobi大于服務器廣播時間間隔cellServBroaInte,則Service Agent啟動斷接事務,若這時Monitor Agen監(jiān)測到客戶端由原來的斷接又重新聯(lián)機,這種由斷接到聯(lián)機的狀態(tài),稱為物理重聯(lián)機狀態(tài),則 Service Agent立即啟動集成事務,而后客戶端就進入正常聯(lián)機狀態(tài)運行。下面分別介紹這3種事務。
客戶端聯(lián)機事務。當客戶端有數(shù)據(jù)查詢請求并檢測到處于網(wǎng)絡聯(lián)機狀態(tài)時,其中的Service Agent將發(fā)送信息到該客戶端所在“小區(qū)”的本地服務器Cell Server,Cell Server接受該信息并驗證時間戳,如果仍是時間戳TS0,則表明數(shù)據(jù)很“新”,則直接在MT端執(zhí)行操作,如果時間戳過期,此時要執(zhí)行一致性維護,返回中間層緩存“最新”數(shù)據(jù),同時保存時間戳并更新Cell緩存狀態(tài)信息表。如果中間層緩存數(shù)據(jù)不是“最新”,則直接到Central Server中查找并返回數(shù)據(jù)。
客戶端斷接事務。當客戶端有數(shù)據(jù)查詢請求而這時卻處于斷接狀態(tài),移動終端會因無法連接服務器而得不到最新數(shù)據(jù),此時移動終端緩存便充當“臨時服務器”角色。實際上,多數(shù)情況下客戶端并不一定必須要最新數(shù)據(jù),只要偏差在一定范圍內也是可以忍受的。CSC策略采取,當斷接時間offTimeMobi小于cellServBroaInte時,視作客戶端緩存有效;當斷接時間offTimeMobi大于cellServBroaInte時,則啟動斷接事務執(zhí)行程序。
執(zhí)行斷接事務程序時,客戶端的Service Agent在移動終端緩存執(zhí)行暫態(tài)事務,并記錄暫態(tài)事務日志,等待重新聯(lián)機時與移動到終端的Mobile Agent攜帶過來的Cell緩存狀態(tài)信息列表融合,再根據(jù)融合結果更新客戶端緩存。CSC策略允許客戶端在斷接狀態(tài)工作,無論斷接時間長短都有相應方案,而 BTS等傳統(tǒng)策略只允許連機狀態(tài)下工作,一旦斷接就一直處于重連等待狀態(tài)中。
客戶端集成事務。當客戶端有數(shù)據(jù)查詢請求,且此時處于斷接狀態(tài)的客戶端又再次聯(lián)機時,監(jiān)控網(wǎng)絡連接狀態(tài)的客戶端Monitor Agent會通知中間層,這時,與該移動終端對應的中間層Mobile Agent,會攜帶Cell緩存狀態(tài)信息列表移動到客戶端,同客戶端Service Agent進行協(xié)商,將Cell緩存狀態(tài)信息列表與斷接狀態(tài)時記錄的暫態(tài)事務日志進行融合,如果發(fā)生沖突,則對相應的暫態(tài)事務回滾并提交,同時更新客戶端緩存[8]。
服務端事務驅動緩存一致性維護,是由服務端數(shù)據(jù)更新事件驅動發(fā)起,是服務端的云中心服務器及其Agent與中間層交互并維護中間層緩存與服務端一致性的過程[9]。
服務器端驅動語義緩存一致性維護算法,如算法1:
算法1 服務器端驅動語義緩存一致性維護算法
當中心服務器 central server有數(shù)據(jù)更新時,其中的Monitor Agent將更新通知發(fā)送給緩存了該數(shù)據(jù)項的中間層Monitor Agent,當中心服務器接收到中間層確認信息后,即可更新中間層緩存數(shù)據(jù)并將相關信息連同時間戳一同保存在Cell緩存狀態(tài)信息列表中。
在傳統(tǒng)的兩層結構中,中心服務器將更新數(shù)據(jù)消息直接發(fā)送給移動客戶端并等待確認,這時,服務端可能會由于斷接而無法及時得到客戶端確認,進而出現(xiàn)服務器“寫延遲”問題。而在CSC策略中,中心服務器更新的數(shù)據(jù)不是緩存在移動客戶端,而是在本地服務器,由于中心服務器與本地服務器有線連接,因此,不會出現(xiàn)“寫延遲”問題,并且終端斷接重連后不需要進行一致性驗證。
傳統(tǒng)算法中,服務端采取每隔一個時間段發(fā)送包括所有被修改標識的失效報告給客戶端,當終端斷接時間超過失效報告時長時,必須將緩存全部失效。終端重連后,服務端收到客戶端發(fā)送過來的所有數(shù)據(jù)請求,都以廣播方式將數(shù)據(jù)發(fā)送到客戶端。顯然,這會大大增加網(wǎng)絡通信開銷。
CSC策略,搭建CPCE三層移動云平臺,建立“雙緩存”,利用中間層為終端提供緩存?zhèn)浞莶f(xié)助終端進行緩存一致性維護。中間層對緩存數(shù)據(jù)更新操作,是更新數(shù)據(jù)序列操作,而不是發(fā)送失效報告來籠統(tǒng)更新全部數(shù)據(jù)。當終端要恢復緩存有效性時,或者有數(shù)據(jù)查詢請求時,只需要訪問中間層緩存中的更新序列并執(zhí)行,即可達到客戶端緩存與服務端數(shù)據(jù)一致性的目的。這就是CSC策略緩存數(shù)據(jù)“粒度”更新方法。
因此,這種CSC策略緩存數(shù)據(jù)“粒度”更新方法,較BTS等傳統(tǒng)失效報告方法,會大減少網(wǎng)絡通信開銷和緩存一致性維護的時間開銷。
仿真實驗任務:驗證CSC策略能夠有效解決服務端“寫延遲”和終端斷接操作及斷接重連后的一致性驗證問題,并能提高客戶請求響應速度、減少網(wǎng)絡通信開銷。
對比試驗為:帶有時間戳的廣播算法(BTS)。
仿真實驗構建三層結構移動云平臺:云中心服務器Central Server一臺為服務端,有線連接3臺本地服務器Cell Server為中間層,這些機器均采用Pentium P6100 2.00GHz處理器,內存2GB,操作系統(tǒng)WindowsXP Professional,每臺本地服務器無線連接4臺移動終端為一個“小區(qū)”,采用java語言編程,云平臺Hadoop,IBM Aglet SDK實現(xiàn)CPCE平臺的Agent系統(tǒng)[10]。仿真實驗各項參數(shù),如表1所示:
表1 仿真實驗各項參數(shù)
CSC和BTS兩種策略在“寫延遲”方面的性能對比,如表2所示:
表2 兩種策略在“寫延遲”方面的性能對比
由表2可以看出,在CSC策略中,服務端不會出現(xiàn)“寫延遲”問題,并且客戶端移動、斷接時對“‘寫延遲’增加與否情況”均無影響。而 BTS策略的情況則完全不同。這是因為,CSC策略采用三層結構移動云平臺,服務端修改數(shù)據(jù)的通知不再發(fā)給客戶端,而是發(fā)給緩存了該數(shù)據(jù)項的中間層服務器 Cell Server,由中間層服務器給服務端發(fā)回確認。而BTS算法采用兩層結構,增加了這種“寫延遲”。由表2可以看出,CSC策略允許終端斷接操作,而BTS策略則不允許。這是因為CSC策略允許客戶端在斷接狀態(tài)下工作,根據(jù)斷接時間長短啟動相應運行程序。而 BTS等傳統(tǒng)策略只允許連機狀態(tài)下工作,一旦斷接就一直處于連接等待狀態(tài)。由表2還可以看出,CSC策略在終端斷接重連后不需要一致性驗證,而 BTS策略必須要一致性驗證。這是因為,CSC策略采用三層結構移動云平臺,服務端的寫操作由 Central Server與中間層的Cell Server交互完成,不需要客戶端參與。
仿真實驗三層結構移動云平臺,有3個“小區(qū)”,無線連接終端12臺。實驗時,對12臺移動終端做記錄并取平均值。橫軸為“移動終端斷接的平均時間”,縱軸為“訪問緩存數(shù)據(jù)的平均響應時間”。兩種策略在客戶端斷接重連后訪問請求的響應時間對比,如圖2所示:
由圖2可看出,CSC策略的平均響應時間遠低于BTS算法的平均響應時間,即提高了客戶請求響應速度。這是因為,服務器廣播失效報告時間間隔為50s,對于CSC策略來說,只要是移動終端斷接時間小于cellServBroaInte,終端緩存就被認為有效,因此直接訪問終端緩存。如果大于cellServBroaInte,啟動客戶端斷接事務執(zhí)行程序,在客戶端執(zhí)行暫態(tài)事務,當重新連接后,啟動客戶端執(zhí)行集成事務,要將暫態(tài)事務同 Cell 緩存狀態(tài)信息列表融合并回滾事務,實際上大部分數(shù)據(jù)無需更新。而 BTS算法,只要離線且無論離線時間長短,重新連接后都要進行一致性驗證,因此響應時間較大。
由圖2還可看出,隨著離線時間的增大,響應時間不斷增大,因為,離線時間越長,需要更新數(shù)據(jù)就會越多,緩存更新時長都會增大,因此響應時間就會增大。
選取在客戶端緩存中從50到500個待更新的元祖數(shù)據(jù)進行一致性維護。兩種策略產生的數(shù)據(jù)通信開銷對比,如圖3所示:
由圖 3可以看出,CSC策略的數(shù)據(jù)通信開銷明顯低于BTS策略。這是因為,BTS策略在斷接重連后必須進行一致性驗證,尤其是網(wǎng)絡擁塞情況下,頻繁斷接時常發(fā)生,這無疑增加通信開銷。當斷接時間長于服務器廣播時間時,再次聯(lián)機就無法根據(jù)發(fā)送的失效報告來處理緩存有效性問題。而CSC策略,在斷接重連后不需要一致性驗證。因此,產生較少的網(wǎng)絡通信開銷。同時,BTS策略的更新操作是,先在緩存中執(zhí)行DELETE操作,再將執(zhí)行SELECTE操作得到的更新元組放入緩存,把修改個別屬性值就達到目的的操作變成了整個元祖操作。而CSC策略,采取的是“粒度”更新方法,是“個別”操作。因此,產生較少網(wǎng)絡通信開銷。
移動云環(huán)境中基于Agent的緩存一致性維護策略,在構建基于Agent的三層結構移動云平臺基礎上,根據(jù)移動終端及移動云存儲特點建立“雙緩存”,同時,利用中間層維護管理緩存并協(xié)調客戶端與服務端關系,通過移動代理來維護“雙緩存”一致性。該策略解決了傳統(tǒng)算法中存在服務端“寫延遲”和斷接操作問題,提高客戶請求響應速度、減少網(wǎng)絡通信開銷。因此,CSC策略非常適用于終端頻繁移動、斷接的無線網(wǎng)絡計算環(huán)境。下一步,將進一步研究移動云環(huán)境中基于多Agent的移動終端在“小區(qū)”間頻繁切換時的代價最優(yōu)問題。
[1] 田雪穎,劉衍珩,孫鑫.一種動態(tài)的移動社交網(wǎng)絡拓撲模型[J].計算機工程,2014,40(9):124-129,142.
[2] 張以利,楊萬扣,李峻.基于移動Agent的代價驅動的云端存儲模型[J].計算機工程與設計,2012,33(11):4240-4244.
[3] 劉曉茜.云計算數(shù)據(jù)中心結構及其調度機制研究[D].合肥:中國科學技術大學,2011.
[4] 王素貞,杜治娟.基于移動Agent的移動云計算系統(tǒng)構建方法[J].計算機應用,2013,33 (05):1276-1280.
[5] Iosup A, Ostermann S, Yigitbasi M N. Performance Analysis of Cloud Computing Services for Many-tasks Scientific Computing[J].IEEE Trans. on Parallel and Distributed System.2011,22(6):931-945.
[6] 孫一杰,張國良,張勝修.一類異構多智能體系非線性協(xié)議下的一致性分析[J].計算機應用,2015,35(1):136-139.
[7] 茹蓓,肖云鵬,張俊鵬.基于Agent的移動Web服務集成方案[J].計算機工程,2012, 38(9):49-50,54.
[8] 梁茹冰,劉瓊.移動計算環(huán)境中基于agent計算的語義緩存一致性驗證方法[J].計算機科學, 2014,41(3):132-136.
[9] 李娟妮,華慶一,姬翔.移動環(huán)境中任務分析及任務建模方法[J].計算機科學, 2014,41(10):210-215.
[10] Mell J, Grance T. The NIST Definition of Cloud Computing[EB/OL].http://csrc.nist.gov/publications/drafts/800-145/Draft-SP-800-145_cloud-definition.pdf,2011.