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

第一章

  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个分量。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

线性表的概念

目录 1.什么叫线性表2.区分线性表的题 1.什么叫线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串… 线性表在逻辑上是…

【Vue配置项】 computed计算属性 | watch侦听属性

目录 前言 computed计算属性 什么是计算属性&#xff1f; Vue的原有属性是什么&#xff1f; 得到的全新的属性是什么&#xff1f; 计算属性怎么用&#xff1f; 计算属性的作用是什么&#xff1f; 为什么说代码执行率高了&#xff1f; computed计算属性中的this指向 co…

【Java 进阶篇】JQuery 遍历 —— 无尽可能性的 `each` 之旅

在前端的征途中&#xff0c;操作元素是开发者不可避免的任务之一。而在 JQuery 中&#xff0c;each 方法则是处理这个任务的得力助手。本文将深入探讨 each 方法的奇妙之处&#xff0c;以及它与原生的 for...of 循环的关系&#xff0c;带你领略无尽可能性的遍历之旅。 起步&am…

modbusRTU通信简单实现(使用NModbus4通信库)

本文实现ModbusRTU通信&#xff0c;使用的是NModbus4通信库&#xff0c;使用 Modbus Slave是一个模拟Modbus协议从机的上位机软件&#xff0c;主要用于模拟测试跟其他主机设备通信的过程。与之成套存在的另一个软件--Modbus Poll&#xff0c;则是模拟Modbus协议主机的上位机软件…

元宇宙数字展厅无代码编辑工具的功能特点

商场如战场&#xff0c;营销是每个企业都必须重视的环节。随着科技的发展&#xff0c;3D展示营销制作平台作为企业快速搭建3D互动展厅的SaaS平台&#xff0c;逐渐崭露头角&#xff0c;为企业提供了诸多便利&#xff0c;让营销变得更加高效和引人入胜。 为企业提供身临其境的产品…

【EI会议征稿】第五届人工智能与机电自动化国际学术会议(AIEA 2024)

第五届人工智能与机电自动化国际学术会议&#xff08;AIEA 2024&#xff09; 2024 5th International Conference on Artificial Intelligence and Electromechanical Automation 第五届人工智能与机电自动化国际学术会议&#xff08;AIEA 2024&#xff09;将于2024年3月8-10…

算法竞赛备赛进阶之状态机模型训练

目录 1.大盗阿福 2.股票买卖IV 3.股票买卖V 4.设计密码 算法状态机&#xff08;ASM&#xff09;图是一种描述时序数字系统控制过程的算法流程图&#xff0c;其结构形式类似于计算机中的程序流程图。 ASM图是用一些特定符号按规定的连接方式来描述数字系统的功能。应用ASM图…

基于JavaWeb+SSM+购物系统微信小程序的设计和实现

基于JavaWebSSM购物系统微信小程序的设计和实现 源码获取入口前言主要技术系统设计功能截图Lun文目录订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 前言 第一章 绪 论 1.1选题背景 互联网是人类的基本需求&#xff0c;特别是在现代社会&#xff0c;…

信号的机制——信号处理函数的注册

在 Linux 操作系统中&#xff0c;为了响应各种各样的事件&#xff0c;也是定义了非常多的信号。我们可以通过 kill -l 命令&#xff0c;查看所有的信号。 # kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS …

计算机毕业设计 基于SpringBoot的医院档案管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

使用 SMI 指标增强股票分析:amCharts JS Crack

使用 SMI 指标增强股票分析 2023 年 11 月 16 日 amCharts 5&#xff1a;股票图表 v5.5.3 增加了对随机动量指数指标的支持&#xff0c;帮助用户做出更明智的交易决策。 amCharts 5&#xff1a;股票图表提供了用于显示基于时间的数据的分析工具&#xff0c;无论是金融、股票还是…

使用群晖Docker搭建HomeAssistant并实现异地公网访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 使用群晖Docker搭建HomeAssistant并实现异地公网访问 文章目录 使用群晖Docker搭建HomeAssistant…

Mac安装Homebrew

方式一&#xff1a;官网&#xff08;很慢&#xff0c;不推荐&#xff09; curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh方式二&#xff1a; 1、执行以下命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/ma…

StableDiffusion(六)——局部重绘

目录 一、局部重绘 1.局部重绘基本操作 ①打开方式 ②使用方法 ③核心参数解析 2.局部重绘&#xff08;手涂蒙版&#xff09;功能应用 3.局部重绘&#xff08;上传蒙版&#xff09;功能应用 ①选择选区 ②蒙版制作 一、局部重绘 当我们在进行AI绘画的过程中经常会出现…

JavaWeb[总结]

文章目录 一、Tomcat1. BS 与 CS 开发介绍1.1 BS 开发1.2 CS 开发 2. 浏览器访问 web 服务过程详解(面试题)2.1 回到前面的 JavaWeb 开发技术栈图2.2 浏览器访问 web 服务器文件的 UML时序图(过程) &#xff01; 二、动态 WEB 开发核心-Servlet1. 为什么会出现 Servlet2. 什么是…

linux 查看命令使用说明

查看命令的使用说明的命令有三种&#xff0c;但并不是每个命令都可以使用这三种命令去查看某个命令的使用说明&#xff0c;如果一种不行就使用另外一种试一试。 1.whatis 命令 概括命令的作用 2.命令 --help 命令的使用格式和选项的作用 3.man 命令 命令的作用和选项的详细…

基于Python3的scapy解析SSL报文

scapy对于SSL的支持个人觉得不太好&#xff0c;至少在构造报文方面没有HTTP或者DNS这种常见的报文有效方便&#xff0c;但是scapy对于SSL的解析还是可以的。下面我们以一个典型的HTTPS的报文为例&#xff0c;展示scapy解析SSL报文。 一&#xff1a;解析ClientHello报文 from sc…

Redis对象的数据结构及其原理汇总

本文首发于公众号&#xff1a;Hunter后端 原文链接&#xff1a;Redis对象的数据结构及其底层实现原理汇总 当我们被问到 Redis 中有什么数据结构&#xff0c;或者说数据类型&#xff0c;我们可能会说有字符串、列表、哈希、集合、有序集合。 其实这几种数据类型在 Redis 中都由…

数据结构02附录01:顺序表考研习题[C++]

图源&#xff1a;文心一言 考研笔记整理~&#x1f95d;&#x1f95d; 之前的博文链接在此&#xff1a;数据结构02&#xff1a;线性表[顺序表链表]_线性链表-CSDN博客~&#x1f95d;&#x1f95d; 本篇作为线性表的代码补充&#xff0c;每道题提供了优解和暴力解算法&#xf…

二十一、数组(1)

本章概要 数组特性 用于显示数组的实用程序 一等对象返回数组 简单来看&#xff0c;数组需要你去创建和初始化&#xff0c;你可以通过下标对数组元素进行访问&#xff0c;数组的大小不会改变。大多数时候你只需要知道这些&#xff0c;但有时候你必须在数组上进行更复杂的操作…