"云盘"设计方案

总方案

主要组成部分:

1、存储(IP SAN+RAID-Z)

2、数据库集群(主从复制+读写分离)

3、服务器集群(Apache+Tomcat)

4、多客户端(Web端+Android端)

存储

利用FreeNAS及PC实现IP SAN

FreeNAS是一套免费的NAS服务器,它能将一部普通PC变成网络存储服务器。该软件基于FreeBSD,Samba 及PHP,支持CIFS (samba), FTP, NFS protocols, Software RAID (0,1,5) 及 web 界面的设定工具。用户可通过Windows、Macs、FTP、SSH 及网络文件系统 (NFS) 来访问存储服务器;FreeNAS可被安装于硬盘或移动介质USB Flash Disk上,所占空间不足 16MB。

在FreeNas中将三块硬盘组成RAID-Z后,在服务选项中激活iSCSI服务,即可在 Windows中使用iSCSI发起程序挂载磁盘阵列。

集群

数据库集群

一台MySQL服务器是很难做到高可用(HA),如果没有及时做数据备份,一旦遇到故障宕机后将无法继续提供后端数据业务。单一的数据库节点对于高并发、高负载场景呈现出各种瓶颈问题也越来越突出。

数据库集群技术通过水平扩展的方式将负载分散到多个节点上以解决一个数据库节点的不足。

本方案基于MySQL数据库主从复制及基于Amoeba For MySQL读写分离,利用Amoeba将请求分发到不同的MySql服务器,以达到使我们项目在原有的基础上具有更快的读写速度,给用户更快的响应,更高的负载。

服务器集群

Tomcat集群负载均衡有三种方式:mod_proxy、mod_proxy_blancer、mod_jk

本方案采用mod_proxy_balancer,它是mod_proxy的扩展,提供负载平衡支持,通过mod_proxy_balancer.so包实现负载平衡。

采用此方式,当用户请求发布的web项目时,apache服务器会根据我们的配置,将请求分发给集群中的不同的Tomcat服务器,实现服务器的负载均衡,相对于一个服务器来说,这种集群可以响应更多的用户请求而一直保持活跃状态。

同时,当我们集群中的某台Tomcat服务器意外停止,这时,集群中的其它服务器会照常工作,并不会影响用户对我们项目的访问。当意外停止的服务器恢复工作时,apache会实时把它加入集群当中,实现请求分配均衡。

对于多个服务器session同步问题,采用session复制模式实现。这样即使用户的请求被分发到不同的服务器,session域里面的数据是实时共享的。

数据库设计

Web客户端

上传文件

上传之前先扫描文件,利用MD5算法生成文件报文摘要,和已经上传的文件摘要对比,如果相等则放弃上传文件,直接记录该文件的新信息,实现秒传功能。

新的文件提交到存储设备上的接受程序,Tomcat实现跨域文件表单提交时,在要被跨域提交tomcat服务器的WebApps下的root文件夹添加一个,否则会出现安全错误不可以提交的问题。

注意:使用ajax的时候,一定要在url上添加时间戳,不然会导致ajax的作用只能使用一次,因为如果浏览器在解析地址的时候如果发现某次的地址跟之前的完全一样,就会直接从浏览器的缓存中读取数据,而不会发送请求,以提高速度。所以我们在使用ajax的时候一定要加上时间戳。

Android客户端

利用Apache开发的HttpClient模仿浏览器的表单提交,采用的数据格式是JSON数据格式,得到了数据之后再由Android客户端解析JSON数据,并将其封装到Java Bean中传输到Activity中进行使用。

时间: 2024-08-06 07:54:42

"云盘"设计方案的相关文章

百度网盘没有跟进,用户也没有因为360云盘容量大而选择放弃百度网盘

作者:何小锋链接:http://www.zhihu.com/question/51800743/answer/127548706来源:知乎著作权归作者所有,转载请联系作者获得授权. 不请自来的.那些说分享功能.政策原因而关闭的网盘,大部分都是为了让政府来背黑锅找的措词!不明真相的群众也乐意相信. 商业的本质是利益,云盘的成本才是绝大部分网盘关闭或者调整的原因!云盘的成本才是绝大部分网盘关闭或者调整的原因!云盘的成本才是绝大部分网盘关闭或者调整的原因! 虽然早在今年9月份就感觉到360云盘快撑不住

极客DIY:使用树莓派制作一套“NAS+私有云盘+下载机”

原创作者:HackLiu 0×00 前言 ‍ ‍ 如果你家里有多台设备需要联网需要娱乐,你一定会或多或少遇到设备碎片化带来的烦恼.当然,已经有很多厂商包括新晋的小米.360在内的互联网公司做了这个事情,给你搞个家庭存储中心,基本能解决你的大部分需求.但是,本着不折腾就会死的机翼安劲儿,咱自个来造个低成本低功耗的解决方案,成本680元,耗时2个小时左右. 0×01 NAS基础设施搭 材料:先要有Raspberry Pi/路由器/破电脑等能装Linux的设备,适当容量的移动硬盘或SATA硬盘: 原理

安卓课程设计--利用socket在电脑和手机之间实现简单云盘

下面是服务端的代码 package lyj.srever; public class Server { public static void main(String[] args) { new ServerThread().start(); } } package lyj.srever; import java.io.File;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import

网络云盘的存储机制

之前对于网络云盘的存储机制有过猜测,今天看了网上的博文分析(下面贴有原文),大部分证实我的猜想.总结来说,目前国内的网络云盘的存储机制主要从以下三点着手: 对于用户使用习惯和行为模式进行调研和分析,可以大致分析正常用户一天/一月/一年的平均存储容量大小需求: 采用存储集群(云计算技术解决)和分布式存储等技术来实现用户文件的存储,用以解决用户突发性存储需求和需求缓慢增长的问题: 针对用户重复性的存储的问题,采用计算存储文件MD5值并只保存唯一文件的方式解决,通过诱导用户使用客户端上传来分担计算MD

360云盘功能研究

天天抽奖(酱油)游戏中心(广告)每日活动(广告)网速测量器(酱油) 自动备份(核心功能),最多50个自动备份.所有网络文件都在“我的自动备份文件夹”中.不能指定备份时间.同步文件夹(核心功能),只能是网络与本地同步,网络文件夹可随意指定,本地却不行(会打乱用户文件夹目录),最多5个同步.所有本地文件都在“云盘同步文件夹”中..不能指定备份时间.文件时光机(核心功能,但也只有90天),通过网页预览和下载云盘回收站(核心功能) 操作历史(非核心功能),简单分类锁定云盘(非核心功能)文件去重(非核心功

GIT+云盘作 做 文档管理工具

GIT+云盘作 做 文档管理工具 在工作中, 会遇到公司的文档 和 自己家里的 文档进行同步的问题, 通常我们使用U盘作为传输节制, 但是不是非常好,文档的改动都不能发现, 导致回家同步的时候, 出各种问题. 这时候我们 就可以 考虑使用GIT了,  外加一个百度云盘 则就顺利的完成了 文档同步和历史文档管理 1.  下载必要的工具msysgit+git tortoise + 百度同步盘. 2.  安装三个工具, 并且在初次使用git tortoise 的时候需要指向msysgit的bin目录

【143】360云盘资源

125T资源视频:http://yunpan.cn/QhEm5F5sifzXX(提取码:8ec6)音乐:http://yunpan.cn/QhEFMSxygqycK (提取码:8023)电子书:http://yunpan.cn/QhEH849NQFE5x (提取码:5f4d)教程:http://yunpan.cn/QhEHr2nGs9Qxc (提取码:e38f)软件:http://yunpan.cn/QhdNVWGBnpvJU (提取码:f8d6)其它:http://yunpan.cn/QhAK

Ceph与OpenStack整合(仅为云主机提供云盘功能)

1. Ceph与OpenStack整合(仅为云主机提供云盘功能) 创建: linhaifeng,最新修改: 大约1分钟以前 ceph ceph osd pool create volumes 128 128 ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms,

为什么360、百度、腾讯出的Mac端云盘客户端都只有同步盘?(用户量小,而且同步盘开发成本低)

如题,顾名思义,同步盘是用来同步的,不具备增量的功能,像这三家在Windows端出的客户端都是即有同步也有增量的. 陆续出来的,可能大家更多的是跟随策略,不得不提dropbox是这样的形式.mac电脑更多还是高端用户,他们也可以无需学习成本的使用同步盘模式.但是随着目前这几个盘的空间都越来越大,相信很快也会出网盘模式.微云的mac端就有查看云端文件功能,跟web的体验一致. Mac用户相比较Windows用户少,所以先只开发同步盘后续开始研发同步增量盘,貌似在LINUX下,那一家都没有客户端 简