分布式系统的同步汇总

合集下载

分布式数据库的跨区域数据同步与复制(系列五)

分布式数据库的跨区域数据同步与复制(系列五)

分布式数据库的跨区域数据同步与复制随着互联网的迅猛发展,越来越多的企业和组织选择使用分布式数据库来存储和管理海量数据。

而在多地区分布的分布式数据库中,跨区域数据的同步与复制成为一项重要而具有挑战性的任务。

本文将讨论分布式数据库的跨区域数据同步与复制的必要性、困难以及解决方案。

1.数据同步的必要性在多地区分布的分布式数据库中,数据同步是必不可少的。

首先,不同地区的用户需要获取最新的数据,以保证业务的正常运行。

例如,在一个跨国企业中,总部位于国家A,分支机构分布在国家B、国家C等地。

如果分支机构只能访问数据的副本,而无法实时访问总部的数据,将严重影响企业的决策和运营效率。

其次,数据同步还可以提高系统的可用性和容错性。

当某一地区的数据库发生故障时,其他地区的数据库可以接管服务,从而保证业务的连续性。

因此,跨区域数据同步是分布式数据库的重要特性之一。

2.数据同步的困难然而,在多地区分布的分布式数据库中,数据同步并非易事。

首先,不同地区之间的网络连通性可能存在着不稳定和延迟。

网络的波动性使得数据的传输变得不可靠,而延迟会导致数据更新的时效性下降。

其次,不同地区的数据库结构和架构可能存在差异,导致数据模式的不一致。

这会给数据同步和复制带来额外的难度。

此外,由于跨区域数据同步涉及到大量的数据传输和存储,还会对网络带宽和存储资源提出更高的要求。

面对这些困难,我们需要寻找合适的解决方案。

3.解决方案针对分布式数据库的跨区域数据同步与复制问题,有许多解决方案可供选择。

首先,可以采用异步复制的方式来进行数据同步。

异步复制允许数据从一个地点复制到另一个地点时存在一定的延迟,以提高数据传输的可靠性和效率。

其次,可以采用基于事件的数据同步机制。

即当源数据库发生变化时,立即通过触发器或其他方式通知目标数据库进行数据同步。

这种机制可以实现数据的基本实时同步,并且可以减少不必要的数据传输。

此外,还可以利用增量备份和恢复技术来实现数据的快速同步和恢复。

分布式系统架构中的数据一致性问题与解决方案

分布式系统架构中的数据一致性问题与解决方案

分布式系统架构中的数据一致性问题与解决方案在当今互联网时代,分布式系统架构被广泛应用于各个领域,尤其是大型网站、云计算和物联网等。

然而,分布式系统面临的一个核心挑战就是数据一致性问题。

本文将探讨分布式系统中数据一致性问题的原因,并介绍一些常见的解决方案。

一、数据一致性问题的原因1. 网络延迟:在分布式环境下,系统中的不同节点之间通过网络进行通信。

由于网络延迟等原因,数据在不同节点之间的同步存在一定的延迟,容易导致数据一致性问题。

2. 节点故障:分布式系统中的节点数量通常较多,节点之间可能存在软件或硬件故障。

节点故障会导致数据同步失败,进而引发数据不一致的问题。

3. 并发操作:分布式系统中的节点通常是并发运行的,多个操作同时对同一份数据进行读写操作,容易导致数据不一致的情况发生。

二、数据一致性问题的解决方案1. 强一致性强一致性要求系统中的所有节点在任意时刻都能够访问到一致的数据副本。

为了实现强一致性,可以采用以下方法:(1)原子操作:将多个操作包装成原子性的操作,要么全部执行成功,要么全部执行失败。

例如,可以使用分布式事务来保证数据一致性。

(2)主从复制:将数据分为主节点和从节点,主节点负责处理写操作,从节点负责复制主节点的数据并处理读操作。

主节点和从节点之间通过同步协议保持数据一致。

(3)多数投票:在系统中的多个节点中,若有超过半数的节点达成一致意见,则视为数据同步成功。

通过多数投票来保证数据的一致性。

2. 弱一致性弱一致性允许系统在某一时间点上出现数据不一致的情况,但最终数据会达到一致。

为了实现弱一致性,可以采用以下方法:(1)最终一致性:系统允许一段时间内的数据不一致,但最终会通过一定的机制使得数据最终达到一致。

例如,可以使用版本向量或向量时钟来记录和追踪数据的变更。

(2)基于时间戳:为每个操作添加时间戳,并根据时间戳进行数据的读写操作。

通过时间戳来解决数据冲突和同步的问题。

(3)可扩展性设计:通过设计合理的分布式算法和架构,将大规模的数据分片存储,并保持各个分片的数据一致性。

分布式系统中的数据一致性问题与解决方案

分布式系统中的数据一致性问题与解决方案

分布式系统中的数据一致性问题与解决方案随着互联网和移动互联网的迅猛发展,分布式系统的应用越来越普遍,如今的互联网应用大多数都采用了分布式系统技术。

分布式系统的优势在于可以将同一个应用分配到不同的服务器上,从而实现负载均衡和提高系统的可用性、可扩展性和性能等。

但是,分布式系统也带来了很多问题,其中数据一致性问题是最为突出的。

数据一致性问题是由于分布式系统中的数据存在多副本,不同副本的数据更新可能不同步导致的。

简单来说,就是在分布式系统中数据的读写操作不是原子操作,可能会因为网络延迟、硬件故障等原因造成数据不一致的情况。

例如,一个用户在A机器上更新了数据,而B机器上的数据副本还没有及时更新,此时如果其他用户在B机器上读取该数据就会出现错误。

要解决分布式系统中的数据一致性问题,通常有以下几种方案:1. 强一致性方案强一致性方案是指,在分布式系统中,所有的数据副本都必须保持一致,即同一时刻读取到所有数据副本的内容是相同的。

这样做的好处是程序员不必关心数据的一致性问题,但是强一致性方案对分布式系统的计算能力、网络延迟、存储能力等有较高要求,同时也会带来较高的成本。

2. 弱一致性方案弱一致性方案是指,在分布式系统中允许不同副本数据之间出现一定的延迟和不一致,但最终会达到一致状态,即一定时间内数据的可见性是不确定的。

这种方案对于分布式系统的计算和存储要求相对较低,能够有效提升系统的性能和并发度,但是需要针对具体应用场景做出量化的数据可见性处理。

3. 提高硬件可靠性提高硬件可靠性是指在分布式系统中采用冗余设计。

例如,保证每个节点都有多份数据副本,即可保障即使出现某个节点的错误,一般情况下也不会影响分布式系统的整体运作。

4. 副本之间进行同步在分布式系统中,各个数据副本之间必须通过某种方法进行同步。

典型的同步方案包括主从复制、群集复制、异步复制和同步复制等,根据具体的应用场景、性能要求和数据可见性等选择合适的同步方案。

分布式数据库的多副本复制与同步机制(Ⅲ)

分布式数据库的多副本复制与同步机制(Ⅲ)

分布式数据库的多副本复制与同步机制随着互联网的快速发展,数据量的爆炸式增长已经成为一种常态。

在这种情况下,传统的单机数据库已经无法满足大规模数据存储和处理的需求,因此分布式数据库成为了一种必然的选择。

在分布式数据库中,多副本复制与同步机制是其核心技术之一,为了实现数据的高可用性和数据一致性,分布式数据库需要采取一系列的多副本复制与同步机制。

多副本复制是指将数据库中的数据在多个节点上进行备份,这样即使某一节点发生故障,其他节点仍然可以继续提供服务。

而同步机制则是指确保各个副本之间的数据保持一致,即在数据发生变化时,各个副本都能够及时地更新。

本文将从多副本复制和同步机制两个方面来探讨分布式数据库的技术原理和实现方式。

多副本复制在分布式数据库中,多副本复制是实现高可用性和容错性的重要手段。

通过将数据复制到不同的节点上,可以提高系统的可用性和抗故障能力。

常见的多副本复制策略包括主从复制和多主复制两种。

主从复制是最常见的多副本复制策略之一,它通常由一个主节点和多个从节点组成。

主节点负责接收客户端的写请求,并将写操作同步到各个从节点上,从节点则负责处理读请求。

这样一来,即使主节点发生故障,从节点仍然可以提供读服务,从而提高系统的可用性。

主从复制的实现方式通常包括同步复制和异步复制两种。

在同步复制中,主节点在写操作完成之前会等待所有从节点都确认已经成功复制数据,而在异步复制中,主节点则会立即返回写操作的结果,而不等待从节点的确认。

同步复制能够保证数据的一致性,但会降低系统的性能,而异步复制则不能保证数据的一致性。

另一种多副本复制策略是多主复制,它由多个节点组成,每个节点都既是主节点也是从节点。

多主复制通常用于需要在不同地理位置提供数据读写服务的场景,例如全球分布式数据库。

多主复制既可以提高系统的可用性,又可以减少单点故障的影响,但也会增加数据一致性的难度。

同步机制在多副本复制的基础上,为了保证各个副本之间的数据一致性,需要采取一定的同步机制。

数据库 同步方法

数据库 同步方法

数据库同步方法数据库同步是指将多个数据库中的数据保持一致的过程,使得多个数据库中的数据始终保持相同或相近的状态。

在现实应用中,数据库同步非常重要,因为它可以确保数据的一致性和可靠性。

数据库同步的方法有很多种,下面将详细介绍几种常用的数据库同步方法。

1. 主从同步:主从同步是数据库同步的一种常见方式。

主数据库是所有写入操作的源头,而从数据库是主数据库的副本。

主数据库负责处理写入操作,并将写入的数据同步到从数据库中。

主数据库和从数据库之间通过网络连接,主数据库将写入操作的日志文件传输给从数据库,从数据库通过重放这些日志文件来进行数据同步。

主从同步的特点是简单易用,可以提供较高的数据一致性和可用性。

2. 双主同步:双主同步是指在多个数据库之间进行双向同步的方法。

每个数据库都可以接收写入操作,并将写入的数据同步到其他数据库中。

双主同步可以提供更好的性能和可扩展性,因为每个数据库都可以承担写入操作的负载。

但是,双主同步也面临一些挑战,如数据冲突和一致性问题,需要采取合适的冲突解决策略和同步协议。

3. 分布式同步:分布式同步是指在分布式系统中进行数据库同步的方法。

分布式系统由多个数据库节点组成,每个节点存储部分数据,并独立进行写入操作。

为了保持数据的一致性,需要在节点之间进行数据同步。

分布式同步可以提高系统的可伸缩性和容错性,但也需要解决数据同步的一致性和性能问题。

4. 日志复制同步:日志复制同步是一种常用的数据库同步方法。

数据库会生成写入操作的日志文件,包含所有对数据的修改,通过复制这些日志文件来进行数据同步。

日志复制同步的优点是实现简单,并且可以提供高性能的数据同步,但也需要解决数据冲突和一致性问题。

5. 基于时间戳的同步:基于时间戳的同步是一种常用的数据库同步方法。

每个数据库节点都维护一个全局时间戳,用于标记每个操作的时间。

当一个写入操作发生时,它会带有一个时间戳,并广播到其他节点进行数据同步。

其他节点接收到这个操作后,会根据时间戳决定是否接受这个操作。

保证分布式系统数据一致性的6种方案

保证分布式系统数据一致性的6种方案

保证分布式系统数据一致性的6种方案问题的起源在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?具体业务场景如下,比如一个业务操作,如果同时调用服务A、B、C,需要满足要么同时成功;要么同时失败。

A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。

在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。

为了便于讨论问题,先简单介绍下数据一致性的基础理论。

强一致当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。

这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。

根据CAP 理论,这种实现需要牺牲可用性。

弱一致性系统并不保证续进程或者线程的访问都会返回最新的更新过的值。

系统在数据写入成功之后,不承诺立即可以读到最新写入的值,也不会具体的承诺多久之后可以读到。

最终一致性弱一致性的特定形式。

系统保证在没有后续更新的前提下,系统最终返回上一次更新操作的值。

在没有故障发生的前提下,不一致窗口的时间主要受通信延迟,系统负载和复制副本的个数影响。

DNS 是一个典型的最终一致性系统。

在工程实践上,为了保障系统的可用性,互联网系统大多将强一致性需求转换成最终一致性的需求,并通过系统执行幂等性的保证,保证数据的最终一致性。

但在电商等场景中,对于数据一致性的解决方法和常见的互联网系统(如MySQL 主从同步)又有一定区别,群友的讨论分成以下 6 种解决方案。

1. 规避分布式事务——业务整合业务整合方案主要采用将接口整合到本地执行的方法。

拿问题场景来说,则可以将服务 A、B、C 整合为一个服务 D 给业务,这个服务D 再通过转换为本地事务的方式,比如服务 D 包含本地服务和服务 E,而服务 E 是本地服务 A ~ C 的整合。

优点:解决(规避)了分布式事务。

缺点:显而易见,把本来规划拆分好的业务,又耦合到了一起,业务职责不清晰,不利于维护。

集群同步机制

集群同步机制

集群同步机制
集群同步机制是指在分布式系统中,多个节点之间保持数据一致性的一种机制。

在一个分布式系统中,不同的节点可能会同时对数据进行读写操作,如果没有同步机制,就会出现数据不一致的情况,从而导致系统的错误。

为了保证数据的一致性,分布式系统通常采用以下两种同步机制:
1.主从同步机制
主从同步机制是指在分布式系统中,将一个节点作为主节点,其他节点作为从节点,主节点负责接收所有的写操作,并将这些操作同步到所有的从节点上,从节点则只能进行读操作。

这样就可以保证所有节点上的数据是一致的。

2.多数派同步机制
多数派同步机制是指在分布式系统中,将所有节点分为若干个集合,每个集合中的节点称为一个派别,每个派别中的节点都需要达成一致意见,才能进行写操作。

具体来说,当一个节点想要进行写操作时,它需要先向其他节点发送请求,如果大多数节点同意该操作,那么该操作就可以执行。

这样就可以保证所有节点上的数据是一致的。

总的来说,集群同步机制是分布式系统中非常重要的一部分,它可以保证系统的数据一致性,从而提高系统的可靠性和稳定性。

解决分布式计算中的数据传输和同步问题

解决分布式计算中的数据传输和同步问题

解决分布式计算中的数据传输和同步问题在分布式计算中,数据传输和同步问题是非常关键的,直接影响到系统的性能和可靠性。

在这篇文章中,我们将探讨如何解决这些问题,并介绍一些常用的技术和方法。

一、数据传输问题在分布式计算中,数据传输通常是指将数据从一个节点传输到另一个节点。

数据传输问题主要包括传输速度、数据可靠性和传输延迟等方面的挑战。

1.传输速度传输速度是指在单位时间内传输的数据量。

在分布式计算中,数据量通常很大,因此传输速度是一个关键因素。

为了提高传输速度,可以采取以下几种方法:-使用高速网络:采用高速网络(如千兆以太网、光纤网络等)可以显著提高数据传输速度。

-减少传输数据量:可以采取压缩算法或只传输数据的摘要或差异,从而减少传输数据量。

-并行传输:将数据分成多个部分,并通过多个通道并行传输,从而提高传输速度。

2.数据可靠性数据可靠性是指在传输过程中数据不发生丢失或损坏。

为了确保数据的可靠性,可以采取以下几种方法:-使用校验和:在传输数据前计算数据的校验和,并在接收端校验。

如果校验和不匹配,则说明数据损坏。

-使用冗余数据:传输数据时添加冗余信息,如校验和、冗余位等,以便在数据发生损坏时进行恢复。

-数据确认机制:在传输过程中,接收方向发送方发送确认信息,以确保数据的正确传输。

3.传输延迟传输延迟是指数据从发送方到接收方的时间延迟。

在分布式计算中,传输延迟可能会对系统的性能产生重大影响。

为了降低传输延迟,可以采取以下几种方法:-使用高速网络:采用高速网络可以显著降低传输延迟。

-数据预取:提前将数据缓存到接收方节点,以便在需要时能够立即访问。

-数据分片:将数据分成多个小块进行传输,从而降低传输延迟。

二、数据同步问题在分布式计算中,数据同步是指多个节点之间保持数据一致性的过程。

数据同步问题主要包括数据一致性、并发控制和数据冲突等方面的挑战。

1.数据一致性数据一致性是指多个节点之间的数据保持一致。

在分布式计算中,由于节点之间的通信延迟和可能的节点故障,很难保证数据的一致性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

地球第0天到 达中天
到银河系的距 离
到银河系的距 离
地球第n天到 达中天
物理时钟:UTC (统一协调时间),它是所有现代人使用的时间。
6.1 时钟同步
6.1.3 时钟同步算法
1-ρ≤dC/dt≤1+ρ 若保证两个时钟之间的差不超过δ,时钟至少在每δ/2ρ秒内再同步 一次。(ρ为最大漂移速度)
dC/dt>1

当一个进程从大多数进程哪里获得允许而并不需要所有进程 都允许时就可以进入临界区。
6.2 互斥
6.2.3 令牌环算法
用软件的方法构造出一个逻辑环,环中每个进程都有一个位 置,每个进程都知道谁在自己的下一个位置。优点:消息比 分布式算法少。缺点:令牌丢失、进程崩溃。 2
进程
1 0 9
3 4 5
令牌持有者可 能进入临界区 或将令牌往下 传递
稍快时钟
dC/dt=1
时钟时间C
最佳时钟
dC/dt<1
稍慢时钟
UTC,t
图3-5 不是所有的时钟都按正确的速率中断
6.1 时钟同步
6.1.3 时钟同步算法
Cristian’s算法
适合于只有一台机器上有WWV接收器 (时间服务器),其它所有机器与 它同步的系统。
发送机器 时间服务器 请求 I,中断处理时 间 CUTC T0和T1都是由相同时钟测量的
Lamport解决方案:
B
调整C到达的时间为 56-61,D到达的时 间为54-70CΒιβλιοθήκη D进程0进程1
进程2
6.1 时钟同步
6.1.1 逻辑时钟
Lamport算法补充说明 ◘ 在每两个事件之间,时钟必须至少滴答一下。如果一个进程以 相当快的速度连续发送或接收两条消息,它必须在这中间至少嘀嗒 一下。 ◘ 附加条件:两个事件不会精确的同时发生。如果进程1和进程 2同时发生了2个事件,发生时刻都是40,则前者记为40.1,后者为 40.2。
6.3 选举算法
6.3.1 欺负(bully)算法
4 0
选举 5 选举 选举 6
2
1
2
4 0
以前的协调 者崩溃
OK
1
OK
5 6
2 4 0
选举
1
5
7
(a)
3
7
(b)
3
6 3
选举
7
( c)
选举
2
1
4 0
7 3
(d)
5
2 6
OK
1
4
0 7 3
( e)
5
6
协调者
协调者
6.3 选举算法
6.3.2 环算法
选举过程 ◘ 发起者沿环发送选举消息,若某点失效则绕过。 ◘ 每次发送者都将自己的进程号加入到消息中。 ◘ 最后,消息到达始发者手中,沿环发送协调者消息。
6.1 时钟同步
6.1.4 使用时钟同步
至多一次消息传递 每台机器上保存一个全局变量G,任何比G早的时间戳都能 安全地从表中移走。 G=当前时间-最大生存时间-最大时钟偏移 G是所有老消息的消息数目的梗概。每隔一定时间△T,将 当前的时间写入磁盘。当服务器重启时,从磁盘上重新装载 G, 再加上 △T。 基于时钟的缓冲存储器的一致性
5 6 0
1 0 7
5 6
2
2
3
6
5
5
2 3
4
6.4 原子事务
6.4.1 原子事务简介
两个例子 ◘ 老式磁带
以前的库存 输入 磁带 今天的更新 新的库存
计算机
输出 磁带
◘ 银行转帐 (1)提取(金额,账户1) (2)存入(金额,账户2)
6.4 原子事务
6.4.2 事务模型
稳定存储器 ◘ 不受洪水地震之类大灾难之外的任何其他错误的影响,可以 通过两个磁盘实现。适合于需高度容错的应用,例如事务。
6.1 时钟同步
6.1.3 时钟同步算法
Berkeley算法

时间守护进程(时间服务器)定期地询问每台机器的时间。 然后基于这些回答计算出平均值并告诉所有的机器将它们的时钟 拨快或拨慢到一个新的值。(适合于没有WWV接收器的系统)
3:00 3:00 3:00 3:00 +25 3:00 0 -10 -20 3:00 +5 +15
0 6 12 18 24 30 36 42 48 54 60 A 0 8 16 24 32 40 48 56 64 72 80 0 10 20 30 40 50 60 70 80 90 100
例子:三个进程,每个均 有自己的时钟,每个 时钟速率不同。
B
C
D
进程0
进程1
进程2
6.1 时钟同步
6.1.1 逻辑时钟
Ricart和Agrawale算法 ◘ 每次进入临界区需要2(n-1)条消息,n为系统中进程数。 ◘ 如何解决多点失效 当请求到达时,不管是许可还是拒绝,都要发送应答。 一旦请求或应答丢失,发送者的等待时间到,它继续发 送直到得到应答或者认为目的进程已经崩溃为止。 ◘ 使用组通信原语 ◘ 算法改进
第6章 分布式系统的同步
时钟同步
互斥
选举算法
原子事务
分布式系统中的死锁
6.1 时钟同步
分布式算法的性质
• 相关信息分散在多台机器上 • 进程决策仅仅依赖于本地信息 • 系统中单点故障应避免 • 没有公用时钟和其他精确的全局时间资源存在
进行编译的 计算机
进行编译的 计算机
2144
2145
创建
2146
并发事件 如果两个事件x和y,出现在不同的进程中,但并不交换消息,则x→y为
假, y→x也为假。则事件x和y称为并发事件。
6.1 时钟同步
6.1.1 逻辑时钟
Lamport算法 对于对每一事件a,给它分配一个时间值C(a)。这些时间值具有 下列性质:若a→b,则c(a)<c(b)。此外,时钟时间值C必须递增, 不能倒退。
问题:同步所有时钟产生一个单一的、无二义的时间标准可能吗? ——Lamport:时钟同步是可能的!!!
◘ 如果两个进程无相互作用,它们的时钟无需同步。 ◘ 时钟同步不需要绝对同步,不需所有进程在时间上完全一致,而是它们 在事件发生的顺序上要完全一致。 ◘ 只关心事件发生的顺序,而不关心是否与真实时间接近。(逻辑时钟)
lamport算法遵循的规则:
◘ 若在同一进程中a发生在b之前,则C(a)<C(b); ◘ 若a和b分别代表发送消息和接收消息,则C(a)<C(b); ◘ 对所有的a和b,C(a)≠C(b)。
6.1 时钟同步
6.1.2 物理时钟
地球轨道
中天点:太阳到 达一天的最高 点
在n天以后的中天 点地球已经旋转 了将近360度
表3-1 三种互斥算法比较
6.3 选举算法
6.3.1 欺负(bully)算法
假设每个进程有一个特殊的号码,通常选举算法总是找拥有最 大号码的进程。
欺负算法:当一个进程发现协调者不再相应请求时,它发起选 举。进程P选举过程如下:
◘ P向所有号码比它大的进程发送选举(Election)消息 ◘ 若无人响应,P获胜成为协调者。 ◘ 若有号码比它大的进程响应,响应者接管,P的工作完成。 由于最大的进程总能取胜,因而将该算法命名为欺负算法。
6.2 互斥
6.2.2 分布式算法
Ricart和Agrawale算法 ② 若接收者已经在临界区中,它就不必回答,而是负责对 请求队列排队。 ③ 若接收者要进入临界区,但是还没有进入时,它要将发 来的消息和它发送给其余进程的时间戳对比,取小的那个。 如果来得消息时间戳小,接收者发送OK消息。如果接收者 本身的时间戳小,那么接收者负责排列请求队列而不发送 任何消息。 ◘ 在发送完允许进入临界区的请求后,进程将不做任何事,仅 等待所有的允许消息,一旦得到允许,它就进入临界区。 ◘ 从临界区退出时,向队列中所有进程发送OK消息,并将它从 队列中删除。
0 2 4 9 7 1 6 5 8 3
网络
8
7
6
图3-10 (a) 网络中一组未排序的进程
(b) 用软件构造进程的逻辑环
6.2 互斥
6.2.4 三种算法的比较
集中式、分布式和令牌环三种算法的性质的比较:进程进入或退 出临界区需要的消息数目,每次进入前的延迟以及一些与算法有 关的问题。
算法 集中式 分布式 令牌环 每次进出需要 的消息 3 2(n-1) 1到无穷大 进入前的延迟 (按消息次数) 2 2(n-1) 0到n-1 问题 协调者崩溃 任何一个进程崩溃 丢失令牌,进程崩溃
3:25
2:50
3:25
机器应答
2:50
3:05
3:05
时间守护进程询问其它 机器的时间值
时间守护进程通知每个 机器如何调整时间
6.1 时钟同步
6.1.3 时钟同步算法
平均值算法 ◘ 将时间分成固定长度的再同步间隔,第i次间隔开始于T0+iR, 结束于T0+(i+1)R .T0是过去某一约定的时间,R是一个系统 参数。 ◘ 在每次间隔开始处,每台机器根据自己的时钟广播发送当 前的时间。 ◘ 在机器广播发送时间之后,它启动本地计时器收集在 S时间 间隔中到达的其他广播。 ◘ 当所有广播到达后,执行一个算法,得到新的时间值。这 个算法可以是求这些值得平均值,或者是去掉m个最大值和 m个最小值,平均其余值。
6.2 互斥
6.2.2 分布式算法
Ricart和Agrawale算法 要求系统中所有的事件都是全序的。即对于任何事件组 (如消息),哪个先发生,哪个后发生必须无歧异。算法如下: ◘ 当一个进程想进入临界区,它要建立一个包括它要进入的 临界区的名字、处理机号和当前时间的消息,然后将消息 发给所有其他进程。(也包括发送给它自身) ◘ 当一个进程接收到另一个进程请求消息时,它取决于接收 方的状态以及临界区的命名。有三种情况要加以区别。 ① 若接收者不在临界区中,也不想进入临界区,它就向 发送者发送OK消息。
相关文档
最新文档