title author date CreateTime categories
在 P2P 文件分享应用以文件或文件段为单位的优缺
lindexi
2019-09-11 10:23:27 +0800
2019-09-11 10:17:46 +0800
P2P

在我用了好几个 P2P 文件分享应用之后,我对比了多个应用对资源的处理,可以看到基本上可以分为文件夹级的、文件级的和文件里面的一段段级的。本文将会告诉大家使用不同方法的优点和可能的坑方便大家在开发时候选择

存储冗余

用文件作为单位的,例如 UTorrent 工具,本身存储的文件就是用户下载的文件,除了用户下载文件之外只需要 Torrent 文件作为文件信息保存

而用文件段作为单位的,例如 IPFS 工具,将需要额外的空间存储文件段,因为一个不同的文件可能存在相同的文件段。例如 git 管理,将会多了一份文件大小

而文件段作为单位的,依然可以使用原文件作为资源,此时需要额外记录文件偏移量

索引

用文件作为单位的,可以直接指定文件 id 作为索引,从而拿到文件内容

用文件段作为单位的,从文件 id 拿到了文件包含的文件段,从文件包含的文件段里面的索引拿到文件段内容

传输

使用文件作为单位的,需要使用下载链机制,这样才能作为支持多个设备提供下载

使用文件段作为单位的,默认就支持让一个文件从多个设备下载,因为一个文件包含多段,每一段都可以进行不影响的下载

校验

整个文件进行校验的速度会比较慢,而使用文件段作为校验的,可以在每一段下载完成之后就进行每一段的校验

完整的 P2P 应用需要包含哪些功能

分布式文件系统 IPFS 与 FileCoin

如何在IPFS里面上传一张图片 - omnispace的博客 - CSDN博客

IPFS: BitSwap协议(数据块交换) - omnispace的博客 - CSDN博客

OpenBazaar

Fastdfs分布式文件系统 - zhongliwen1981的专栏 - CSDN博客

IPFS:建立一个静态网站 - lzl001的专栏 - CSDN博客

【我的区块链之路】- 谈一谈IPFS原理及玩法 - qq_25870633的博客 - CSDN博客

详解IPFS的本质、技术架构以及应用 - 老杨QQ122209017的博客 - CSDN博客

IPFS 使用入门 - 深入浅出区块链 - CSDN博客

2019-9-11-在-P2P-文件分享应用以文件或文件段为单位的优缺的更多相关文章

  1. Vscode配置C++运行环境(2019/1//11更)并加入bits/stdc++.h头文件

    因为重装系统,以前配置好的c++环境又没了.所以有要配置一遍. 1 下载mingw64或minw, 配置好环境变量:C://mingw64//bin;  在cmd下用g++ -v验证是否成功. 2. ...

  2. 《c# 实现p2p文件分享与传输系统》 二、 设计

    c#实现P2P文件分享与传输系统 二.设计 在上一篇文章中,介绍了P2P网络的常用模型,并确定了EasyP2P系统的框架,本文将就此设计完成它的主要结构和运作流程. 1. 首先是Tracker Ser ...

  3. 《c# 实现p2p文件分享与传输系统》 一、 模型

    c#实现P2P文件分享与传输系统 一.模型 P2P的概念大家都不陌生,也就是所谓的“点对点传输”,即不直接通过服务器,在两台或多台客户端之间传输数据,实现信息交流和资源共享.P2P技术已经发展了很多年 ...

  4. 《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)

    c#实现P2P文件分享与传输系统 二.设计 - 续(NAT穿透) 首先要抱歉,因为这些日子较忙,没有写文章,这个系列拖了很久,现在开始继续.  上一篇文章介绍了p2p系统Tracker Server和 ...

  5. 2019年11个javascript机器学习库

    Credits: aijs.rocks 虽然python或r编程语言有一个相对容易的学习曲线,但是Web开发人员更喜欢在他们舒适的javascript区域内做事情.目前来看,node.js已经开始向每 ...

  6. 打开随身U盘_办公专用盘 2019年11月29日

    ;;; ; 打开随身U盘_办公专用盘 2019年11月29日 ; https://www.autoahk.com/?p=16553; https://www.cnblogs.com/delphixx/ ...

  7. 'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写

    'Rem EverythingAutoSetup.VBS 安装Everything的VBS脚本 2019年11月25日写 'Rem Everything是voidtools开发的一款本地NTFS文件和 ...

  8. 键盘和鼠标闲置超时时关闭显示器并锁定电脑桌面的AutoHotkey脚本 2019年11月24日写

    /* 键盘和鼠标闲置超时时关闭显示器并锁定电脑桌面的AutoHotkey脚本 2019年11月24日写 在电脑桌面锁定时移动鼠标就会显示登录界面,此时即使超过电源设置的时间电脑也不会关闭显示器使得屏幕 ...

  9. 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件

    [源码下载] 背水一战 Windows 10 (11) - 资源: CustomResource, ResourceDictionary, 加载外部的 ResourceDictionary 文件 作者 ...

随机推荐

  1. Win7环境下VS2010配置Cocos2d-x-2.1.4最新版本的开发环境(亲测)

      写这篇博客时2D游戏引擎Cocos2d-x的最新版本为2.1.4,记得很久以前使用博客园博主子龙山人的一篇博文<Cocos2d-x win7+vs2010配置图文详解(亲测)>成功配置 ...

  2. Android高级架构进阶之数据传输与序列化

    更多Android高级架构进阶视频学习请点击:https://space.bilibili.com/474380680本篇文章将从以下几个内容来阐述数据传输与序列化: [Serializable原理] ...

  3. 使用wireshark在windows平台下捕获HTTP协议数据包中的帐号密码信息

    1.打开wireshark软件,从Interface List中选择相应的网卡,例如我的PC机上是“本地连接”,然后选择”Start”启动抓包程序. 2.打开学校主页,输入账号和密码登录校内邮箱. 3 ...

  4. 并发编程 --进、线程池、协程、IO模型

    内容目录: 1.socket服务端实现并发 2.进程池,线程池 3.协程 4.IO模型 1.socket服务端实现并发 # 客户端: import socket client = socket.soc ...

  5. 搭建一个node.js项目

    初始化项目 新建一个文件夹,运行 npm init 初始化项目 mkdir okadaGo cd okadaGo npm init 按照提示输入一些项目的相关信息 D:\web\node>mkd ...

  6. Spring 在Web中的应用

    Spring 在Web中的应用 在web项目开发中,不会直接实例化ApplicationContext对象,如果想用到ApplicationContext,一般的步骤: 配置一个监听器ContextL ...

  7. nginx防DDOS、cc、爬虫攻击

    一.防止DDOS.CC攻击 http { limit_conn_zone $binary_remote_addr zone=perip:10m; limit_conn_zone $server_nam ...

  8. tcmalloc jemalloc 和ptmalloc 对比

    ptmalloc 是glibc的内存分配管理 tcmalloc 是google的内存分配管理模块 jemalloc 是BSD的提供的内存分配管理 三者的性能对比参考从网上的一个图如下: 自己测试了一下 ...

  9. 排列+函数映射——hdu6038好题

    /* 引理:[0,n-1]的排列,i向a[i]连边,那么每个数必定在一个环中 所以数组a可以分割成一些环,数组b也可以分割成一些环 先讨论a的一个环 a[a1]=a2 a[a2]=a3 a[a3]=a ...

  10. 42 github 开源代码 ——README.md语法/相关操作等

    0 引言 最近在github上开源了pro/E二次开发的代码,发现README.md的编辑方式很有趣,需要稍微了解一下. 1 markdown语法 参考了两篇博客的内容,链接如下. https://b ...