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

news2024/11/24 14:36:54

第一章

  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.coloradmin.cn/o/1220105.html

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

相关文章

Smart Tomcat的使用

文章目录 Smart Tomcat的作用Smart Tomcat的安装Smart Tomcat的配置Smart Tomcat的启动 Smart Tomcat的作用 我们知道使用Servlet来完成一个项目一共需要七个步骤&#xff0c;即创建maven项目、添加依赖、创建目录结构、编写代码、打包程序、部署程序、验证程序。这样的确是完…

Mysql之多表查询下篇

Mysql之多表查询下篇 满外连接的实现UNION关键字UNIONUNION ALL操作符 7种SQL JOINS的实现语法格式小结自然连接USING连接表连接的约束条件 满外连接的实现 在上篇博客中&#xff0c;我们可以了解到在Mysql中是不支持FULL JOIN来实现 满外连接的&#xff0c;那么我们在Mysql采用…

Leetcode—2760.最长奇偶子数组【简单】

2023每日刷题&#xff08;三十一&#xff09; Leetcode—2760.最长奇偶子数组 实现代码 #define MAX(a, b) ((a > b) ? (a): (b)) int longestAlternatingSubarray(int* nums, int numsSize, int threshold){int ans 0;int i 0;while(i < numsSize) {if(nums[i] >…

Wi-Fi 网络管理的最佳实践

无论是机场、银行、医院、IT 组织还是 MSP&#xff0c;如今 Wi-Fi 网络都在随处部署和使用。由于其成本效益、灵活性和简化的可扩展性&#xff0c;无线网络现已作为其 IT 基础设施的一部分被整合到许多网络中。但是&#xff0c;设置和管理 Wi-Fi 网络的任务并不像最终用户访问它…

【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…

如何使用Matplotlib模块的text()函数给柱形图添加美丽的标签数据?

如何使用Matplotlib模块的text函数给柱形图添加美丽的标签数据&#xff1f; 1 简单引入2 关于text()函数2.1 Matplotlib安装2.2 text()引入2.3 text()源码2.4 text()参数说明2.5 text()两个简单示例 3 柱形图绘制并添加标签3.1 目标数据3.2 读取excel数据3.3 设置窗口大小和xy轴…

编译安装redis及配置多实例

yum安装是这种十分简单的方法我们就不在提及了&#xff0c;今天我们来做一下redis的编译安装 Redis源码包官方下载链接&#xff1a;http://download.redis.io/releases/ 一、编译安装&#xff1a; 安装依赖包 dnf -y install make gcc jemalloc-devel systemd-devel如果是…

配置环境-insightface-torch

1. 创建环境&#xff1a;conda create -n insightface2 python3.8 2.安装pytorch: 我的cuda 是 11.3 然后进入 pytorch 官网查找对应cuda 版本 pytorch 安装 建议使用 pip # CUDA 11.3 conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.3 -…

抖音订单列表查询api接口

怎么获取订单列表接口 请求地址&#xff1a;响应示例及参数

asp.net健身会所管理系统sqlserver

asp.net健身会所管理系统sqlserver说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库 功能模块&#xff1a; 首页 会员注册 教练预约 系统公告 健身课程 在线办卡 用户中心[修改个人信息 修…

数据结构--栈与队列

目录 前言 1.栈 1.1栈的概念及结构 1.2接口函数 1.3函数实现 1.4如何使用 2.队列 2.1队列的概念及结构 2.2接口函数 2.3函数实现 2.4如何使用 前言 前面我们已经学习了顺序表和链表&#xff0c;今天我们来学习栈与队列&#xff0c;这两种结构也属于线性表&#xff0c;实…

【数据结构初阶】单链表(附全部码源)

单链表 1&#xff0c;单链表的概念及结构2&#xff0c;单链表的实现2.1初始化内容&#xff08;所需文件&#xff0c;接口&#xff09;2.2申请结点2.3打印单链表2.4尾插2.5头插2.6尾删2.7头删2.8查找2.9在pos位置之后插入2.10在pos位置前面插入2.11删除pos之后的值2.12删除pos位…

2023亚太杯数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

接口测试系列之 —— 接口安全测试

“开源 Web 应用安全项目”(OWASP)在 2019 年发布了 API 十大安全风险 《OWASP API 安全 Top10》&#xff1a;失效的对象级别授权、失效的用户身份验证、过 度的数据暴露、资源缺乏和速率限制、失效的功能级授权、批量分配、安全配置 错误、注入、资产管理不当、日志和监视不足…

百家网约车平台发布“阳光五条” 多举措加强司机保障

11月17日&#xff0c;免佣联盟百家网约车平台发布“阳光五条”&#xff0c;通过加大免佣力度、实行车费保镖司机版、72小时保护期等措施&#xff0c;加强对网约车司机的权益保障。 近年&#xff0c;交通运输部推动交通运输新业态平台企业落实“阳光行动”等工作&#xff0c;加…

图像分类系列(三) GoogLeNet InceptionV1学习详细记录

前言 ​ 在上一期中介绍了VGG&#xff0c;VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩&#xff0c;而今天要介绍的就是同年分类任务的第一名——GoogLeNet 。 ​ 作为2014年ImageNet比赛冠军&#xff0c;GoogLeNet 比VGG更深的网络&#xff0c;比Alex…

11月17日,国家大基金三期隆重开启,共同见证芯片产业新时代!

11月17日&#xff0c;国家大基金三期隆重开启&#xff0c;共同见证芯片产业新时代&#xff01; 自国家大基金二期于2019年10月注册成立以来&#xff0c;一直积极响应国家战略和新兴行业发展规划&#xff0c;对设计创新行业的投资加大规模&#xff0c;比如智能汽车、智能电网、人…

初识Linux:目录的创建销毁

目录 ​编辑 提示&#xff1a;以下指令均在Xshell 7 中进行 零、桌面的本质 &#x1f4bb; 扩展&#x1f387;&#xff1a; 一、cd指令&#xff1a; 1、cd - &#xff1a; 2、cd ~&#xff1a; 重命名命令&#xff1a;alias 二、stat指令 冷知识&#xff1a; 如果…

如何在工作外发展副业?主业和副业该如何权衡

有一句话说得好&#xff0c;不要把所有的鸡蛋放在一个篮子里。在面对繁忙的工作生活之外&#xff0c;想要拥有额外的收入来源那就是做一份不影响主业的副业。而副业的发展&#xff0c;不仅能够增加收入&#xff0c;更可以拓展个人的技能和兴趣。 主业跟副业该如何权衡呢&#x…

时间序列预测(6) — ARIMA实现单输入单输出负荷预测

目录 1 数据准备与可视化 2 简单数据探索与清洗 3 差分处理 4 绘制ACF与PACF图像&#xff0c;完成模型选择 5 建立ARIMA和SARIMA模型 5.1 初步建模 5.2 精细化建模 5.3 最终的模型 ARIMA作为成熟的统计学模型已被各种软件以各种方式实现&#xff0c;在Python中我们最常使…