场景介绍
很多时候我们会由于各种原因无法去教室上课,所以每个老师都会将自己的课程录制下来,以供没到课的同学补课。补课的人一定是这样做的:打开视频App,选择缺课的那节视频,播放。但是视频属于教学内部资料,有的老师是不会将其永久存储在客户端的,他会存于服务器获这其他外存地方。那么在看视频时就需要获取这节课的视频文件。抛开老师和学生,站在客户端和服务器端的角度来讲。客户端点击视频名称,向服务器发送请求,服务器向其发送mp4文件。基本的流程是这样的。但是基于这样一种情况:可能有一次需要补课的人很多,而且假设他们补的是同一节课,也就是说服务器要向每一个客户端发送同一个视屏资源。这样无形中会增大服务器的压力。所以或许可以考虑将已经得到这份视频资源的客户端也调动到为新上线的客户端发送资源的过程中来。这样就可以减轻服务器的压力,而且可以极大地提高效率,增强用户体验。
项目介绍
基于上述的场景可以模拟实现一套多文件传输的系统。基本思路不变暂且将需要获取文件资源的一端视为资源请求者,将拥有该视屏资源的一端视为资源持有者。资源持有者持有该资源时向资源注册注册该资源(主服务器一定是持有所有资源的)。请求者需要获取某个资源时先向资源注册中心获知谁拥有该资源,得到资源持有者的网络地址后再向资源持有者索要具体的资源。这一整套三种角色就是之前学习的资源发现的最基本的三个角色。现在只不过将该资源具体化为多个文件。也就是说这个资源代表的就是“多文件数据”。也就是说在网络中收发文件数据。而且是多个文件一起收发。
对于细节:
- 最基本的需要完成多个文件的收发
- 几个发送端要尽可能的负载均衡
- 在获取到资源之后可以立刻转换角色为其他请求该资源的网络节点发送资源
这三点就是 多文件自平衡云传输 项目的基本功能要求