一种基于云的企业级文件存储系统研究【2】
3.2 系统详细设计
编者自行通过编程实现了这个系统,下面进行介绍:
3.2.1 开发环境介绍
开发系统 Microsoft Windows 8.1 x64
开发工具 eclipse MARS
MySQL
测试系统 Microsoft Windows 7/8/8.1
3.2.2 网间传输模块
1.TCP/IP协议使用(客户端与服务器之间传输)
通过TCP协议的使用,使得服务器和客户端之间可以建立连接,从而实现了数据的传输。
使用TCP的原因主要是因为其可靠性,能够保证其数据传输的正确。
主要使用了多线程的技术,将二者之前的信息交互与其他的数据操作分为了不同的线程,从而实现了服务器和客户端之间的数据连接与交互。
在服务器端的信息交互函数如下:
包含了开启连接、查询是否连接、接受、发送、获得端口号等TCP操作。
在客户端的信息交互函数如下:
包含了关闭、发送信息、接收信息、获得IP、端口号等TCP操作。
2.服务器的端口转换(客户端与服务器之间传输)
图3-3 端口切换示意图
如图3-2-3所示,使用了java自带的socket类进行声明,初始化时使用0作为端口号,系统自动分配端口,当获得端口后,将端口发送至客户端进行相连使用另一个端口进行相连,同时将等待连接端口断开后重新开启。按照这个方式每当需要开启新的端口进行文件传输等操作时,均通过主线程将端口号发送至客户端后进行连接。
3.服务器与网盘之间数据传输
现在各个网盘均提供了属于本身的SDK,所以读者可以根据不同的网盘调用SDK即可。
3.2.3多层加密处理技术
1. RSA加密
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。由于其基于大数分解,因此在每次加密的同时要经历大量的数据运算才能够保证其安全性,因此RSA加密算法在此处用于加密指令的传输,以及账号、密码、用户信息等私有信息。
代码实现;
其中公钥归客户端所有进行加密,而私钥则归服务器所有。
3.文件的分层保护与分享
提供给用户多个选择,通过用户的选择进行对于文件的操作,包括了加密、一般保护、分享三个层次。这个层次的划分主要通过两种操作来进行完成:
一,是否在本地即进行加密;
二,是否不加密但不分享;
三,是否可以进行文件的分享。
4.切片冗余处理
利用纠删码技术进行数据的操作,纠删码具有的特点如下:
(1) 低冗余度,高可靠性。
(2) 数据恢复代价高。丢失数据块或者编码块时,RS需要读取n个数据块和校验块才能恢复数据,数据恢复效率也在一定程度上制约了RS的可靠性。
(3) 数据更新代价高。数据更新相当于重新编码,代价很高,因此常常针对只读数据,或者冷数据。
(4) RS编码依赖于两张2^w-1大小的log表,通常只能采用16位或者8位字长,不能充分利用64位服务器的计算能力,具体实现上可能要做一些优化。
3.2.4 操作封装
将数据操作进行处理封装,最后构建成为了两个类,分别用来进行数据的冗余切片,和冗余片恢复。
将所有的代码文件进行处理后能够获得
之后进行整体的封装后得到了两个类,并且将分片设置成为函数处理。
分片函数为
合并函数为
3.2.5 云空间的动态管理
1 原理
最初公司可以申请较大的一片空间,作为基础空间,之后通过公司每次加入一名员工后,就让该员工提供一个账号(也可以是公司另外再申请一个账号),并把这个账号加入到云空间中。这样就能够实现了云空间的碎片化分配,从而最终将文件的切片分配。
2 实现
每次在有人申请加入系统后,管理员就要就要对于云空间进行动态的增长,并且通过云盘的票据认证获得云盘的操作权。最终实现了文件的碎片上传至了碎片状的云空间,大大提高了文件的安全性。
3.2.6 多线程技术操作
1.服务器的多线程
一,对于文件碎片的上传,可以采取多线程技术,同时对于多块碎片的上传,因此就可以突破网络运营商对于网络资源的限制;
二,通过多线程的实现可以同时对多个客户端进行多个操作;
三,可以对于同一个客户端进行多个不同的操作。
2.客户端的多线程
对于文件的上传和下载操作,不能仅进行一个操作,所以就要进行多线程的处理,在与服务器保持联系的同时,也能够进行下载、上传加密等操作。
分享让更多人看到
推荐阅读
相关新闻
- 评论
- 关注