江燕良,黃海于
(西南交通大學 信息科學與技術學院,成都610031)
隨著數字化和互聯網的飛速發展,特別是 Web2.0技術的發展,互聯網上的數據量呈現高速增長的態勢,導致互聯網數據處理能力相對不足;同時互聯網上存在著大量處于閑置狀態的計算設備和存儲資源,如果將其聚合起來統一調度和提供服務,則可以大大提高利用率,讓更多的用戶從中受益。云計算就是基于這種考慮,通過虛擬化技術將資源進行整合,形成龐大的計算與存儲網絡,從而更好地為用戶服務[1]。隨著移動終端的普及,將移動終端和云計算相結合形成移動云計算,可以很好地滿足用戶隨時隨地的資源訪問和事務處理的需求,同時也可以解決移動終端在資源上不足的問題。移動云計算的概念,就是利用云計算技術來解決移動終端的存儲和數據處理等問題,幫助用戶擺脫硬件設備、存儲設備、應用程序等條件的限制,將移動終端應用的“計算”從終端轉移到服務器端,從而弱化對移動終端設備的處理要求[2]。
Android系統是Google公司最新推出的移動設備軟件平臺,與其他Symbian、Windows Mobile手機操作系統相比,其源代碼完全開放,任何人和機構都可以免費使用。Android系統具有強大的應用層API和豐富的傳感器接入功能,其開放的平臺有利于開發者開發出各類應用軟件,是一個真正意義上的開放性移動設備綜合平臺,基于Android系統的研發己經成為熱門的方向[3]。
針對當前老年人或兒童出現迷路或走失等危機情況的應急處理等應用需求,本文提出了一種云服務下基于Android移動智能終端信息采集和處理的基礎架構。該架構基于手機云計算平臺Openmobster,將其部署在PC上作為服務器,利用周圍的無線網絡資源,使其與Android手機客戶端建立即時通信,根據平臺自身的推送和同步機制,實現數據的上傳和下發。該架構使云計算真正的“落地”,實實在在地為手機提供服務。
由于設計采用的測試環境是由無線路由器搭建的無線網絡環境,考慮到網絡覆蓋范圍的局限性,當用戶從一個網絡區域移動到另一個網絡區域時,數據的交互會發生中斷,因此在不同的網絡區域都搭建Openmobster云服務器,即使手機跟之前的服務器連接發生了中斷,只需跟當前的服務器重新建立連接,數據便從中斷處繼續上傳到當前的服務器,最后只需把這些不同服務器端數據庫的數據匯總到一個統一的數據庫,需要時還可以下載到手機端查閱。總體拓撲結構圖如圖1所示。

圖1 總體拓撲結構
本文設計的基于Android平臺開發云應用的基礎框架包含以下幾個主要部分:Mysql數據庫服務器、Openmobster云平臺、Web網頁服務器、Android手機客戶端和無線網絡。本設計采用了C/S模式和B/S模式相結合的方式,服務器主要采用Openmobster手機云平臺內嵌的JBoss服務器,并將其與Mysql數據庫和Web網頁連接起來;客戶端采用安裝了云平臺客戶端的Android智能手機。云服務器端和手機客戶端根據云平臺自身的網絡通信機制,利用周圍的無線網絡資源,建立即時通信。然后通過Web網頁下發數據請求命令,用戶的手機客戶端接收并解析命令請求,將數據上傳到服務器端的數據庫。總體架構圖如圖2所示。

圖2 總體架構圖
服務器端采用開源的Openmobster手機云平臺來搭建即時通信服務器,并根據系統的需要進行了改進和優化。該平臺是一個向本地手機程序提供“云”服務的平臺,它內嵌了一個基于J2EE的開放源代碼的應用服務器JBoss。在JBoss服務器啟動后,可以通過PC的瀏覽器啟動控制臺。JBoss的控制臺是個界面簡陋的控制臺,和其他商業化服務器的控制臺差別很大,一點都不直觀。因此考慮將控制臺改造成網頁的形式,這樣既方便用戶操作,而且界面也更直觀。
為了在該平臺的服務器跟手機終端之間實現通信,需要在JBoss控制臺程序中新增一條命令,相應地在服務器端也要新增處理這個命令的代碼,用控制臺發命令,讓服務器發Push消息給手機上的Service。服務器端的總體設計流程主要分為以下幾步:
① 對控制臺代碼進行分析,找出控制臺的命令與類的對應關系。
② 新增一個命令類,并且修改配置文件,使控制臺可以運行新命令請求。
③ 在服務器端也新增了一個對應控制臺新命令請求的類,繼承自MobileServiceBean,放在服務器端處理新增的命令請求。
④在服務器端建立一條Push通道。當新增的命令請求類在收到命令時就會通過這個Push通道向手機上的Service發Push消息。
⑤ 將控制臺改造成網頁的形式來下發命令請求。
⑥ 手機客戶端處理完命令請求,將處理結果封裝上傳到服務器端的數據庫。
客戶端的設計包括手機即時通信客戶端和Web即時通信客戶端。
Web即時通信客戶端基于JavaEE,利用Openmobster云平臺的JBoss服務器對JSP網頁文件進行熱部署,通過登錄到即時通信服務器端與手機客戶端進行通信。
在移動互聯網中,Android智能終端通過WiFi或者GPRS連接到互聯網[4]。手機即時通信客戶端通過激活手機設備連接到服務器,然后以Java bean的傳輸協議形式,對協議進行解析并執行相應的命令操作,最后再將處理的結果封裝成bean的對象在客戶端與服務器之間進行傳輸。
通常情況下用戶將自己的數據信息上傳到數據庫,其他用戶通過登錄數據庫的方式來共享數據信息。針對大文件的管理與共享,為了提高上傳和下載的效率,避免大文件上傳或下載失敗時將整個文件重新上傳或下載,實現了對文件的分割以及文件的合并操作。
(1)文件分塊
將一個較大的文件上傳到數據庫時,上傳速度往往會受到網絡寬帶的影響。針對較大文件的保存與管理,對文件進行分塊,根據網絡的帶寬設置文件塊的大小。
(2)分塊文件上傳
文件分塊上傳的時候,遍歷要上傳的文件所在的路徑,當查找到要上傳的文件時,根據文件分塊的大小,計算文件分割的塊數和最后一個文件塊的大小,從第一個文件塊開始上傳。當文件在上傳的過程中由于網絡或者其他原因,使得服務器數據庫與客戶端的連接斷開,導致文件上傳中斷,在客戶端與服務器端數據庫重新建立連接后,需要續傳文件,這時就要通過上次上傳過程中記錄的文件路徑和名稱以及相應的文件塊編號,找到上次上傳文件的斷點。續傳文件時,依然要遍歷文件所在的路徑,通過文件路徑和名稱找到對應的文件,再使用文件塊的編號和文件塊的大小獲取下一次文件要上傳的位置。
(3)分塊文件下載
下載的時候根據相關的查詢條件,使用sql語句,根據文件編號、文件路徑、文件名稱、文件塊編號以及文件塊是否已經下載等標志查找符合條件的記錄。當文件在下載的過程中由于網絡或者其他原因,使得服務器數據庫與客戶端的連接斷開,導致文件下載中斷,在客戶端與服務器端數據庫重新建立連接后,需要繼續下載文件,查詢條件不變,確保搜查出來的記錄是相同的,根據上次下載過程中標記的文件路徑和名稱以及相應的文件塊編號,找到相應斷點。將對應的記錄繼續下載,直到所有的記錄下載完成。
(4)分塊文件合并
文件的合并是文件合并下載過程中的一部分,即每次下載某條記錄中的文件內容時,先判斷該文件塊屬于哪個文件。用戶根據文件名稱、文件路徑等信息查找自己需要的文件,如果存在符合條件的記錄,就依次訪問這些記錄,并將每條記錄中的文件內容讀取出來,寫入相應的文件中。所有記錄被訪問完的同時,所有的文件分塊都被寫到了相應文件中,即不會出現文件內容的覆蓋問題,也不會額外的占用存儲空間。
老年人或小孩遇到迷路或走失等危急情況時,通過遠程控制的方式,向老人或小孩的手機發送指令,定位手機當前的位置并顯示在地圖上,然后將位置信息截圖并上傳到服務器上,用戶便可以從服務器數據庫獲取老人或小孩的位置信息,幫助他們脫離危險。該功能的設計處理流程如圖3所示。

圖3 追蹤定位功能處理流程圖
該功能的實現首先通過服務器端網頁下發控制指令并封裝,然后服務器端的相應接口定時檢測數據對象是否發生更新,并將更新的數據對象推送給手機客戶端,手機客戶端接收并解析該對象,執行相應的指令操作。其次,對指令操作的結果進行封裝并分塊,然后將其上傳到服務器端的數據庫。最后,將這些分塊的數據包下載并合并,提供給用戶。定位追蹤功能的實現流程如圖4所示。
① 用戶通過瀏覽器打開網頁,選擇需要下發的命令,然后輸入用戶名和密碼,點擊“確定”后調起JSP代碼。JSP代碼將網頁請求封裝的各功能選項字段取出,封裝進一個數據對象中。
②在服務器端定義的用于下發的Channel會定期調用相關接口對上面的封裝數據對象進行檢查,一旦發現有新插入的數據,會通過對應的接口取出該數據,將其封裝到bean對象中,通過Openmobster推送給手機終端。
③ 終端這邊后臺模塊中的服務同樣建立了對應云端Channel的處理,一旦收到Channel的下發通知,通過發送Intent的方式啟動一個Activity[4],這個Activity在啟動過程中可以通過bean的相關接口讀出對應用戶名和通道下發的bean對象,通過bean的一些方法解析并獲取下發通知中的各功能項數據字段,調用Android平臺提供的各接口,完成對手機的遠程控制功能。
④將遠程控制處理的結果封裝到一個新的bean對象里,然后注冊一個用于上傳的Channel,對數據包進行分塊處理,最終將所有分塊上傳到服務器的數據庫。

圖4 定位追蹤功能實現流程圖
⑤ 從服務器下載并合并各個數據塊,獲取上傳到服務器的數據信息。
本文通過對Openmobster手機云計算平臺的研究,結合Android智能移動終端,設計了開發移動云應用的基礎架構,由于該平臺自身的限制,不能同時管理多個手機客戶端,基于此缺陷設計了一種拓撲結構,在服務器側連接了Mysql數據庫,用于數據的存儲和管理,使不同的用戶將數據上傳到不同的服務器數據庫,最后再將這些數據匯總到一個數據庫服務器,達到數據共享的目標。另外,通過對該平臺控制臺代碼的研究,將該平臺的控制臺改造成網頁的形式,極大地方便了服務器跟手機客戶端之間的交互操作。
最后,利用該架構實現了一個追蹤定位的應用實例,不僅安全可靠,而且方便有效。最大程度地滿足了用戶的需求,更驗證了該架構具有極高的研究價值和意義。
本文設計的開發移動云應用的基礎架構,既具有傳統的C/S模式和B/S模式的優異功能,同時又結合了最先進的移動“云”計算的設計理念。在服務器端使用了Openmobster手機云平臺,該平臺的底層支持功能強大,為系統的通信連接,即數據的上傳與下發,提供了良好的保障。客戶端采用Android手機平臺,由于Android提供了豐富的接口,具有良好的可擴展性[5]。但是不能忽視的是,設計目前還存在很多漏洞,比如平臺的數據同步算法、數據上傳的效率等問題。這些漏洞和不足,將會是筆者以后繼續研究的方向。
[1]王鵬,董靜宜.一種云計算架構的實現方法研究[J].計算機工程與科學,2009,31(1):11-13.
[2]江燕良.基于Android智能終端的遠程控制系統[J].電子技術應用,2012,38(8):129-132.
[3]姚顯星,劉衛國.Android的架構與應用開發研究[J].計算機系統應用,2008(11):76-79.
[4]耿東久,索岳,陳渝,等.基于Android手機的遠程訪問和控制系統[J].計算機應用,2011,31(2):559-561.
[5]張京,劉甫迎.基于Android云計算消息框架(C2DM)的FoxNews_MID手持移動系統的研究[J].計算機科學,2011,38(10A):461-463.