P2P 分享軟體的有趣現象

2024-02-10 00:32
文章标签 分享 有趣 p2p 軟體 現象

本文主要是介绍P2P 分享軟體的有趣現象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

最近在使用 P2P 分享软体时,观察到一个有趣的现象,让我瞭解到,为何有人可以用 P2P  很快 download 到档案,有人却 download 好几天,最后不得不放弃。如下图,用红色线框起来的几个 Client,下载到 99.9% 就停止不前了,就算有 download,流量也很小,0 ~ 1.4 KB/s,为何?

 

在网路上,大家都是聪明人,P2P 分享,必须有 download 也要有 upload,而有些人比较大方,当他们档案 download 完毕后,他们还是会继续 upload。反过来,如果你只想 donwload,但是完全不 upload,就摆明是要占便宜。所以设计 P2P 软体的人,就会根据 upload data size,跟 download data size,来算出一个ratio。当 local client 向其他的 remote client 提出 download request, 这个 ratio 也会包含在 download request 里。

 

remote client 在收到你的 client download request 时,会先放到 request queue 里,然后当 remote client 闲置时,会从 queue 里找一个 ratio 最高的,优先服务。

 

那些 download 到 99.9% 的 client 是怎么回事?那是因为 ratio 太低,排队排不上。

 

ISP 提供的 Internet 连线,不管是光纤 10 M,ADSL 8M,2M ,或是 cable modem,通常是 download 快,upload 慢。因为一般用户,upload 的机会不多,例如送 e-mail,送 HTTP request,FTP upload 档等等。但是 download 用得很多,例如看 YouTube。所以很多人在用 P2P download 时,越 download 到到最后,ratio 值越低。

 

另外,因为 upload 频宽被占满,你看网页,或是看 video 会反应很慢,加上 P2P 都是 multi-thread 处理 upload/download,就更慢了。所以有人就把 upload 频宽设的很小很小。结果还是跟上面一样。

 

那些下载已经 99.9% 的 client 还有一个风险,当所有人都 download 完了资料,很可能就说 bye bye 下线了,然后就留下 0.1% 的遗憾。99.9% 的 download 档案,最后只有移除一途了。

p2p

 

这篇关于P2P 分享軟體的有趣現象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695705

相关文章

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

Java嵌套for循环优化方案分享

《Java嵌套for循环优化方案分享》介绍了Java中嵌套for循环的优化方法,包括减少循环次数、合并循环、使用更高效的数据结构、并行处理、预处理和缓存、算法优化、尽量减少对象创建以及本地变量优化,通... 目录Java 嵌套 for 循环优化方案1. 减少循环次数2. 合并循环3. 使用更高效的数据结构4

Python中常用的四种取整方式分享

《Python中常用的四种取整方式分享》在数据处理和数值计算中,取整操作是非常常见的需求,Python提供了多种取整方式,本文为大家整理了四种常用的方法,希望对大家有所帮助... 目录引言向零取整(Truncate)向下取整(Floor)向上取整(Ceil)四舍五入(Round)四种取整方式的对比综合示例应

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe