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

介绍

在分布式系统中,时间是一个巨大的问题,因为在不同的电脑上会有他们自己的物理时间,如何做到状态事务的一致性往往比较难。缺少一个全局的物理时间使得很难去发现一段分布式程序的执行的状态是如何。

时钟,事件,进程状态和时间同步算法

小标题中提到的3个 名次在分布式的时间中出现最多频率的词。如何同步不同机器上的物理时间呢,下面简单的列举几个算法

1、一个叫Cristian方法同步物理时间的办法,这个方法会用到一个额外的时间服务器,但是这里会有个问题,如果这个服务挂了,岂不是同步失效了,不过你可以构建一个时间服务器集群服务。

2、第二个方法叫做Berkeley算法。

3、第三个方法通过Network Time Protocol (NTP)协议,该协议定义了一个时间服务和分布式的时间协议构建于网络之上。

逻辑时间和时钟

有的时候计算机上的物理时间往往不同,但是可以自己定义一套逻辑时间的规范,来记录消息事件的有序性。典型的方法就是向量时钟表示法,(V[1], V[2], V[3],...),V[i]代表的是第Pi进程的已发生事件数。通过比较向量值的大小得出时间event的顺序,只有每个V[i]<V[j]才能定义前者小于后者,此算法的缺点是太占存储空间了,每个时间上存储了所有的进程的时间数的表示。

全局状态

全局状态指的是一个系统他的执行的情况。比如下面的一些场景中就需要状态的检测:1、垃圾回收的时候。2、死锁的检测。3、终止条件的检测。当然这些情景的检测在分布式的环境下都显得不是特别容易。这里提供的一个算法实现叫做"snapshot"的算法。

分布式调试

分布式调试的核心技术点在于监视整个系统,并对执行的结果状态进行观察,并收集其中的状态。

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

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

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

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

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

Swift学习笔记十四:构造(Initialization)

类和结构体在实例创建时,必须为所有存储型属性设置合适的初始值.存储型属性的值不能处于一个未知的状态. 你可以在构造器中为存储型属性赋初值,也可以在定义属性时为其设置默认值.以下章节将详细介绍这两种方法. 注意: 当你为存储型属性设置默认值或者在构造器中为其赋值时,它们的值是被直接设置的,不会触发任何属性观测器(property observers). 一.基本语法 class Human{ var name :String init(){ name = "human" } init(n

Hadoop阅读笔记(四)——一幅图看透MapReduce机制

时至今日,已然看到第十章,似乎越是焦躁什么时候能翻完这本圣经的时候也让自己变得更加浮躁,想想后面还有一半的行程没走,我觉得这样“有口无心”的学习方式是不奏效的,或者是收效甚微的.如果有幸能有大牛路过,请指教如何能以效率较高的方式学习Hadoop. 我已经记不清圣经<hadoop 实战2>在我手中停留了多久,但是每一页每一章的翻过去,还是在脑壳里留下了点什么. 一段时间以来,我还是通过这本书加深以及纠正了我对于MapReduce.HDFS乃至Hadoop的新的认识.本篇主要介绍MapReduce

swift 笔记 (十四) —— 构造过程

构造过程 为了生成类.结构体.枚举等的实例,而做的准备过程,叫做构造过程. 为了这个过程,我们通常会定义一个方法来完成,这个方法叫做构造器.当然它的逆过程,叫做析构器,用于在实例被释放前做一些清理工作以及一此自定义化的处理. 为存储型属性设置初始值 类和结构体在生成实例那一刻,必须为所有的属性赋以特定的初始值. 要么在定义存储型属性的时候直接给个初始值,否则就必须在构造器里面指定一个初始值. 上面说的这两种情况,都不会触发存储型属性的监听者行为(property observer). struc

人月神话阅读笔记—第四章

人月神话阅读笔记-第四章 ------2016.6.14 概念的完整性是很重要的,为了反应一系列连贯的设计思路,可以省略一些不规则的特性和改进,不提倡独立和无法整合的系统,最需要的是在整体概念上的完整性要求. 获得概念的完整性时,会出现一种情况,编程系统使计算机更加好用,但是功能比较多的时候,软件外部描述就会比系统本身大很多:但是功能太少,不能满足需求,但是都需要满足概念上的完整性. 在进行概念的完整性时,产品设计需要由一个人或者少数几个人来实现,但是对于大型的系统,需要将设计方法.体系结构的工

laravel3学习笔记(十四)

原作者博客:ieqi.net ==================================================================================================== 运行时配置 在 Laravel3 中很多地方我们都可以看到“约定大于配置”的影子,我本人也很喜欢这种工程哲学尤其是在框架领域,当然这并不能代替所有的配置.我们知道 Laravel3 中,主要配置都写在 application/config 文件夹下,在应用逻辑中,往往

Oracle基础笔记十四

第十四章 高级子查询 1.子查询 子查询 (内查询) 在主查询执行之前执行 主查询(外查询)使用子查询的结果 SELECT select_list FROM table WHERE expr operator (SELECT select_list FROM  table); 问题:查询工资大于149号员工工资的员工的信息 SELECT last_name FROM   employees WHERE  salary > (SELECT salary FROM   employees WHERE

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

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

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

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