zoukankan      html  css  js  c++  java
  • 点对点架构模式

                           点对点模式

    1. 点对点模式的定义

    点对点模式,即Peer-to-Peer模式,在这种模式中,单个组件被称为对等点。对等点可以作为客户端,从其他对等点请求服务,也可以作为服务器,为其他对等点提供服务。对等点可以充当客户端或服务器的角色,并且可以随时间动态地更改其角色。每个节点既可以从其他节点得到服务,也可以向其他节点提供服务。

     

           2.限定条件

    l 运用内存来管理交换资料,大幅度提高性能

    l 适用于小规模的网路,维护容易

    l 不用投资大量金钱在服务器的软,硬体设备

    许多P2P网络一直受到怀有各种目的的人的持续攻击,如中毒攻击(提供内容与描述不同的文件),在数据中插入病毒(如,下载或传递的文件可能被感染了病毒或木马),垃圾信息(如在网络上发送未请求的信息--不一定是拒绝服务攻击),过滤(网络运营商可能会试图禁止传递来自P2P网络上的数据)等等

    l 音乐,电影等资料的版权问题

             3.解决什么问题

         共享包含各种格式音频,视频,数据等的文件是非常普遍的,实时数据(如IP电话通信、Anychat音视频)也可以使用P2P技术来传送。

    有些网络和通信渠道,像NapsterOpenNAP,和IRC @find,一方面使用了C/S结构来处理一些任务(如搜索功能),另一方面又同时使用P2P结构来处理其他任务。而有些网络,如GnutellaFreenet ,使用P2P结构来处理所有的任务,有时被认为是真正的P2P网络。尽管Gnutella 也使用了目录服务器来方便节点得到其它节点的网络地址。

             4.解决方案

    P2P网络是指位于同一网络中的每台计算机都彼此对等,各个节点共同提供网络服务,不存在任何“特殊”节点,每个网络节点以扁平(flat)的拓扑结构相互连通。


    P2P网络的节点之间交互连接、协同,每个节点在对外提供服务的同时也使用网络中其他节点所提供的服务,每个节点即是服务端又是客户端。

     

              5.实例

    分析比特币网络:一种去中心化、点对点的网络架构

    中心化网络

    为了更好的理解P2P网络,我们先来看看传统的中心化模型:

     

    这是一种典型的星型(“中心化”)结构,我们常见B/SC/S网络架构就是这种模型,C1 C2 C3等之间没法直接的连接,C节点如果要连接必须要通过中心化S节点做为桥梁。
    中心化节点充当服务者、中介作用,比如我们没有办法把资金直接从一个人转移给另一个人,必须通过银行这个中介。

    P2P网络模型除应用于比特币网络,使用广泛的BT下载就是基于P2P网络。

    P2P网络不仅仅去除了中心化带来的风险(中心化可能作恶),还可以提高传输的效率。(中心化网络当能也有优点)

        为了能够加入到比特币网络,比特币客户端会做一下几件事情:

    l 节点会记住它最近成功连接的网络节点,当重新启动后它可以迅速与先前的对等节点网络重新建立连接。

    l 节点会在失去已有连接时尝试发现新节点。

    当建立一个或多个连接后,节点将一条包含自身IP地址消息发送给其相邻节点。相邻节点再将此消息依次转发给它们各自的相邻节点,从而保证节点信息被多个节点所接收、保证连接更稳定。

    新接入的节点可以向它的相邻节点发送获取地址getaddr消息,要求它们返回其已知对等节点的IP地址列表。节点可以找到需连接到的对等节点。

    在节点启动时,可以给节点指定一个正活跃节点IP, 如果没有,客户端也维持一个列表,列出了那些长期稳定运行的节点。这样的节点也被称为种子节点(其实和BT下载的种子文件道理是一样的),就可以通过种子节点来快速发现网络中的其他节点。

    BT下载

    BT 首先在上传端把一个文件分成了 Z 个部分,甲在服务器随机下载了第 N 个部分,乙在服务器随机下载了第 M 个部分,这样甲的 BT 就会根据情况到乙的电脑上去下载乙已经下载好的 M 部分,乙的 BT 就会根据情况到甲的电脑上去下载甲已经下载好的 N 部分,这样就不但减轻了服务器端的负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去下载就快得多了。所以说用的人越多,下载的人越多,大家也就越快,BT 的优越性就在这里。而且,在你下载的同时,你也在上传(别人从你的电脑上下载那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。

  • 相关阅读:
    cocos2d-x 动画特效集合
    cocos2d-x 2.0 序列帧动画 深入分析
    cocos2d-x 的CCObject与autorelease 之深入分析
    cocos2d-x 2.0 拖尾效果分析
    Cocos2d-x 2.0 自适应多种分辨率
    cocos2d-x学习笔记
    golang中并发sync和channel
    深入学习golang(2)—channel
    golang手动管理内存
    golang 内存池
  • 原文地址:https://www.cnblogs.com/xxdcxy/p/9076822.html
Copyright © 2011-2022 走看看