分布式系统阅读笔记(十五)-----协调和一致性

介绍

这里说的协调和一致性指的是在分布式系统的环境下,对于多进程访问共享资源的一个协调和数据状态的一致性的保证。其中的措施包括分布式的共有排除机理,在组通信中的协调和一致性的手段,还有这其中可能会出现的一些问题。在整个协调服务的过程中,有一个东西非常重要,就是失败的监听,这里需要一个失败监听器。可以用一个进程作为失败监听进程,都其他的进行进行监听,方式可以通过类似心跳机制,发送消息证明自己目前是活着的状态。

分布式的共有排除

这个指的是一堆的进程共同的访问共享的一堆资源的情况,通过分布式的共有的排除的执行机理,保证资源状态的一致性。比如访问一个文件服务器,你可以通过一个锁服务,只保证当前只能有1个进程可以操作文件,只有当操作文件的进程释放锁的时候,其他的进程才有资格继续操作。

1、共有排除的本质就是让哪个进程能够进入资源的临界区。这里说说一些共有排除机理实现的一些算法:1、通过中心服务器通过grant授权token给客户端的方式进行。2、基于环状的算法,进程组成一个逻辑环的样子,每个进程只能与他的下一个进程进行通信。3、通过多播和逻辑时钟的方式。每个进程通过与其他的进程之间的沟通。4、最后当然还有投票选举算法的系列方式。

选举

这里所说的选举指的是从众多进程中选出一个进行能够进入资源访问临界区,就是那个幸运的能够访问临界区的算法。这里只提供一些算法的基本方式:1、基于环状的选举算法。2、bully算法。

组通信中的协调和一致性

1、在组通信中,2个核心的方式是基础的多播方式和可信赖的多播方式,其中可信赖的多播方式可以是在基础多播方式进行修改,也可以在IP多播机制上做修改。

2、多播有序性,这里主要为3大有序性:1、FIFO ordering,先进先出有序,他的实现可以通过序列号码的方式。2、Causal Ordering 因果有序性。3、Total Ordering 全局有序性,他的实现方式可以通过排序标识。

相关的问题

在协调与一致性的过程中,可能会出现3大问题:1、共识,一致的问题。2、byzantine generals(拜占庭将军问题),意指一个系统能够容忍其中一个或多个组件的失效。3、交互的一致性问题。以上的3个问题在同步的系统中是存在解决方案的,在异步的系统中则不那么简单。

参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore,
Tim Kindberg,Gordon Blair

时间: 2024-10-10 07:27:35

分布式系统阅读笔记(十五)-----协调和一致性的相关文章

Hadoop阅读笔记(五)——重返Hadoop目录结构

常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼,先走外貌协会的路线,打量一番,再通过望闻问切等各种手段获取关于你的大量信息(如谈吐.举止等),以快速建立起对于你的认识. 待人接物如此,搞技术也不例外,起码我是这样的.把玩了一番Hadoop的MapReduce过程,单词计数.去重.单表关联等运行的时候控制台打印出各种我看懂看不懂的信息,有了这些视

面对软件错误构建可靠的分布式系统(阅读笔记)

阅读笔记 joe Armstrong 段先德 译 核心问题:如何在存在软件错误的情况下编写具有合理行为的软件 ,如何避免像死锁.死循环等问题 ERLANG的世界观,一切皆进程.将任务分离成层次化的一系列任务,强隔离的进程负责来执行每个具体化的任务,进程之间不共享状态(实际上ETS跨越了这个准则). 只能通过消息传递来通信,必须注意进程消息的堵塞问题 工作者和监督者构成一个完整的系统,监督者的作用就是监控整个系统的运行状况.并对突发情况进行可靠的处理. behaviour库的设计思想就是将程序的并

Swift 学习笔记十五:扩展

扩展就是向一个已有的类.结构体或枚举类型添加新功能(functionality).扩展和 Objective-C 中的分类(categories)类似.(不过与Objective-C不同的是,Swift 的扩展没有名字.) Swift 中的扩展可以: 1.添加计算型属性和计算静态属性 2.定义实例方法和类型方法 3.提供新的构造器 4.定义下标 5.定义和使用新的嵌套类型 6.使一个已有类型符合某个协议 一.扩展属性,构造器,方法 class Human{ var name:String? va

laravel3学习笔记(十五)

原作者博客:ieqi.net ==================================================================================================== 异常与日志 在应用中,我们总会遇到各种问题.各种异常,这时,记录异常发生时的状态就很重要,所以异常与日志是有着天然的关系的. 关于异常与日志的配置在文件 application/config/error.php 中. 文件中有四个配置项: 'ignore' => ar

【unix网络编程第三版】阅读笔记(五):I/O复用:select和poll函数

本博文主要针对UNP一书中的第六章内容来聊聊I/O复用技术以及其在网络编程中的实现 1. I/O复用技术 I/O多路复用是指内核一旦发现进程指定的一个或者多个I/O条件准备就绪,它就通知该进程.I/O复用适用于以下场合: (1) 当客户处理多个描述符(一般是交互式输入或网络套接字),必须适用I/O复用 (2) 当一个客户处理多个套接字时,这种情况很少见,但也可能出现 (3) 当一个TCP服务器既要处理监听套接字,又要处理已连接套接字,一般就要使用I/O复用 (4) 如果一个服务器既要适用TCP,

分布式系统阅读笔记(二十二)-----时钟和时钟同步

时钟的基本概念 时钟 时钟在一般意义上指的是一个计算机的物理时间,每个计算机都会包括他们自己的物理时钟,不同的计算机的物理可能会不同. 时钟漂移 经过在同个地方的计算机,他们的物理也有可能会不一样,如果他们从刚刚开始相同的时间计时开始,过了1过月,1年也可能会有快又慢,这在专业名词上讲叫做时间漂移.本质的原因是每秒的时间偏移,经过日记月累之后,就会有可能达到1秒钟的差距,解决的办法很简单,就是过一段时间之后,将时间纠正回来就可以了. UTC UTC全称是Coordinated Universal

分布式系统阅读笔记(二十)-----分布式多媒体系统

介绍 现在的分布式系统大有越来越往分布式多媒体系统的应用上走的趋势了.多媒体的应用本质上是对于持续数据流的一种消耗.包括音频以及视频,音频是由一个个audio Sample组成,而视频则是video frame组成.有时因为网络条件的原因,他是可以允许部分的延时的,延时造成的丢包率在一定比率上也是可以接受的.在多媒体应用中,很在意的quality of service服务质量的要求,因此他这里需要Qos Manager的角色. 1.分布式多媒体的应用往往是要求是实时的,这就要求系统对于QoS的控

分布式系统阅读笔记(十六)-----事务和并发控制

介绍 在分布式系统中,事务的运用和共享资源的并发控制是非常常见的.简单的说,事务就是一些原子的操作的集合.原子操作的意思就是要么操作成功要么操作失败,没有其他的选择.并发控制是出现在高并发场景的时候,本篇主要描述3种常见的手段,1.锁的措施.2.乐观并发控制手段.3.时间戳序列方式.在此之前,先回顾一下平时在写程序的时候,常见的用于同步的手段,比如说: 1.用synchronize关键字,这个字java里用的,保证只有一个线程能执行里面的方法. 2.wait()和notify()方法用以协调同步

分布式系统阅读笔记(十四)-----时钟和全局状态

介绍 在分布式系统中,时间是一个巨大的问题,因为在不同的电脑上会有他们自己的物理时间,如何做到状态事务的一致性往往比较难.缺少一个全局的物理时间使得很难去发现一段分布式程序的执行的状态是如何. 时钟,事件,进程状态和时间同步算法 小标题中提到的3个 名次在分布式的时间中出现最多频率的词.如何同步不同机器上的物理时间呢,下面简单的列举几个算法 1.一个叫Cristian方法同步物理时间的办法,这个方法会用到一个额外的时间服务器,但是这里会有个问题,如果这个服务挂了,岂不是同步失效了,不过你可以构建