文档章节

《Designing.Data-Intensive.Applications》笔记 四

 丰田破产标志
发布于 08/18 14:56
字数 698
阅读 20
收藏 0

第九章 一致性与共识
分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。
最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stronger consistency)。
摘要:

  • start by looking at one of the strongest consistency models in common use,linearizability(线性一致性)。
  • then examine the issue of ordering events(事件顺序) in a distributed system,particularly around causality(因果关系) and total ordering(全局顺序).
  • explore how to atomically commit a distributed transaction

Linearizability
非线性一致性案例:

全序
全序(total order)指允许任意两个元素进行比较,如自然数集就是全序的。
而数学集合不是全序的,如{a,b}与{b,c}不能比较大小,称为偏序。 线性一致性的系统中,操作是全序的;如果两个事件有因果关系,则它们有序,如果是并发的,则它们的顺序无法比较。这意味着因果关系定义了一个偏序。
因此线性一致性系统中,不存在并发操作。
线性一致性包含因果一致性。很多情况下,看上去需要线性一致性的系统,实际上只需要因果一致性,因果一致性可以更高效的实现。

兰伯特时间戳(Lamport timestamps)

计数器值大者是更大的时间戳,如计数器值相同,节点ID越大,时间戳越大。
兰伯特时间戳的关键思想:每个节点NODE、客户端Client跟踪迄今为止所见到的最大计数器值,并在每个请求中包含这个最大计数器值。当一个节点NODE收到的最大计数器值大于本身的计数器值,它立刻更新自己的计数器值。

全序广播(total order broadcast)
通常被描述为节点间交换消息的协议,要满足两个安全属性:

  • 可靠交付(reliable delivery)
    没有消息丢失:如果消息被传到一个节点,它将被传到所有节点
  • 全序交付(totally ordered delivery)
    消息以相同的顺序传递给每个节点

分布式事务与共识
共识是分布式计算中最重要也是最基本的问题之一。目标是让几个节点达成一致(get several nodes to agree on something)。

原子提交与二阶段提交算法(2PC,two-phase commit)
2PC的基本流程:

详细过程:

可能出现协调者失效的问题:

© 著作权归作者所有

下一篇: Git
粉丝 0
博文 9
码字总数 9957
作品 0
杭州
私信 提问
Posix多线程编程学习笔记

Posix多线程编程学习笔记(一)—线程基础(1) http://blog.chinaunix.net/u/22935/showart_310711.html Posix多线程编程学习笔记(一)—线程基础(2) http://blog.chinaunix.net/u/2293...

晨曦之光
2012/04/13
238
0
“我爱智能”原创性博客索引

不知不觉,博客也写出了一点小体系,新的阶段已经开始,未来希望再接再厉继续补充这一体系,在成长中写博客,在博客中成长,在此先做一个小的梳理,谢谢大家的支持。 一)关于深度学习系列 ...

on2way
2015/08/29
0
0
Oracle笔记 目录索引

Oracle笔记 一、oracle的安装、sqlplus的使用 Oracle笔记 二、常用dba命令行 Oracle笔记 三、function 、selectOracle笔记 四、增删改、事务 Oracle笔记 五、创建表、约束、视图、索引、序列...

ibm_hoojo
2011/05/03
0
0
AngularJs学习笔记_Index

AngularJs学习笔记 【AngularJs学习笔记一】Bower解决js的依赖管理 【AngularJs学习笔记二】Yeoman自动构建js项目 【AngularJs学习笔记三】Grunt任务管理器 【AngularJs学习笔记四】Grunt +...

陶邦仁
2016/01/21
370
0
“好好学习”app的笔记功能设计

文章目录结构 一、需求分析 二、需求目标和产品功能列表 三、产品功能流程 四、原型设计 五、产品功能细节 六、需求指标 一.需求分析 1.需求背景: 在当前阶段“好好学习”app在关于用户听书...

仔仔先生
02/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

无回路有向图的拓扑排序

因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现...

兜兜毛毛
53分钟前
5
0
如何抢占云栖大会C位?史上最强强强攻略来了

点击观看视频: APSARA云栖大会开发者情怀 原文链接 本文为云栖社区原创内容,未经允许不得转载。

阿里云官方博客
今天
6
0
Kubernetes 从懵圈到熟练:集群服务的三个要点和一种实现

作者 | 声东 阿里云售后技术专家<br /> 文章来源:Docker,点击查看原文。 <br />以我的经验来讲,理解 Kubernetes 集群服务的概念,是比较不容易的一件事情。尤其是当我们基于似是而非的理解...

阿里巴巴云原生
今天
9
0
PHP7.3的新特性

2018年12月6日,PHP7.3正式版发布,在PHP7.2基础上进行了大量错误修复和安全优化,性能提升10%! 从目前的更新说明来看,PHP 7.3 并不是一个主打新特性的版本,包含更多的是 bug 修复。PHP 7...

迅睿CMS-PHP开源CMS程序
今天
8
0
Tomcat 应用中并行流带来的类加载问题

本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/f-X3n9cvDyU5f5NYH6mhxQ 作者:肖铭轩、王道环 随着 Java8 的不断流行,越来越多的开发人员使用并行流(parallel)...

vivo互联网技术
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部