`
wezly
  • 浏览: 490537 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多

    此文章的题目来自于当下的两哥之争,本意有调侃之意,但是用在本文,却无此意,我以十分真诚并且后知后觉的态度认定,p2p是未来的主要计算模型。尤其是在视频音频领域,但是将来,p2p一定会拓展到普通的计算上。

    要解释清楚这个问题,我们得从当下最流行的音频视频p2p软件聊起。先来说说较为简单的一个音频p2p软件,酷狗。

    酷狗的原型应该是来自于一个国外的公司,名字我已忘记,那家公司也是通过mp3的p2p下载作为主要业务,不过可惜的是在美国mp3因为版权问题非常严重,所以那家公司的最终结局只有一个,就是关门。

    但是在中国就不一样了,版权问题没有这么严重,或者说相当的不严重,所以酷狗活得很好。这就是国情啊(理论上来讲,酷狗应该也有一些版权问题,可能跟版权商有合作关系,不过大多数的音频应该没有版权问题,这种情况和视频网站是类似的)。

    下面让我们来看看酷狗的技术实现。以下都是ahuaxuan的猜测,供大家讨论,未必完全正确,也未必完全错误,拿出来和大家探讨。

    酷狗应该是采用中心的目录服务器结构来实现p2p的功能,也就是说,所有的音频文件的基本信息都会注册到酷狗的中心目录服务器上,那么酷狗的客户端需要下载某个视频的时候,则从中心目录服务器上查找,找到相信的音频信息,每个音频信息都会对应一堆地址,这些地址是其他的拥有该音频的客户端ip。让我们用一张图来描述一下这个问题:


这样我们就可以虚拟一个流程出来:
1.1号客户端请求中心目录下载服务器,要求下载“”。
2.  中心目录服务器通过搜索引擎分词,查询之后,得到一堆id。
3.  中心目录服务器根据id查找id对应的ip。显然一个id拥有多个ip,是1:n的关系。
    (很不巧,这首歌2,3号客户机上都有, 当然这里并不是应该返回所有的ip地址,而是应选择最短路径的地址返回。让我们来怀念一下dijikstra。
4.  中心目录服务器返回音频文件的ip列表。
5.  1号客户机得到两个ip地址,然后分别2号机请求音频的第一段,从3号机请求音频的第二段。即多地址多线程分段下载。
6.  1号机下载完成之后通知中心目录服务器,这样中心目录服务器关于这个视频又多了一个ip地址供其他客户端下载。


这个应该是最概要的流程,接着可以在这个流程上细化。

从上图我们可以看到,任何一个客户机既是client,又是server。作为client,它从其他server上下载数据,作为server,它提供数据给其他client下载。

    所以当我们开着酷狗听歌的时候,其实你的机器就变成了下载服务器了,同样,如果你用的是迅雷,而且一直不把迅雷关掉,那么你的机器就成为专职的下载服务器了。

    看到这里,我们有理由相信,如果掌握了下列技术,做一个酷狗不是什么难事,括号后面是ahuaxuan的选型。

1.    搜索技术(lucene)-服务器端
2.    音频管理系统(java,同时涉及到缓存和数据库系统)-服务器端
3.    客户端ui编程(最好是mfc之流)-客户端
4.    下载服务器(c,对windows的io比较熟悉)-客户端

正如前面所说,这个只是非常高层次的设计,而且对于有过大型网站系统经验的人来说,1,2点是没有问题的。然后3,4点需要对c/c++比较熟悉的人来做,当然btcomet据说是python写的。所以我也在思考python+c实现客户端的可行性。


    上面讲到的是基本的整个软件的结构体系,或者称为“架构“,在high level层面还有一个问题,就是协议的问题,客户端之间相互下载应该使用说明协议,以及客户端和服务器端的交互应该使用什么协议,目前ahuaxuan 选择的是bt协议。利用成熟的协议可以减少很多的工作量。或者电驴的协议应该也不错,不过没有深入研究过。

分享到:
评论

相关推荐

    p2p网络模型研究

    《P2P网络模型研究》 P2P(Peer-to-Peer)网络模型是一种分布式网络架构,其中每个参与者,即“对等节点”,都既是服务的消费...通过深入研究P2P网络模型,我们可以更好地设计和实现高效、可靠、去中心化的网络服务。

    p2p网络模型分析与探

    总结,P2P网络模型通过其独特的设计理念和运作机制,极大地改变了互联网的格局。尽管面临挑战,但P2P模型的潜力和适应性使其在不断演进的数字时代中保持着重要的地位。随着技术的进步,P2P将继续影响并塑造互联网的...

    C/S+P2P网络模型--聊天和文件传输

    在IT领域,C/S(Client/Server)和P2P(Peer-to-Peer)网络模型是两种常见的网络架构,它们各自具有独特的特性和应用场景。在本项目中,"C/S+P2P网络模型--聊天和文件传输"的实现旨在结合这两种模型的优势,以提供...

    P2P应用开发参考源码

    P2P应用开发是构建这种去中心化系统的关键,它可以用于文件共享、流媒体传输、分布式计算等多种场景。本资源包“P2PResourceDiscovery”似乎提供了一个关于P2P资源发现的示例代码,这对于初学者或者想要深入理解P2P...

    结构化对等网中的P2P蠕虫传播模型研究

    ### 结构化对等网中的P2P蠕虫传播模型研究 #### 摘要与背景 本文针对结构化对等网(Structured Peer-to-Peer Networks, P2P)中的蠕虫传播问题进行了深入研究。P2P网络因其分布式、去中心化的特性,在资源分享、...

    用JAVA实现P2P网络模型

    通过使用Java语言,开发者可以构建高效、稳定的P2P应用。本文介绍了P2P网络的基本原理、目录式动态配置模型、通信协议以及具体的文件传输实现细节。未来,随着P2P技术的不断发展和完善,其在网络应用中的作用将会...

    移动P2P分布式信任模型设计.pdf

    针对移动P2P网络中信任模型设计的重要性,研究者们已经提出了许多有建设性的信任管理机制。早期的工作,如文献[6]提出的基于全局信誉的信任机制,是通过收集对某节点的抱怨信息来确定其全局信誉。文献[7-9]利用信用...

    基于P2P的实时流媒体系统设计

    本课题讨论并研究的主要问题是,分析研究P2P技术及该技术下流媒体数据传输的应用,设计并实现一个基于P2P技术的传输服务系统。通过搭建P2P传输平台,研究流媒体数据的实时高效传输。1.研究P2P传输技术的相关理论,...

    用JAVA实现P2P网络通信

    P2P(Peer-to-Peer)模型是与C/S(客户/服务器)模型相对应的网络模型。基于C/S的用户间通信需要由服务器中转,在C/S中的服务器故障将导致整个网络通信的瘫痪。而基于P2P的用户间通信则是直接通信,去掉了服务器这一...

    P2P设计思想及其在存储和共享中的应用.rar

    在“P2P设计思想及其在存储和共享中的应用”这一主题中,我们将深入探讨P2P的核心概念,以及它如何在数据存储和共享领域发挥重要作用。 P2P设计思想主要基于以下几个关键元素: 1. **去中心化**:P2P网络没有单一...

    \p2p\Java技术在P2P环境下的应用

    通告浏览器的设计与实现,不仅加深了我们对P2P网络原理的理解,也为未来P2P应用的创新提供了新的思路和技术基础。随着技术的不断进步,P2P网络将更加成熟稳定,而Java及其相关框架将继续在这一领域扮演重要角色,...

    一种双重度量的分布式P2P信任模型.pdf

    随着信息技术的发展,P2P(Peer-to-Peer,对等网络)技术的应用变得日益广泛,特别是在文件共享系统中。在P2P网络中,各节点平等的进行数据传输与分享,这种网络结构具有匿名性、动态性和自治性的特点。然而,这些...

    论文研究-基于Gnutella协议与划分技术的P2P网络模型的设计与实现.pdf

    在传统的P2P网络模型中,网络上的所有主机不管它们所处的距离远近,它们的地位都是一样的,这在实际应用中却行不通。针对这种情况,在新的模型中将网络划分为不同的子网,子网内与子网外的主机分别对待。在子网内,...

    P2P对等网络原理与应用-蔡康

    列举了大量P2P的应用实例,为读者理解P2P应用方法提供了丰富的参 考。此外,本书还前瞻性地提出了P2P在IPv6网络环境下的问题,指出在 IPv6与IPv4共存的环境下,P2P必须依赖自身的算法来自适应不同的网络 环境,并...

    c语言socket写的模拟p2p应用例子

    3. **P2P应用设计**: - 对等节点:在P2P网络中,每个节点都有相同的权限,既可以作为服务器提供资源,也可以作为客户端获取资源。 - 找寻邻居:节点通过特定的发现机制寻找其他在线节点,如使用DHT(分布式哈希表...

Global site tag (gtag.js) - Google Analytics