多文件自平衡云传输

一、应用场景

多文件自平衡云传输可以应用在局域网内的文件传输,例如视频管理系统或者需要用到服务器的文件传输。

二、各模块的功能

该项目主要包括三大核心部分:客户端、服务器、文件传输服务器。
在这里插入图片描述
服务器主要功能:向注册中心注册自己所拥有的资源。
客户端的主要功能:请求资源,作为服务器接收其它拥有该资源的客户端的文件。
文件传输服务器主要功能:心跳检测,拥有资源的客户端作为Node注册,给文件分片,响应客户端的请求,接受服务器注册。

三、过程描述

多文件自平衡云传输时基于服务发现编写的;
服务发现用于解决文件传输的负载均衡;
这个项目的大致思路是

2.1请求资源的客户端与多文件传输服务器之间的会话
  1. 首先客户端先和多文件传输服务器建立RMI短链接,根据资源 id (具体的服务名称)向文件传输服务器请求资源;
  2. 文件传输服务器向客户端提供该服务的资源文件列表,(因为每个拥有资源的客户端都会向文件传输服务器注册,所以服务器知道有哪些客户端拥有此服务的资源),并且告知该客户端有几个其它客户端作为资源拥有者参与发送;
  3. 客户端作为资源拥有者向文件传输服务器注册资源;
2.2文件传输服务器与服务器
  1. 服务器通过RMI短链接将服务名称和资源注册于文件传输服务器;
  2. 文件传输服务器告知服务器是否注册成功;
2.3拥有资源的客户端与文件传输服务器
  1. 客户端作为结点向文件传输服务器注册;
  2. 文件传输服务器将注册结果告知客户端;
  3. 文件传输服务器将发送任务发给拥有资源的客户端;
2.4拥有资源的客户端与服务器
  1. 每次需要传输文件时,服务器都会向该客户端询问,是否愿意参与发送?
  2. 如果客户端愿意发送准备发送,否则就结束会话;
2.5请求资源的客户端与拥有资源的客户端
  1. 请求资源的客户端作为服务器启动侦听线程,有几个参与发送者就启动几个线程接收;
  2. 拥有资源的客户端向该服务器发送文件;
  3. 这里通过心跳检测判断客户端目前的健康状况,然后根据健康状况向客户端发送传输任务;

总结

  1. 支持多个客户端发送: 文件是分片段发送的,并且有几个发送端,就启动几个接收线程,通过线程池管理线程;
  2. 支持断点传输: 每个文件片段发送前都有一个消息头(模仿IP的数据包和报文),该消息头存储者该片段是在那个文件里,偏移量是多少?片段长度信息;
  3. 支持自平衡: 文件传输服务器健康检测拥有资源的客户端,根据检测结果分配发送任务,从而简单的实现客户端的负载均衡;
  4. 该过程中所有的连接都是通过RMI短链接实现的,短连接对于服务器来说较为简单,存在的连接都是有用的连接,不需要额外的控制;这里因为客户端数量比较多,如果采用长连接的方式会增加服务器的压力,降低服务器的性能!
改善的地方
  1. 可以将文件片段传输信息以及一些异常写到日志里,提供断点传输的实现基础;
  2. 文件传输服务器心跳检测拥有资源的客户端,目前只是简单的实现了,通过时间戳来判断客户端的当前情况,但是这种检测并不准确,取决于网速;改善方向可以通过获取CPU的使用率来判断客户端的性能,这样更准确;

源码

源代码已提交的GitHub上;
GitHub地址:https://github.com/AiunCode/MultFile

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值