img_0447.jpg
    这节主要讲了很多体系结构
    img_0448.jpg
    本章的第一节和第二节是中重点,第一节主要讲了architecture style 第二节主要讲了system architecture
    第二节重点在讲具体怎么实现架构
    img_0449.jpgimg_0450.jpg
    这里 回顾了一下 分布式系统的定义
    img_0451.jpg
    architecture style 由两部分组成,定义也是说architecture style将不同的component给connect
    1,component
    2,connector

    img_0452.jpg
    architecture style的分类:
    1,分层体系结构(也是目前用的最多的架构)
    2,基于对象的体系结构
    3,以数据为中心的体系结构
    4,基于事件的体系结构
    img_0453.jpg
    对照传统的计网里的7层,来相应设计分布式系统,这里注意与基于对象的分布式系统的区别
    img_0454.jpg
    img_0455.jpg
    img_0456.jpg

    img_0457.jpg
    img_0458.jpg
    系统架构的定义:系统架构决定了软件组件,组件的联系,以及组件的位置
    系统架构的分类:
    1,集中式体系结构
    2,分散式体系结构
    3,混合式体系结构
    img_0459.jpg
    系统架构的分类:
    1,集中式体系结构
    具体描述:是有服务器结构,整个系统也是围绕着服务器来做的,
    优点:简单,易于实现
    缺点:造成缺失异常操作时,不知道在哪个地方出问题,如下所示
    举例:C/S架构啊

    img_0460.jpgimg_0461.jpgimg_0462.jpgimg_0463.jpgimg_0464.jpg
    img_0475.jpg
    现在来说分散式体系结构
    img_0476.jpgimg_0477.jpgimg_0478.jpgimg_0479.jpgimg_0480.jpg

    在这里呢 因为讲到了分散式体系结构(p2p),就用了另外一个ppt
    img_0515.jpgimg_0516.jpgimg_0519.jpg
    这里介绍分散式体系结构的发展历史
    介绍了p2p发展早期的
    1,Napster
    2,Gunutella
    3,chord
    4,bitTorrent(PS:总算知道迅雷下片的原理了。。。也总算知道为啥,迅雷下到99%的时候,后面1%最难下)
    img_0520.jpg
    img_0521.jpg
    img_0522.jpgimg_0523.jpg
    这里介绍分散式体系结构的发展历史:1,Napster
    Napster是一个音乐分享系统
    工作原理是:
    注册过程:a,客户机连接服务器 b,上传key-value对 c,服务器维护索引
    搜索下载过程:a,客户机在服务器查找曲目 b,服务器返回有主机列表元组 c,客户机进行ping速率,找到最快传输主机 d,进行传输

    Napster不算是真正意义上的p2p,因为在Napster系统中依然有集中式服务器的存在
    所以有集中式架构的那些缺点,传输错误、容易阻塞。。。
    但是又不同于以往的集中式架构,因为客户机不是从服务器上下载音乐
    img_0524.jpgimg_0525.jpgimg_0526.jpg
    这里介绍分散式体系结构的发展历史:2,Gnutella
    Gnutella是真正意义上的第一个p2p系统(分散式体系结构)
    这里提前说明一下
    无结构的p2p系统:结点的邻居是随便选的
    有结构的p2p系统:结点的邻居是有规则选的,按照一定的规则进行选择邻居结点
    img_0527.jpgimg_0528.jpg
    为什么Gnutella是无结构的p2p系统呢?
    当在做搜索时,Gnutella是以flooding的方式发出Querry请求,只等待queryhit
    img_0529.jpgimg_0530.jpgimg_0531.jpg
    Gnutella的query的特点
    1,泛洪 flooding
    2,ttl受限
    3,每个query 在每个结点中只会被转发only one
    img_0532.jpg

    img_0533.jpgimg_0534.jpgimg_0535.jpg
    在收到多个queryhit后,会再次进行比对,找出其中的最佳选择
    img_0536.jpgimg_0541.jpgimg_0542.jpg
    但是Gnutella也有大量问题,就是50%的时间都是用来做ping、pong操作,用来探知周围结点的变化,进行更新自己的维护列表,导致效率不高
    img_0543.jpg
    提前说下chord系统,是有结构的p2p系统(但是是无结构的命名)这种查找结点的邻居方法是有规律的,有点像二分查找,所以把查找的时间复杂度降到O(logn),还是挺不错的!
    img_0544.jpg
    这个下面讲的详细
    img_0549.jpgimg_0550.jpgimg_0551.jpg

    img_0481.jpg
    chord系统怎么是有结构的p2p系统,这个在命名那章会讲,也是因为DHT的使用
    img_0482.jpgimg_0487.jpgimg_0489.jpgimg_0494.jpg
    混合式p2p,bittorrent
    1,客户端先到web上找到torrent文件
    2,客户端解析torrent文件,得到很多的track,选择一个track server 上 里面有很多的Node iP
    3,再选择一个IP进行,进行文件共享
    img_0495.jpgimg_0496.jpgimg_0498.jpgimg_0499.jpgimg_0500.jpgimg_0501.jpgimg_0502.jpgimg_0503.jpgimg_0504.jpgimg_0505.jpgimg_0506.jpgimg_0507.jpg