项目理念|分布式下载系统

项目名称: 分布式下载系统 导言: 在一个下载数据限制在几百Mbs或几Gbs的组织中工作?猜猜你需要下载一个大小是你一天数据限制两倍、三倍或四倍的软件。你认为你能等2、3或4天下载软件吗?英雄联盟 想通过更快地向所有用户下载速度恒定(比如FUP speed->2mbps)的文件来吓唬你的组织吗?是的!你听得对。找两个朋友,把工作做得快两倍。把n个朋友聚在一起,这项工作就完成了n次

null

概念框架

上面提到的是我们项目的几个基本用例。现在让我们谈谈我们的项目。 我们项目的想法是为用户提供一个平台,以便在更短的时间内下载大型文件。这是通过以特定数量的分区的形式促进文件的下载来实现的。下载完所有分区后,可以使用应用程序将其合并以获得原始文件。该项目由两部分组成: 1.服务器: 在从客户端接收请求的节点上实现的服务器。这个请求包括一个指向用户必须下载的文件的URL,以及必须下载文件的分区数(假设分区数为n)。作为响应,服务器发送n个唯一密钥。现在,文件被下载到服务器上,并分为n个部分(每个块的大小=OrignalFileSize/n)。一旦文件被分割,每个数据块都会用一个唯一的键进行散列。{此密钥是通过将下载u_id与区块序列号}组合生成的。现在,当服务器收到块的下载请求时。服务器发送原始数据块。

需要发送到服务器的JSON对象必须如下所示:

{
parts : '20'
}
If no error in url link or no internal error then a response as such is sent back
{
"__v" : 0 ,
"name" : "somename" ,
"ext" : ".ext"
"partCount" : 3 ,
"_id" : "58c522831a3a1919a103c863" ,
"reason" : "none" ,
"parts" : [],
"createdOn" : "2017-03-12T10:27:15.827Z" ,
"status" : "downloading"
}
If some error is occurred then err is return with a status code of 500 .
To initiate downloading parts send a POST request to localhost: 3000 /retrieve/status.
The  response looks like this .
{
"_id" : "58c52387f4e3e81a0ccaa1cd" ,
"name" : "somename" ,
"ext" : ".ext" ,
"partCount" : 3 ,
"__v" : 1 ,
"reason" : "none" ,
"createdOn" : "2017-03-12T10:31:35.037Z" ,
"status" : "done"
}


2.安卓客户端: android应用程序允许用户发出初始下载请求{发出此请求的用户将被标记为该特定文件的管理员}。如前所述,此请求包含URL和下载文件的编号。客户端收到n个服务密钥。每个密钥都将与管理员一起存储。现在管理员将这n个密钥发送给她的n个朋友。他们每个人都下载文件并将其发送回管理员。

使用的工具: 首先,服务器是基于节点的。该应用程序是使用Android Studio创建的。编码是使用Java完成的,而UI是使用XML设计的。应用程序的本地数据库(用于管理下载)已使用SQLite创建。与API的交互是通过Android的Volley库完成的,该库支持应用程序的快速联网,并以JSON对象的形式向服务器发出请求。

申请: 该项目有许多实际应用。其中两个证明了其实用性:

  • 更快的下载:这可以通过将文件分区并行下载到不同的设备上,然后合并它们来实现。例如,如果要下载一个大小为5 GB的文件,可以由五个不同的人在他们的设备上下载,然后将他们的部分发送到一个设备并合并。这将下载时间减少到下载整个文件所需时间的五分之一左右。
  • 批量下载:如果一个人每天从他的ISP获得固定数量的数据,他可以每天下载文件的不同部分,直到他拥有所有部分。例如,在我们的旅馆里,我们每天会收到1GB的数据,这些数据会在午夜更新。如果文件不是非常迫切需要,学生可以等待至少5天,每天下载一个1 GB的分区,并最终合并它们。

状态: 该项目正在开发中。下面给出了服务器存储库和android客户端存储库的GitHub链接。该项目的当前状态是服务器获取请求,下载文件并将其分成n个部分(由用户发送){该请求显然是从android客户端发送的。}。android客户端还不能在收到所有文件后将其合并。而且,目前的用户体验有点滞后。但尽管如此,开发商仍在想方设法完成该项目,并将其作为合适的产品投放市场。 应用程序:https://github.com/DravitLochan/DistributedDownloading-android 服务器:https://github.com/priyansh1161/distributed-downloading

未来计划: 1.为iOS客户端找一名iOS开发者。 2.开发桌面客户端以消除对空间的依赖。{手机的空间比PC/笔记本电脑小} 3.为喜欢发出命令的人开发基于终端的系统。

团队成员: 1.阿维纳什·夏尔马 2.德拉维特·洛坎·古普塔 3.普里扬斯·古普塔 4.Prabhat Shukla

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享