江燕良,黄海于
(西南交通大学 信息科学与技术学院,成都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.