严志
(长沙民政职业技术学院软件学院,湖南长沙410004)
当前应用变得越来越复杂,需要支持更多的用户、更强的计算能力、更加稳定安全,为了支撑这些不断增长的需求,企业需要花费巨大的成本。云计算能够给用户提供可靠、自定义、最大化资源利用的服务,是一种崭新的分布式计算模式[1]。云计算将传统的IT工作站转变为以网络为依托的云平台运行,极大地整合了计算资源,使按需分配成为可能[2]。
在学术界和工业界共同推动之下,云计算及其应用呈现迅速增长的趋势,各大云计算厂商如Amazon,IBM,Google,Microsoft,Sun,阿里巴巴等公司都推出自己研发的云计算服务平台。在学术界,主要的开源云计算平台有OpenStack,Eucalyptus、CloudStack 和 OpenNebula[3]等。基于云平台的应用越来越多,郭雷风等[4]提出运用云计算技术建立农村综合信息共享平台;张健博 [5]提出在OpenStack云平台基础上建立云监控系统,能够无缝对接OpenStack云主机的监控与管理,使资料利用更加合理;杨善林等[6]从管理的视角对基于云计算的多源信息服务系统作了综述,探讨了云计算环境下多源信息服务系统的体系结构及关键技术;陈琳等 [7]提出了基于微软的Windows Azure云计算平台的自动气象监测网络系统,实现气象信息的共享。
全国云计算职业技能大赛依托南京55所提供的基于OpenStack的云平台,该平台主要提供了一个类似百度云盘系统,系统搭建在Swift虚拟系统里。Swift是OpenStack开源云计算项目的子项目,提供弹性可伸缩、高可用的分布式对象存储服务,适合存储大规模非结构化数据,网络云盘所有文件都保存在Swift系统。
1.Swift云计算平台架构
Swift采用层次数据模型,共设三层逻辑结构:Account/Container/Object(账户/容器/对象)。这里的Account和个人账户不是一个概念,可理解为租户,租户是Swift系统分配给用户的一个账户,每个租户会分配一个容器Container,容器类似文件夹,租户的所有文件都会放在该容器下。Object代表封装一组对象,对象由元数据和数据两部分组成,一般指容器下的各种文件对象。Swift采用完全对称、面向资源的分布式系统架构设计,所有组件都可扩展,避免因单点失效而扩散并影响整个系统运转,通信方式采用非阻塞式I/O模式,提高了系统吞吐和响应能力,其数据模型如下图1示:
图1 Swift文件系统
南京55所网络云盘系统是在Oracle VirtualBox下装载Swift系统实现的虚拟云,该系统只提供了框架,文件操作功能需自行开发,用户通过安卓端和PC Web端口访问服务器,两者待完成的功能相似,主要是对Swift租户上的文件进行创建、移动、删除、上传、下载、复制/粘贴、预览、分享等操作,大数据模块是针对网络数据进行爬取、清洗、整理,并展示大数据词云分析图表。系统架构如图2所示。
图2 云盘系统架构
2.Android端核心技术
移动网络云盘客户端采用的主要技术是网络异步加载数据到自定义数据适配器,将适配器的数据绑定到ListView控件,数据适配器的数据对象是SFileData对象,该对象包含文件图像、大小、类型、路径、名称等参数构成。其流程如下图3所示。
图3 网络云盘文件系统加载流程
2.1 OpenStack网络访问
OpenStack网络访问参数是一个5元组,即<USERNAME,PASSWORD,SWIFT_IP,TENANTID,TENANTNAME>,USERNAME和 PASSWORD对应 keystone用户名、keystone密码,该用户、密码可以通过命令在Swift服务器上建立,android端登录时需要用到;SWIFT_IP是Swift服务器的IP地址,该服务器独立部署在主机;TENANTID是Swift访问序列号,是55所公司自定义的系统产品加密序列;TENANTNAME是keystone租户名,租户是指在Swift服务器上开辟一个空间,用于存储网络用户的文件,方便不同的用户管理自己的文件,一般与keystone用户名相同。
2.2 自定义数据适配器及数据加载
通过Openstack网络访问指定目录下的文件列表,并以集合的形式绑定到自定义的数据适配器里,ListView控件加载数据适配器,形成如下图4所示的文件系统。
ListView的数据使用异步任务AsyncTask完成数据加载,其关键算法步骤如下:
(1)通过OpenstackService获得当前服务
(2)根据服务获得当前租户所有的操作文件集
(3)将获得文件集采取异步任务方式提交到异步执行方法中
(4)获得当前的Swift目录,过滤当前租户的操作文件集,设置文件系统
(5)将文件集绑定到数据适配器并显示到ListView控件
图4 文件系统加载
2.3 手机端功能模块实现
以排序功能为例,通过Android手机操作在Swift服务器上文件,以文件大小、文件创建时间、文件名的升降序方式排序,并将排序结果绑定到ListView。其关键的思想是在异步任务里调用创建文件夹的API,并且更新ListView的数据,其他模块和此类似。
图5 文件排序
3.Javaweb端核心技术
3.1 Web端环境搭建
Swift服务器配置是非常重要的一环,配置不成功,后面的功能开发无法进行,配置流程图如下所示:
图6 javaweb开发配置
其中,开发主机配置相当关键,Swift服务器和开发主机独立,通过wifi网络设置使得开发机器和服务器在同一个网段里,开发主机通过局域网访问Swift服务器。
3.2 Web端技术路线
Web端采用 Javaweb技术,前端使用 Flat-UI、Jquery、Bootstrap框架等,当用户点击触发javascript事件后,js采用Ajax数据提交方式向后台递交数据,使用SpringMVC技术,前后端交互,Spring与Swift服务器交互采用南京55所API。其架构如下图所示:
图7 javaweb技术框架
3.3 Web端模块实现
Web主要功能在于前端javascript代码编写,后端使用SpringMVC框架接受数据,并向前端反馈数据。以创建文件夹功能为例,通过前端js事件调用createDir()函数,将数据使用ajax提交到后台SpringMVC执行,然后将执行结果反馈到前端。Js关键代码:
4.大数据端系统
大数据是最新加入的功能模块,还处于比较初级状态,数据采集51job招聘信息,挖掘招聘岗位需求及技能要求,并通过d3.js可视化框架展示岗位和技能的匹配图。大数据分为数据爬取模块、数据分析模块、数据展示三个部分。
爬取模块采用Webmagic框架,webmagic是一个开源的Java垂直爬虫框架,功能覆盖整个爬虫的生命周期(链接提取、页面下载、内容抽取、持久化),支持多线程抓取,分布式抓取。
爬虫算法步骤:
(1)根据种子链接,抽取目标链接放入待爬取队列;
(2)解析队列中的链接内容,并抽取需要的信息;
(3)处理抽取结果,将处理信息保存到文件或数据库等;
(4)将数据上传到hadoop系统进行大数据计算。
数据集存入hadoop系统后,进行数据清洗,主要采用Map/Reduce进行数据清洗,将数据规范化处理,然后利用mahout相关的算法进行数据分析挖掘,最后将结果持久化到数据库。
5.研究实效及结论
本文详细解剖云计算环境下网络云盘系统架构,论述了开源云计算Swift的系统框架,对于如何搭建自己的私有云系统及云应用开发,值得借鉴。从职业技能大赛角度来说,云平台的底层架构不是高职学生需要掌握的要素,只需要知道如何使用现有的开源技术构建自己的云环境即可。环境搭建后,后续的开发工作还需要继续跟进,需要运用到Android、JavaWeb及大数据方面的知识,并提供了详细的实现细节,对于备战职业技能竞赛有着参考作用。
云计算、大数据、人工智能是下一场IT技术争夺的焦点,目前国内高职院校都非常重视,但是如何将新技术应用于高职课堂还不清晰。通过研究南京55所云计算平台,发现该平台对于教学有很好的辅助作用,可以应用到Android课程、Javaweb课程以及大数据课程,让学生接触前沿技术并提供项目实践,同时有利于职业技能大赛准备。
【参考文献】
[1]李乔,郑啸.云计算研究现状综述[J].计算机科学,2011,38(4):32-37.
[2]杨青峰.云计算时代关键技术预测与战略选择[J].中国科学院院刊,2015,30(2):148-169.
[3]邓红,王东兴.主流开源云平台的商业选择[J].电脑知识与技术,2012,8(32):7830-7832.
[4]郭雷风,王文生.农村综合信息服务云平台若干关键技术研究[J].天津农业科学,2015,21(4):46-50.
[5]张健博.基于OpenStack云平台的监控关键技术研究[D].重庆大学,2016.
[6]杨善林,罗贺,丁帅.基于云计算的多源信息服务系统研究综述[J].管 理 科 学 学 报,2012,15(5):83-95.
[7]陈琳,齐文新,齐宇.基于云计算的自动气象监测网络系统[J].计算机应用,2012,32(5):1415-1617.