分布式系统中的 safety 和 liveness

栏目: 后端 · 发布时间: 6年前

内容简介:在分布式系统的算法和设计中,通俗来讲,这2个属性的含义就是:我们可以举一些例子来说明:

在分布式系统的算法和设计中, safetyliveness 是2个非常重要的属性,这个概念最早由 L. Lamport 提出。这2个属性是非常基础的属性,系统中的其他属性都可以被分解为 safetyliveness

通俗来讲,这2个属性的含义就是:

  • safety something “bad” will never happen
  • liveness something “good” will must happen (but we don’t know when)

我们可以举一些例子来说明:

  1. 同一时刻,只有一个进程能够进入互斥临界区

1是一个关于 safety 的表述,它表述了,什么样的时间不应该被发生,那就是”同一时刻,不少于一个进程进入了互斥临界区“。

  1. 进程 P2 不会永远停留在互斥临界区,以至于 P1 最终能够进入互斥临界区。

2是一个关于 liveness 的表述,它表述了什么样的事件最终应该被发送,那就是“ P1 最终会进入互斥临界区”。

  1. gossip协议具有 最终一致性

3是关于 liveness 的表述,

更加形式化的解释我们可以参考 Safety & Liveness Properties

虽然 safetyliveness 是正交地两个属性,但是在设计一个分布式系统时,我们需要同时考虑这两个属性,只具备其中之一的系统是没有意义的。

避免 死锁 是保证 liveness 的一个充分条件,虽然这个约束比较弱。但是是比较好验证的,如果算法、逻辑中存在死锁,那么一定不能保证系统的 liveness 。避免 饥饿 也是保证 liveness 的一个充分条件,这个约束比避免 死锁 更强一些,因为避免 饥饿 的算法一定是避免 死锁 的。更强的约束是,保证算法、逻辑能在 有限步骤内完成 ,这样系统一定是 liveness 的,但是这个约束条件很难被验证和证明。

关于 safetyliveness 的历史可以参考 afety and liveness properties: a survey

参考


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法设计、分析与实现

算法设计、分析与实现

徐子珊 / 2012-10 / 65.00元

《算法设计、分析与实现:c、c++和java》由徐子珊编著,第1章~第6章按算法设计技巧分成渐增型算法、分治算法、动态规划算法、贪婪算法、回溯算法和图的搜索算法。每章针对一些经典问题给出解决问题的算法,并分析算法的时间复杂度。这样对于初学者来说,按照算法的设计方法划分,算法思想的阐述比较集中,有利于快速入门理解算法的精髓所在。一旦具备了算法设计的基本方法,按应用领域划分专题深入学习,读者可以结合已......一起来看看 《算法设计、分析与实现》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

SHA 加密
SHA 加密

SHA 加密工具