基于BT协议的同步方式的思考
来源:互联网 发布:扫描软件排行 编辑:程序博客网 时间:2024/05/29 18:39
背景
毕业季到了,女朋友跟班里同学们一起拍了很多照片。由于照片分散在不同的人的手机、相机里,她也无法立即给我传来她的照片。这个情景一年前我也遇到过,只是当时自己比较忙,加上考虑着还会在本校读研,也没太在意毕业季照片的手机这一需求,以至于到现在我的电脑里甚至没有一张我穿学士服的照片:-=。而现在,当我想看看gf的照片时,这个需求横亘在我面前,让我特别的想解决掉它。
让我们从事实出发,理清问题的思路。
需求的产生
大学生拍毕业季照的现状:
- 1.大学生在毕业季拍照留念是刚需,几乎平日爱拍照、不爱拍照的所有人都会参与其中。
- 2.拍照一般以小团体为基本单元进行。多是班级、社团这种常见的凝聚力较强的团体。
- 3.随着科技的发展和生活水平的提高,越来越多的人具备了拍出高质量照片的设备和实力。
由于这种以小团体为单位的照片的大量产生,每个团体中的照片会交叉散落在较多人手中。在这种分散的格局面前,单独挑选出自己的照片并保存的成本巨大,直接导致了大家最终需求的统一:
- 将所有的照片分发到所有人手中。
原有解决方案
现有的解决方案主要方案归纳为如下四种:
1.用移动硬盘等设备人力拷贝
这种方式太过古老和原始,缺点费时费力。
2.使用公邮、网盘、QQ群共享等方式统一上传、下载
主要缺点是外网网速限制;另外,网速的限制让用户上传和下载的门槛变高,影响了上传积极性,如果有人迟迟不上传,最终下载完整数据的时间也会一直拖延,带来消极的体验;如果注册一次性账号,这也不见得是环保的行为(或许这想法有点数据洁癖吧><),如果使用非一次性账号,那么权限管理将比较头疼。
3.使用内网BT资源站分别打包上传、下载
优点是利用了内网网速的优势。缺点是每个人都打包做种,会让资源分散的很厉害,难于汇集。且做种等步骤对于部分用户而言,有操作门槛。
4.先使用1中方法,统一手机照片数据,然后按照2或3的方法发布数据
这大概是最靠谱的方式了,缺点集中在需要有人费时费力的手机数据上。当然,如果班里有一个任劳任怨的好班长,这个问题就解决了。
总结:
对于一个懒人而言,现有的解决方案都是蹩脚的。这些解决方案都不约而同的希望首先将数据聚合到一个外部空间中,然后再统一的分发给大家。这个步骤必要吗?实际上,我们只是需要每个人都方便、快捷的获得所有照片。
一个简单的设计
我将问题抽象为:
- 完整的数据分散在10至20个数据拥有者手中,需要通过一定手段,让每个个体都不重复的拥有完整的数据。
由于外网网速的限制,基于校园内网建立的工具就有了天然的优势。但如果使用内网,就不得不抛弃各大公司免费提供的邮箱存储空间、网盘存储空间。而校内的资源是有限的,没有自己的服务器,没有足够的空间存储大家的数据,这也就迫使我们考虑到了p2p的系统架构。于是,有了这样的解决方案,设定代号为BBT:
- PC机安装BBT工具软件后,可以设定
共享目录
和对应的分享ID
- 放入特定
共享目录
的文件,将使用基于p2p同步的方式,在拥有相同的分享ID
的共享目录
间同步数据,目的是让所有人都获得到每个人的数据
在跟阿豪童鞋的交流中,他建议为了进一步简化用户操作,可以尝试这样一种体验方式:
- 班级内所有人在同一个链接下载工具软件。保证这一链接下载的软件能互相通信,实现数据同步。这杨就节省了用户自己设定相同的
分享ID
的流程,而将这一过程转移到班长请求下载链接的过程中。
确实够简洁,很赞,实现成本还需要调研。
BitTorrent Sync
在构思的过程中,突然想起前几天在start up news上看到了一个基于BT协议的同步软件BitTorrent Sync。
它的实现方式大概是我们所需要的。可惜的是,由于它的功能全面,界面略显复杂。而同时,它并没有开放二次开发接口。
或许我需要自己搭建一个p2p的系统?
PS:
BT的优势,在于利用了所有节点的存储和传输能力,节点数量越多,下载越快
BitTorrent Sync的优势,则在于能动态的集合分散在不同节点中的数据
感觉这种去中心化的分布式系统,前景大大的有啊;)
PSS:
欢迎访问博客新家: http://biaobiaoqi.me ;)
- 基于BT协议的同步方式的思考
- BT协议的工作过程
- BT协议的工作过程
- BT协议的详细分析
- 手机同步专家--基于SyncML协议同步通讯录的应用软件
- 基于xtrabackup同步方式的mariadb集群
- 基于http协议通信的APP安全策略的一点思考
- BT协议的详细分析 ZZ
- BT下载的协议与接口
- uTorrent的传输协议之BT-uTP
- 思考我们的思考方式
- 网络协议的思考
- 基于spring的方式进行读写分离思考
- 基于bt开发的工具选择
- ItelliJ IDEA 同步基于ssh协议的git库
- Kademlia Emule协议分析及和Bt协议的比较
- Kademlia Emule协议分析及和Bt协议的比较
- 编程方式的思考
- Hibernate集合映射之Map-----element映射实体类型值
- 第八章 Libgdx输入处理(9)菜单捕获
- 第八章 Libgdx输入处理(10)触摸屏
- 实验四十九微软应用程序虚拟化之四APP-V 5.1发布应用程序包
- jquery dialog播放视频
- 基于BT协议的同步方式的思考
- win8更改开始界面布局行数,设置qq,126邮箱
- DirectX9 龙书学习笔记(1) 矩形的绘制
- 八大排序算法总结(java版)
- php实战第七天
- hibernate中组件映射
- Ubuntu11.10安装JDK6
- Linux 搭建Nexus和Maven
- 编程实现数值积分