任务1.1 了解云存储的基本知识

1.1.1 相关知识

云存储是一种新兴的网络存储技术,是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,对外提供数据存储和业务访问的系统。使用者可以在任何时间、任何地方,通过任何可联网的装置连接到云上,从而方便地存取数据。

对象存储是实现云存储的一种主要方式。对象存储是网络提供的基于互联网的简单对象存储服务,提供简单易用的RESTful API接口,使客户在任何时间、任何地点都能通过互联网访问对象存储的数据。通过对象存储服务,客户不用担心数据丢失、数据安全、数据存储空间等问题,把更多精力聚焦在如何利用数据创新等业务上。

Swift最初是由Rackspace公司开发的高可用分布式对象存储服务,并于2010年贡献给OpenStack开源社区作为其最初的核心子项目之一,为其Nova子项目提供虚机镜像存储服务。Swift构筑在廉价的标准硬件存储基础设施之上,无需采用RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

在OpenStack中,Swift主要用于存储虚拟机镜像和Glance的后端存储。在实际运用中,Swift的典型运用是网盘系统,存储的数据类型大多为图片、邮件、视频、存储备份等静态资源。

Swift不能像传统文件系统那样进行挂载和访问,只能通过RESTful API接口访问数据。Swift不同于传统文件系统和实时数据存储系统,它适用于存储和获取一些静态的永久性数据,并在需要的时候进行更新。

OpenStack Swift作为稳定和高可用的开源对象存储被很多企业作为商业化部署,如Rackspace公司通过结合Swift和Nova提供IaaS云服务,微软的SharePoint、新浪的App Engine、韩国电信的Ucloud Storage服务均使用了OpenStack Swift技术。有理由相信,因为其完全的开放性、广泛的用户群和社区贡献者,Swift可能会成为云存储的开放标准。

1.1.2 实现步骤

1.主要功能设计

Web云网盘软件(以下简称网盘)是一个云存储系统。该软件可以为每个用户开辟独立的存储空间,使用户随时随地访问和管理文档资产。该软件使用OpenStack Swift服务实现,实现思路如下。

(1)在OpenStack创建一个租户(Swift),租户下包括多个用户。租户创建云存储空间100GB。

(2)每个用户支持注册和登录功能。如果是新用户,进行注册,同时注册一个租户,以及租户下的用户。如果是已有的用户,可以进行登录及管理登录。

(3)每个用户登录时,如果没有容器,默认创建两个容器,包括Container目录和Recycle回收站。其中Container目录用于存放常规数据,Recycle回收站用于存放用户删除的数据。

(4)为每个用户分配单独的存储空间,共享存储空间为所有用户共有。

(5)网盘提供常见的文件操作功能。

网盘的主要功能见表1-1。

表1-1 网盘的主要功能

2.原型界面设计

分析了用户的功能操作流程后,就可以对项目进行界面设计了。下面介绍本项目的主要操作界面。

(1)注册登录界面

登录云网盘界面如图1-1所示。

图1-1 登录界面

(2)文件管理界面

文件管理和操作界面如图1-2所示。

图1-2 文件管理和操作界面

(3)文件分享界面

文件分享界面如图1-3所示。

图1-3 文件分享界面

群文件分享界面如图1-4所示。

图1-4 群文件分享界面

(4)文件预览界面

文件预览界面如图1-5所示。

图1-5 文件预览界面

(5)回收站界面

回收站界面如图1-6所示。

图1-6 回收站界面

3.软件运行效果

(1)用户可以使用账号和密码登录网盘系统,如图1-7所示。

图1-7 登录界面

登录成功后,系统显示该用户的所有文件列表,如图1-8所示。

图1-8 所有文件列表

(2)通过左侧的导航菜单可以选择显示某类型的文件列表,例如,可以选择“我的图片”选项,网盘系统则显示该用户的所有图片文件。图片列表有两种显示方式:列表视图和网格视图。其中列表视图为默认显示视图,显示效果如图1-9所示。

图1-9 列表视图

切换到网格视图,显示缩略图效果,如图1-10所示。

图1-10 网格视图

(3)在列表视图中,中间的一排按钮是文件操作菜单,也是系统的主要功能入口,如图1-11所示。

图1-11 文件操作功能菜单

4.技术架构设计

OpenStack经过多年的发展,参与这个开源云计算项目的公司和人员越来越多,OpenStack社区也越来越活跃,对OpenStack的支持会越来越丰富。目前OpenStack社区为OpenStack提供了多种语言的SDK,包括Python、Java、PHP等语言,后续还会有更多其他语言的SDK出现。

基于OpenStack的开发,可以使用OpenStack本身的API开发,也可以使用第三方的SDK开发。在本项目中,使用woorea的OpenStack Java SDK实现与Swift通信的功能,woorea的使用可参考网址https://github.com/woorea/OpenStack-Java-sdk。

本项目为三层架构设计:

(1)显示层使用Bootstrap技术搭建界面;

(2)业务层使用Spring技术实现业务逻辑;

(3)存储层使用OpenStack Swift服务和MySQL服务器实现数据存储和管理。本项目的整体架构如图1-12所示。

图1-12 网盘项目的整体技术架构图