电子科技大学 分布式系统 期末复习笔记

第一章

  1. 为什么需要分布式系统:功能分离,固有的分布性,负载均衡,可靠性,经济性。

  2. 定义:分布式系统是这样一种系统,其中位于联网计算机上的组件仅通过传递消息来通信和协调它们的操作。

  3. 特点

    • 并发性:多个程序(进程,线程)并发执行,共享资源
    • 无全局时钟:每个机器有各自的时间,难以精确同步,程序间的协调靠交换消息
    • 故障独立性:一些进程出现故障,并不能保证其它进程都能知道
  4. 分布式系统举例:WEB 搜索、大型多人在线游戏、金融交易、区块链系统、语音系统、数据库系统

  5. 分布式系统趋势

    • 泛在联网与现代互联网
    • 移动与无处不在的计算
    • 分布式多媒体系统
    • 将分布式计算作为公共设施
  6. 挑战:透明性、异构性、并发、开放性、安全性、可伸缩性、故障处理

第二章

  1. 系统的体系结构:用独立指定的组件以及这些组件之间的关系来表示的结构。

  2. 整体目标:确保结构能满足现在和将来可能的需求。

  3. 体系结构元素

    • 通讯实体:(进程、线程、节点)(对象、组件、web服务
    • 通信泛型:进程间通信(套接字、多播、消息传递),远程调用(请求-应答协议、RPC、PMI)
  4. 体系结构模式:构建在相对原始的体系结构元素之上,提供组合的、重复出现的结构。

    • 分层体系结构:一个复杂的系统被分成若干层。每层利用下层提供的服务。中间件是一种软件,它提供基本的通信模块和其他一些基础服务模块,为应用程序开发提供平台。
    • 层次化体系结构:层次化是一种从应用角度理解系统的体系结构模式,与分层体系结构互补,是一项组织给定层功能的技术。
    • 瘦客户:本地只是一个 GUI ,应用程序在远程计算机上执行。
  5. 基础模型:对体系结构模型中公共属性的一种更为形式化的描述。

    • 交互模型:用来描述延迟的不确定性与缺乏全局时钟的影响。被用来处理消息发送的通讯性能问题,解决在分布式系统中设置时间限制的难题。
    • 故障模型:组件、网络等故障的定义、分类,试图给出进程和信道故障的一个精确的约定。定义了什么是可靠通信和正确的进程 。
      • 遗漏故障:进程或者通信通道没有正常的工作(进程崩溃、丢失信息)
      • 随机故障:对系统影响最大的一种故障,且错误很难探知。
      • 时序故障:仅发生在同步分布式系统中
    • 安全模型:提供依据,以此分析系统可能收到的侵害,并在设计系统时防止这些侵害的发生。(进程、通信信道、对象)威胁:DoS攻击、移动代码。对策:加密技术与共享密钥、认证、安全通道

第三章:时间与全局状态

  1. 事件:一个通信动作或进程状态转换动作。

  2. 进程历史:在进程中发生的一系列事件,按发生在先排序,即
    h i s t o r y ( p i ) = < e i 0 , e i 1 , e i 2 , . . . > history(p_i)=<e_i^0,e_i^1,e_i^2,...> history(pi)=<ei0,ei1,ei2,...>

  3. 时钟漂移:震荡频率变化(电源稳定性、环境温度)

  4. 同步物理时钟

    • 外部时钟:采用权威的外部时间源。
    • 内部时钟:无外部权威时间源,系统内时钟同步。
    • 关系:若P(时钟集合)在范围D内外部同步,则P在范围2D内内部同步。
    • 时钟正确性含义
      • 基于漂移率——漂移率在一个已知的范围内;
      • 基于单调性—— t ′ > t → C ( t ′ ) > C ( t ) t'>t→C(t')>C(t) t>tC(t)>C(t)
      • 基于混合条件——单调性+漂移率有界+同步点跳跃前进
    • 物理时间同步的三种方法
      • Cristian方法:应用条件:存在时间服务器,作为外部时间源消息;往返时间与系统所要求的精度相比足够短。协议:进程P根据消息 m r m_r mr m t m_t mt计算消息往返时间 T r o u n d Tround Tround根据服务器在 m t m_t mt中放置的时间 t t t设置时钟为: t + T r o u n d / 2 t+Tround/2 t+Tround/2。精度: ± ( T r o u n d / 2 – m i n ) ±(Tround/2 – min) ±(Tround/2–min)
      • Berkeley方法:主机周期轮询从属机时间,主机通过消息往返时间估算从属机的时间,主机计算容错平均值,主机发送每个从属机的调整量。
      • NTP:外部同步,高可靠性,拓展性好,安全性强。
  5. 逻辑时间和逻辑时钟

    • 逻辑时间的引入:节点具有独立时钟,缺乏全局时钟,分布式系统中的物理时钟无法完美同步,事件排序是众多分布式算法的基石。
    • 逻辑时钟:众多应用只要求所有节点具有相同时间基准,该时间不一定与物理时间相同。不进行交互的两个进程之间不需要时钟同步。
    • 发生在先(偏序):
      • 若存在进程 P i P_i Pi满足 e → i e ′ e→_ie' eie,则 e → e ′ e→e' ee
      • 对于任一消息 m m m,存在 s e n d ( m ) → r e c v ( m ) send(m)→recv(m) send(m)recv(m)
      • 若事件满足 e → e ′ e→e' ee e ′ → e ′ ′ e'→e'' ee′′,则 e → e ′ ′ e→e'' ee′′
    • 并发(X||Y):XY与YX均不成立,则称事件X、Y是并发的。
    • Lamport时钟:Lamport 发明的一种简单机制,可以数字化发生在先排序。它规定每个进程维护自己的逻辑时钟(一个单调增长的计数器),进程 P i P_i Pi用它给事件加上Lamport时间戳 L i L_i Li。若进程触发了某个事件,则将该事件标注时间戳为 ( L i + 1 ) (L_i+1) (Li+1);发送消息时,在消息中附带 t = L i t=Li t=Li;接收进程接收消息事件被标注时间戳为 m a x ( L j , t ) max(L_j,t) max(Lj,t)
    • 向量时钟与Lamport时钟的区别:在 P i P_i Pi给事件加时间戳之前,设置 V i [ i ] = V i [ i ] + 1 V_i[i]=V_i[i]+1 Vi[i]=Vi[i]+1。克服了Lamport时钟的缺点: L ( e ) < L ( e ′ ) L(e)<L(e') L(e)<L(e)不能推出 e → e ′ e→e' ee
    • 全局状态:单个进程状态的集合;
      S = ( s 1 , s 2 , . . . , s N ) S=(s_1,s_2,...,s_N) S=(s1,s2,...,sN)
    • 割集:系统全局历史的子集(部分事件的集合,有序)。
      C = < h 1 c 1 , h 2 c 2 , . . . , h n c n > C=<h_1^{c1},h_2^{c2},...,h_n^{cn}> C=<h1c1,h2c2,...,hncn>
    • 割集的一致性:割集C是一致的,即对于任意事件 e ∈ C , f → e ⟺ f ∈ C e∈C,f→e⟺f∈C eC,fefC,即有果必有因。
    • 一致的全局状态:对应于一致割集(增量序列)的状态 S 0 → S 1 → S 2 → … S0→S1→S2→… S0S1S2(系统的执行可以描述成系统全局状态之间的一系列转换)。
    • Chandy和Lamport的“快照”算法:为了捕获一致的全局状态(在缺乏类似全局时钟或者全局时钟不可靠的分布式系统中来确定一种全局状态)。算法定义了两个规则:标记发送规则和标记接收规则。前者强制记录下自己状态的进程立即发送一个标记信息,后者强制没有记录状态的进程去记录自己的状态。

在这里插入图片描述

第四章:协调和协定

  1. 分布式互斥:分布式进程常常需要协调它们的动作,如访问共享资源时需要互斥来防止干扰并保证一致性,这对应操作系统领域常见的“临界区”问题。然而分布式系统中原有互斥方法基本均失效,需要一个仅基于消息传递的分布式互斥解决方案。

    • 目的:仅基于消息投递,实现对资源的互斥访问。

    • 假设:异步系统;无故障进程;可靠的消息投递。

    • 基本要求

      • 安全性:在临界区内一次最多有一个进程可以执行。
      • 活性:进入和离开临界区的请求最终成功执行。
      • 顺序:先请求进入临界区的进程先进入临界区
    • 评价指标

      • 带宽:消耗的带宽,与进入和退出临界区发送消息的数量成正比。
      • 延迟:每次进入和退出操作导致的客户延迟。
      • 吞吐量:用一个进程离开临界区和下一个进程进入临界区之间的同步延迟来衡量。
    • 中央服务器算法:满足安全性和活性要求,但不满足顺序要求。
      在这里插入图片描述

      • 带宽消耗:
        • enter:2个消息,即请求消息+授权消息
        • exit: 1个消息,即释放消息;
      • 客户延迟:
        • enter: request + grant = 1 round-trip
        • exit: release ;
      • 同步延迟:
        • 1个消息的往返时间:1 release + 1 grant。
    • 基于环的算法:所有程序构成一个环结构,令牌按照顺时针(或逆时针)方向在程序之间传递,收到令牌的程序有权访问临界资源,访问完成后将令牌传送到下一个程序;若该程序不需要访问临界资源,则直接把令牌传送给下一个程序。在分布式领域,这个算法叫作令牌环算法,也可以叫作基于环的算法。
      在这里插入图片描述

      • 满足安全性和活性要求,不满足顺序要求。
      • 带宽消耗:由于令牌的投递,会持续消耗带宽;
      • 客户延迟(enter):
        • Min: 0个消息,正好收到令牌;
        • Max: N个消息,刚刚投递了令牌;
      • 同步延迟:
        • Min: 1个消息,进程依次进入临界区;
        • Max: N个消息,一个进程连续进入临界区,期间无其他进程进入临界区。
    • 基于组播和逻辑时钟的算法:进程进入临界区需要所有其它进程的同意。要进入临界区的进程组播一个请求消息,并且只有在其他进程都回答了这个消息时才能进入。采用Lamport时间戳避免死锁,请求进入的消息形如 < T , P i > <T,P_i> <T,Pi>,如果请求具有相等的时间戳,那么请求将根据进程的标识符排序。

      在这里插入图片描述

      • 满足安全性、活性和顺序要求。
      • 带宽消耗:
        • enter: 2(N-1),即(N-1)个请求、 (N-1)个应答。
      • 客户延迟:1 round-trip (multicast);
      • 同步延迟:1个消息的传输时间(无exit,vs round-trip)。
    • Maekawa投票算法:进程进入临界区不需要所有进程同意(部分即可)

      • 满足安全性,活性和顺序性。
      • 带宽消耗:
        • enter:需要 2 n 2\sqrt{n} 2n 个消息
        • exit:需要 n \sqrt{n} n 个消息
        • Ricard:2(N-1)
      • 客户延迟:1 round-trip
      • 同步延迟:1 round-trip
  2. 分布式选举:选择一个唯一的进程来扮演特定角色的算法。

    • 含义:集群一般是由两个或者两个以上的服务器组建而成,每个服务器都是一个节点。对于一个集群来说,多个节点到底是怎么协调,怎么管理的呢,解决方法是选出一个“领导”来复杂调度和管理其他节点。这个所谓的“领导”,在分布式中叫做“主节点”,而选“领导”的过程叫做“分布式选举”。

    • 基本要求

      • 安全性:参与进程 P i P_i Pi e l e c t e d i = ⊥ elected_i=⊥ electedi= e l e c t e d i = P elected_i=P electedi=P(有效进程 pid最大值)。
      • 活性:所有进程 P i P_i Pi都参加并且最终置 e l e c t e d i ≠ ⊥ elected_i≠⊥ electedi=或进程 P i P_i Pi崩溃。
    • 基于环的选举算法

      • 目的:在异步系统中选举具有 最大标识符 的进程作为协调者。
      • 基本思想:按逻辑环排列一组进程, id 不必有序。
      • 性能
      • 最坏情况:启动选举算法的逆时针邻居具有最大标识符,共计需要3N-1个消息,周转时间为3N-1
      • 最好情况:周转时间为2N

      在这里插入图片描述

    • 霸道算法

      • 同步系统,使用超时检测进程故障。
      • 通道可靠,但允许进程崩溃。
      • 每个进程知道哪些进程具有更大的标识符
      • 每个进程均可以和所有其它进程通信
      • 性能:
      • best: N − 2 N-2 N2
      • worst: N 2 N^2 N2

      在这里插入图片描述

  3. 组播通讯:发送一个消息给进程组中的每个进程。

    • 基本组播:B-multicast(g, m):对每个进程p∈g,send(p, m);进程p receive(m)时:p执行B-deliver(m)。

    • 可靠组播

      • 协定:如果一个正确的进程投递消息m,那么group中其它正确的进程终将投递m。
      • 区别:B-multicast 不保证协定(sender中途失效)。
    • 实现可靠组播的方法:协定表明了 B-Multicast 不能再基于一对一的send来实现,因为组播进程在send中途出现故障时,会导致剩余进程无法Deliver该消息。可行方案如下:

      • 用基本组播实现可靠组播:满足完整性,满足有效性,满足协定,但是效率低。

      在这里插入图片描述

      • 用IP组播实现可靠组播:将IP组播、捎带确认法、否定确认结合起来,实现可靠的Multicast和Deliver。
  4. 共识、交互一致性及拜占庭将军问题含义:这三类问题统称为协定,即在一个或多个进程提议了一个值应当是什么后,使系统内所有进程对这个值达成一致的意见。

    • 共识问题:一个或多个进程提议一个值后,应达成一致意见。
      • 基本要求:
        • 终止性:每个正确的进程最终设置它的决定变量。
        • 协定性:如果 P i P_i Pi P j P_j Pj是正确的且已进入决定状态,那么 d i = d j d_i=d_j di=dj
        • 完整性:如果正确的进程都提议了同一个值,那么处于决定状态的任何正确进程都已选择该值。
      • 共识算法:每个进程组播它的提议值;每个进程收集其它进程的提议值每个进程计算 V = m a j o r i t y ( v 1 , v 2 , … , v N ) V = majority(v_1, v_2, …, v_N) V=majority(v1,v2,,vN)。其中 m a j o r i t y ( ) majority() majority()函数为抽象函数,可以是 m a x ( ) max() max() m i n ( ) min() min()等。
    • 拜占庭将军问题:3个或更多将军协商是进攻还是撤退;1个将军(司令)发布命令,其他将军(中尉)决定进攻或撤退;一个或多个将军可能会叛变;所有未叛变的将军执行相同的命令 。
      • 拜占庭将军问题要求:
        • 终止性:每个正确进程最终设置它的决定变量。
        • 协定性:所有正确进程的决定值都相同。
        • 完整性:若司令正确,则所有正确进程采用司令提议的值。
      • 与共识问题的区别:一个独立的进程提供一个值,其他进程决定是否采用。
    • 交互一致性:每个进程提议一个值,就向量达成一致。决定向量: 向量中的每个分量与一个进程的值对应。
      • 交互一致性的要求:
        • 终止性:每个正确进程最终设置它的决定变量。
        • 协定性:所有正确进程的决定向量都相同。
        • 完整性:如果进程pi是正确的,那么所有正确的进程都把vi作为他们决定向量中第i个分量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/156747.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ctfshow】web入门-信息搜集-web11~20

【ctfshow】web入门-信息搜集-web11~17 web11_域名其实也可以隐藏信息&#xff0c;比如flag.ctfshow.com 就隐藏了一条信息web12_有时候网站上的公开信息&#xff0c;就是管理员常用密码web13_技术文档里面不要出现敏感信息&#xff0c;部署到生产环境后及时修改默认密码web14_…

【漏洞复现】IP-guard WebServer 存在远程命令执行漏洞

漏洞描述 IP-guard是由溢信科技股份有限公司开发的一款终端安全管理软件,旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危…

【C++】map multimap

文章目录 1.map介绍2.map的使用3.multimap介绍4.multimap的使用 1.map介绍 map的文档 翻译&#xff1a; map是关联容器&#xff0c;它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。 在map中&#xff0c;键值key通常用于排序和惟一地标识元素&#x…

动态时钟实现

前端HTMLCSS3JavaScript实现动态时钟 一、实现思路概述二、源代码(包含HTML、CSS、JS)三、图片资源与效果截图1. 图片资源2. 效果截图 一、实现思路概述 1. 通过HTML搭建基本时钟的页面结构(这里将时钟图片资源作为背景图&#xff09;2. 将时钟背景和时/分/秒图片进行CSS位置居…

京东数据分析(京东数据采集):2023年10月京东平板电视行业品牌销售排行榜

鲸参谋监测的京东平台10月份平板电视市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;10月份&#xff0c;京东平台上平板电视的销量将近77万&#xff0c;环比增长约23%&#xff0c;同比则下降约30%&#xff1b;销售额为21亿&#xff0c;环…

Spring-IOC-FactoryBean机制(难点且重点)

1、第一个案例 1.1、Book.java package com.atguigu.ioc; import lombok.Data; Data public class Book {private String bid;private String bname; }1.2、Book2.java package com.atguigu.ioc; import lombok.Data; Data public class Book2 extends Book {private String co…

软件测试银行面试项目经验讲解

前言 业务&#xff1a; 银行类app具体模块业务讲解&#xff1a; 掌上生活&#xff08;消费/理财&#xff09; 消费&#xff1a; 与电商平台业务类似 饭票&#xff1a;GPS定位城市服务、饭票购买消费、餐厅查询、代金券、周三五折、banner图、我的饭票、我的抵扣券 影票 …

最新绿豆APP源码苹果CMS影视插件版本/原生JAVA源码+反编译开源+免授权

源码简介&#xff1a; 最新绿豆APP源码苹果CMS影视插件版本&#xff0c;它是原生JAVA源码反编译开源免授权&#xff0c;绿豆影视对接苹果CMS&#xff0c;它可以支持多功能自定义DIY页面布局。 1、新版绿豆视频APP视频6.1插件版反编译指南及教程 2、后端插件开源&#xff0c;可…

[C++] STL_stack queue接口的模拟实现

文章目录 1、stack1.1 stack的介绍1.2.1 stack的构造1.2.2 进、出栈等接口的模拟实现 2、queue2.1 queue的介绍2.2 queue的使用2.2.1 queue构造2.2.2 入、出队等接口的模拟实现 1、stack 1.1 stack的介绍 stack的文档介绍 1. stack是一种容器适配器&#xff0c;专门用在具有…

数字化转型导师坚鹏:数字化时代银行网点厅堂营销5大痛点分析

数字化时代银行网点厅堂营销存在以下5大痛点&#xff1a; 1、业务办理时间较长。目前很多银行业务办理时间仍然较长&#xff0c;可能的原因包括银行业务办理流程比较复杂、柜员操作技能不够熟练、银行系统的稳定性欠佳、网点某段时间客户比较多等。 2、现场提交材料太多。银行…

玩转大模型行业应用,且看盘古大模型全栈工程能力展身手【云驻共创】

AI技术在金融和工业领域的应用不断扩展&#xff0c;促进了金融行业的数字化转型和产业升级。AI提供了专属财富管家和工业范式的解决方案&#xff0c;在金融领域的应用包括风险评估和投资建议&#xff0c;而在工业领域的应用则涵盖了数据分析和机器人操作。与此同时&#xff0c;…

力扣 hot100 最长连续序列 哈希去重 双指针

128. 最长连续序列 ⭐ AC code class Solution {public int longestConsecutive(int[] nums) {if (nums.length 0)// 特判为空的数组&#xff0c;返回0return 0; // set实现去重HashSet<Integer> set new HashSet<>();for (int x : nums)set.add(x);Object[] a…

MyBatis使用注解操作及XML操作

文章目录 1. 注解操作1.1 打印日志1.2 参数传递1.3 增&#xff08;Insert&#xff09;注意1&#xff1a;重命名注意2&#xff1a;返回主键 1.4 删&#xff08;Delete&#xff09;1.5 改&#xff08;Update&#xff09;1.6 查&#xff08;Select&#xff09;1. 配置&#xff0c;…

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏3(附项目源码)

文章目录 先看本次实现的最终效果前言绘制炮塔UI炮塔转向敌人生成炮弹旋转我们的子弹对敌人造成伤害&#xff0c;回收子弹自动发射子弹添加攻击间隔显示伤害字体设计通用泛型单例创建更多炮塔升级增加伤害升级缩短攻击间隔添加货币杀死敌人获取金币源码完结 先看本次实现的最终…

el-checkbox 对勾颜色调整

对勾默认是白色 改的时候一直在试着改color人&#xff0c;其实不对。我用的是element ui 的复选框 /* 对勾颜色调整 */ .el-checkbox__inner::after{/* 是改这里的颜色 */border: 2px solid #1F7DFD; border-left: 0;border-top: 0;}

ssm+vue的药店药品信息管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频&#xff1a; ssmvue的药店药品信息管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;ssm vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结…

无法安装ensp ?各种报错解决方案(virtualbox无法运行,启动AR失败,错误代码40等)

安装eNSP。发现软件中路由器无法启动。 VirtualBox是华为eNSP使用的必须运行环境&#xff0c;它提供虚拟网卡设备作为服务器为软件提供运行环境。 1. 提示出现VirtualBox Oracle无法在此项目运行。 我根据百度上的方法&#xff0c;重新还原系统。无果。 之前计算机中安装Vi…

基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码

基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于混沌博弈算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于混沌博弈优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

【JavaEE初阶】 JavaScript基础语法——壹

文章目录 &#x1f38b;初识JavaScript&#x1f6a9;JavaScript 是什么&#x1f6a9;JavaScript 和 HTML 和 CSS 之间的关系&#x1f6a9;JavaScript 运行过程&#x1f6a9;JavaScript 的组成 &#x1f38d;前置知识&#x1f6a9;第一个JS程序&#x1f6a9;JavaScript 的书写形…

Linux JumpServer 堡垒机远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f516;系列专栏&#xff1a; C语言、Linux、Cpolar ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5.…