基于Openstack+Swift的企业云盘设计与实现

2019-01-29 02:45刘玮玮
电子测试 2018年24期
关键词:网盘云盘回收站

刘玮玮

(淮安淮网科技有限公司,江苏淮安,223001)

0 引言

云盘存储近几年己被广泛的应用在企业和个人的数据存储中。云盘存储不再像硬盘存储设备那样必须随身携带,人们可以在任意时刻通过互联网获取到存储在云盘上的数据。如今,移动互联网技术迅猛发展。传统的互联网与移动通信技术的完美结合,使得移动设备可以通过WIFI、3G、4G技术连接到网络访问数据资源。本文通过研究Openstack+Swift的系统架构,提出了基于该架构之上的伪文件系统,并实现了伪文件系统中各项操作,将这些复杂的后台实现技术与算法进行封装,让用户在客户端上做简单的操作就可以完成复杂的云存储过程,实现云盘的各项操作。

1 系统架构设计

图1 系统结构设计图

使用Openstack的云存储Swift,构建网盘客户端APP,实现常规的文件操作。常规的网盘功能包括登录、获取文件列表、分类、上传、新建、拍照上传、移动、复制、下载、删除、还原、打开和查找等。

(1)Swift云存储云端服务:能够连接OpenStack Swift云存储,需要在Android端引入SDK,同样使用上面的 SDK项目包(openstack-java-sdk)。目前 SDK是成熟的工程,直接引入项目包。实现的原理基于HTTP协议连接云存储Swift Restful服务。同样使用SKD项目包中封装的OpenStackClientService进行异步网络操作。

(2)登录:还原和登录各定义一个Activity。Swift账户管理使用Keystone完成,这里需要Keystone的访问SDK,openstack-java-sdk提供了对OpenStack各服务访问的接口,可以直接使用。

(3)文件系统:目前SDK提供了对Swift云存储的操作,云存储不是一种文件系统(File System),为了实现文件,基于Swift的SDK接口,封装模拟文件操作的类文件系统,命名为OssFilesystem。

(4)主界面:使用一个Activity来完成主界面,导航通过NavigationView控件实现、文件列表通过Fragment来实现。不同的分类操作不同,我们使用不同的Fragment实现,降低程序的复杂性。

(5)所有文档:实现展示所有文件类别,采用Fragment。

(6)分类:实现文档、图片、视频分类的文件列表,采用Fragment。

(7)回收站:实现回收站的文件列表,采用Fragment。

(8)文件上传:上传本地文件,实现一个本地存储文件导航选择窗口Activity,完成文件选择和上传。工具类,包括文件操作,处理本地缓存,一个文件打开时,需要下载本地。同时了提供性能,对当前操作文件路径进行缓存,跟踪状态信息。

2 SwiftStorage SDK核心实现

public class AndroidOpenStackClientConnector implements OpenStackClientConnector{for(Map.Entry>entry:request.queryParams().entrySet()){for(Objecto:entry.getValue()){if(queryParameters.length()==0){queryParameters.append("?");}else{queryParameters.append("&");}queryParameters.append(encode(entry.getKey())).append("=").append(encode(o.toString()));}}String sUrl=null;if(!request.endpoint().endsWith("/")&&!request.path().startsWith("/")){sUrl=request.endpoint()+"/"+request.path();}else{sUrl=request.endpoint()+request.path();}if(queryParameters.length()>0){sUrl+=query Parameters;}sUrl=sUrl.replaceAll("","%20");for(Map.Entry>h:reque st.headers().entrySet()){StringBuilder sb=new StringBuilder();for(Object v : h.getValue()) {sb.append(String.valueOf(v));}urlConnection.addRequestProperty(h.getKey(),EncodingUtils.getString(sb.toString().getBytes("utf-8"),"ISO-8859-1"));}urlConnection.setRequestMethod(request.method().name());if(request.entity()!=null){urlConnection.setDoOutput(true);

urlConnection.setRequestProperty("Content-Type",request.entity().getContentType());if(request.entity().getContentType().equals("application/json")){ObjectMapper mapper=OpenStackClientService.mapper(request.entity().getEntity().getClass());StringWriter writer=new StringWriter();mapper.writeValue(writer,request.entity().getEntity());urlConnection.getOutputStream().write(writer.toString().getBytes());}

3 结束语

近年来信息化的飞速发展催生了大数据时代的到来,企业面临着大量数据存储所带来的硬件设施缺乏、维护成本高等难题。面对庞大的云存储市场,电信运营商要想抓住机遇,把云存储服务转化成自己新的业务增长点,关键是要利用自身资源优势构建一种可快速弹性扩展、灵活管理的开放式云存储服务平台。本文通过研究Openstack+Swift的系统架构,提出了基于该架构之上的伪文件系统,并实现了伪文件系统中各项操作,为企业数据存储提供新的途径。

猜你喜欢
网盘云盘回收站
一键搬家!轻松实现从百度网盘到阿里云盘的直传
编辑精选APP
能量回收站
网易网盘消逝谁是“凶手”?
神奇裁缝最省布
Windows 10回收站问题巧解决
网盘存储服务商的版权义务探析
网盘关停
云端难题巧解决
阿里发布SSD云盘 性能大幅提升