APP下载

一种基于Openstack swift的高职院校android云盘设计与实现

2018-09-14曾新洲

电脑知识与技术 2018年16期
关键词:高职院校

曾新洲

摘要:Openstack Swift是一个高度可用的、分布式的、最终一致的对象存储。组织可以使用Swift高效、安全、廉价地存储大量数据,Swift是存储无约束增长的非结构化数据的理想选择[1]。本文基于Swift对象存储技术,开发了一套运行于Android平台上的云盘APP软件,实现了云盘用户管理功能和用户文件的云存储功能,便于高职院校师生远程管理教学资料。

关键词:Openstack;Swift;高职院校;云盘设计与实现

中图分类号:TN915.09 文献标识码:A 文章编号:1009-3044(2018)16-0055-03

Design and Implementation of Android Cloud Disk in Higher Vocational Colleges Based on Openstack Swift

ZENG Xin-zhou

(Changsha Commerce&tourism; College, Changsha 410116, China)

Abstract: Openstack Swift is a highly available, distributed, eventually consistent object/blob store. Organizations can use Swift to store lots of data efficiently, safely, and cheaply, Swift is ideal for storing unstructured data that can grow without bound. Based on Swift object storage technology, this paper develops a cloud disk APP software running on Android platform, and realizes cloud storage user management function and user file cloud storage function, It has facilitating the remote management of teaching materials by teachers and students in higher vocational colleges.

Key words: Openstack; Swift; Higher Vocational Colleges; Design and implementation of Cloud Disk

OpenStack是一种可以控制整个数据中心的大量计算、存储和网络资源的云操作系统,管理员通过用户界面执行所有管理操作,并通过Web接口为授权用户提供资源。Openstack控制平面如图1所示,包括裸机、虛拟机、容器、对象存储和块存储等组件。用户应用程序、用户界面、监控工具通过API接口访问Openstack中的上述组件[2]。Openstack有三个与存储相关的组件:Swift对象存储(Object Storage)、Glance虚机镜像存储(Image)和Cinder块存储(Block Storage), Swift是一个高度可用的、分布式的、最终一致的对象存储[3]。Swift与Amazon S3类似,但具有更强的冗余性、扩展性和持久性[3]。Swift支持多种应用,包括上传、复制、存储、移动、删除文档/图像/视频等服务,用户可以使用Swift高效、安全、廉价地存储大量数据[1]。

近年来,随着信息技术的快速发展,信息量成几何级数爆发式增长,高性能计算、海量数据处理逐渐进入人们的生活,由此带来云计算、大数据等互联网概念深入人心。谷歌drive、苹果iCloud、微软SkyDrive、亚马逊Cloud Drive、百度云、腾讯云、阿里云OSS等云存储文件管理系统应运而生,通过使用云盘,用户可以随时随地办公,并能实现数据的快速备份和恢复,避免可能出现的数据风险[4-5],Openstack 对象存储(Swift)是目前常用的一种云存储技术,本文提出了一种基于Swift对象存储的android云盘App软件,该App实现了云盘用户管理功能和用户文件的云存储功能。

目前,大部分高职院校教师倾向于将教学资源放在机房的内网服务器上,供学生在校园网内下载学习,或学生通过U盘从教师机上拷贝教学资源,这些方式都不利于教学工作的开展,基于当前高职院校教学现状,实现了一套可共享教学资源的android云盘系统,高职院校教师可将教学资源上传到web云盘中,便于学生远程下载学习,可有效提高教学效率。

1 系统架构

云盘App软件包括用户管理、文件管理、文件分类管理三个功能模块,各模块的功能如图2所示。文件管理功能包括:上传文件,新建文件夹,下载、复制、移动、重命名、删除、搜索文件或文件夹,拍照上传,录像上传,录音上传等。

2 程序框架设计

传统android应用程序倾向于使用Activity组件进行界面布局,用户进出界面时,频繁的创建、销毁Activity对象,但在页面切换过程中,通常需要传递对象数据,随着对象的不停创建和销毁,内存空间中的碎片越来越多,程序执行速度越来越慢。云盘APP软件采用Activity+Fragment创建页面整体框架,其中主界面为Activity,子页面采用Fragment实现,子页面切换时,只在多个Fragment之间进行,总处于主Activity中,有利于页面之间数据的传递。主要程序框架类如图3所示。

主要程序框架类图说明如表1所示。

3 功能实现

3.1 用户管理

在Openstack中,管理员通过项目、用户和角色来管理用户,项目是云计算中可以分配用户的组织单元,用户可以是一个或多个项目的成员,角色定义用户可以执行哪些操作。在对象存储中,项目拥有容器,用户可以与多个项目相关联,每个项目和用户配对都具有一个与其相关联的角色。

用户的文件夹和文件保存在swift服务器上以“用户名”命名的容器中,只有注册用户才能登录云盘App管理个人文件信息,注册信息由用户名、密码、确认密码、电子邮箱构成。用户注册时,后台程序获得用户输入的用户名,在keystone中创建以用户名命名的项目、用户和角色,并创建两个容器:以“用户名”命名的容器(存储用户的文件、文件夹)和以“garbage_用户名”命名的容器(存储用户已删除的文件、文件夹)。

创建用户的核心代码如下:

OpenStackClientService osServcie = OpenStackClientService.getService();

user = new User();

user.setName(username);

user.setPassword(password);

user.setEmail(email);

user.setTenantId(tenant.getId());

//在keystone中创建用户

keystone = new Keystone(keystoneAuthUrl);

keystone.token(access.getToken().getId());

user = keystone.users().create(user).execute();

3.2 文件管理

3.2.1 上传文件

用户文件通常保存在SD卡中,执行上传文件操作时,需要在AndroidManifest.xml文件中增加以下语句:

允许程序读写SD卡,当用户点击文件上传时,系统将调用AlertDialog .Builder (getActivity())的相应方法创建文件上传对话框,用户选择某个文件,然后点击“确定”按钮即可实现上传文件操作。

为了避免在上传文件过程中,因时间过长,造成主线程阻塞的问题,本系统将上传功能放置在AsyncTask异步任务的doInBackground方法中执行。同时,將大文件进行分段处理并上传所有片段,一旦所有片段上传完毕,swift就会将片段合并成一个文件,便于用户下载和查看。

3.2.2 下载文件/文件夹

云盘APP软件可同时将多个文件和文件夹下载到SD卡的download目录中,下载文件/文件夹流程如图4所示,例如:下载文件夹ABC时,先在SD卡的download目录中新建一个以ABC命名的文件夹,并将云盘ABC文件夹下所有的文件下载到SD卡的ABC文件夹中,然后再以递归方式下载云盘ABC目录下的文件夹。

3.2.3 复制、移动文件/文件夹

在云盘APP软件中,当用户选中某个或多个文件/文件夹,点击“复制”或“移动”按钮,在页面底端将显示“粘贴”和“取消”按钮。复制、执行移动文件/文件夹操作时,需要解决好以下几个问题:

1)复制、移动文件夹时,需复制、移动该文件夹下所有的文件和子文件夹;

2)当目标文件夹下存在同名的文件/文件夹时,提示用户是否覆盖该文件/文件夹;

3)当用户点击“取消”按钮时,隐藏“粘贴”/“取消”按钮,取消已选中的文件,并停止复制、移动操作。

3.2.4 重命名文件/文件夹

云盘APP可重命名文件和文件夹,在执行重命名操作时,需满足以下条件:

1) 一次只能重命名一个文件或文件夹;

2) 重命名文件时,新文件名的后缀与老文件名的后缀必须一致;

3) 新文件名/新文件夹名不能与已有的文件名/文件夹名相同;

4) 目录名中不能包含“/”等特殊字符。

3.2.5 搜索文件/文件夹

云盘APP使用item组件实现文件的模糊搜索,用户在搜索栏中输入搜索内容aa,在屏幕下方显示搜索结果,如图5所示,显示结果包括所有含aa的文件夹和文件。

3.3 文件分类管理

云盘APP软件使用android Fragment管理文档、图片、音乐、视频等不同类型的文件,在文件分类管理中,主视图采用activity管理,分类文件采用UI Fragment实现,利用Fragment,可轻松实现不同文件类型视图之间的切换,在视图切换过程中,无需销毁activity。为了便于用户操作,在文件分类管理视图中提供了下载、重命名、删除文件等功能。

3.3.1 我的文档

云盘APP软件以Fragment方式展示我的文档信息,我的文档包括pdf、ppt、pptx、doc、docx、txt、html、xls、xlsx为后缀的文件。文档信息以列表方式显示,采用ListView组件实现,并通过ListView的setAdapter方法填充数据。

3.3.2 我的图片

很多用户倾向于将日常拍摄的照片保存在云盘中,既便于随时查看,又节省手机存储空间,通过云盘APP,用户可以以列表方式或网格方式查看个人云盘相册,云盘相册中的图片以缩略图的方式进行展示,若要查看详图,只需点击该图片即可,同时,也可将云盘中的图片下载到手机的SD卡中进行查看。图片网格视图采用GridView组件实现,同时定义一个继承于BaseAdapter类的适配器类填充网格数据。

3.3.3 回收站

在云盘APP中,回收站是一个以“garbage_用户名”命名的容器,用于存放云盘用户删除的文件和文件夹,在回收站视图中,用户可以将选中的文件/文件夹还原到“用户名”命名的容器中,用户也可以清空回收站中所有文件和文件夹。

4 结束语

2017年8月4日,中国互联网络信息中心发布第40次《中国互联网络发展状况统计报告》,《报告》显示,截至2017年6月,我国手机网民规模达7.24亿,网民中使用手机上网的比例达到96.3%[6],为了节省手机存储空间,网民更喜欢将手机中暂时不用的文件、图片等资源上传到云盘中,本文基于swift對象存储技术开发了一套云盘APP软件,实现了用户文件上传、下载、复制、移动、删除等远程文件管理功能,便于高职院校师生在任何时间、任何地点、任何网络存取个人数据信息。

参考文献:

[1] Rackspace Cloud Computing. Welcome to Swifts documentation! [EB/OL]. (2018-04-06).https://docs.openstack.org/swift/latest/.

[2] Rackspace Cloud Computing. What is OpenStack? [EB/OL] https://www.openstack.org/software/.

[3] 陈海洋. Openstack存储剖析[EB/OL]. (2014-02-13).https://www.ibm.com/developerworks/cn/cloud/library/1402_chenhy_openstackstorage/.

[4] Puttaswamy Krishna P N, Thyaga N, Murali K. Frugal storage for cloud file systems [C]//EuroSys12 – Proceedings of the EuroSys 2012 Conference, 2012:71-84.

[5] Maxim S, Christoph M. Implementation of cloud-RAID: A secure and reliable storage above the clouds [C]//Lecture Notes in Computer Science, 2013:91-102.

[6] 中央网络安全与信息化领导小组办公室,国家互联网信息办公室,中国互联网络信息中心. 第40次中国互联网络发展状况统计报告[R]. 北京市海淀区中关村南四街四号:中国互联网络信息中心,2017:8-9.

猜你喜欢

高职院校
高职院校创客文化的发展模式
“一带一路”战略与盐城高职院校学生职业生涯规划的思考
浅析红色文化与高职院校思想政治教育工作
高职院校大学生顶岗实习存在法律问题的成因分析