比如下面的例子:

  • 一行X值在节点M和节点N上有副本
  • 客户端A在节点M上写入行X的值
  • 一段时间后,客户端B在节点N上读取行X的值

一致性模型所要做的就是决定客户端B能否看到客户端A写的值。一致性模型分为一下几种模型:

  • 随意一致性(causal consistency)
  • delta一致性(delta consistency)
  • entry一致性(entry consistency)
  • 最终一致性(eventual consistency)
  • 创建一致性(fork consistency)
  • 原子一致性(atomic consistency)
  • 松散一致性(release consistency)
  • 顺序一致性(sequential consistency)
  • 弱一致性(weak consistency)
  • 强一致性(strong consistency)
  • casual+一致性(casual+ consistency)

下面是几种比较常用的一致性模型:

1、最终一致性(eventual consistency)

  最终一致性模型是用于分布式系统中,用来实现高可用行,确保在如果一个更新操作发生,那么最终一定可以读取到这次的更新操作的发生。最终一致性在分布式领域广泛使用,采用多个副本形式。如果一个系统实现了最终一致性,那么这个系统可以称之为收敛的,或者叫做实现了副本收敛。相比于传统的ACID(Atomicity,Consistency,Isolation,Durability),最终一致性提供的是BASE(Basic Availablilty,Soft state,Eventual Consistency)服务。最终一致性有个重大缺点:在系统达到副本收敛之前,系统有可能返回任何值

最终一致性冲突解决方法:

为了实现副本收敛的特性,系统必须协调多个不同版本之间的数据。系统实现最终一致性要求的过程叫做anti-entropy,在不同服务器之间交换数据。冲突解决方式一般是最后一个writer进行协调或者用户执行协调处理系统。

参考资料:

维基百科:eventual consistency。http://en.wikipedia.org/wiki/Eventual_consistency

2、强一致性模型(strong consistency)

强一致性模型是用于并发编程模型中的一致性模型,一般用于分布式共享内存(distributed shared memory)、分布式事务(distributed transaction)。一个协议满足强一致性模型,如果满足下面的条件:

所有并行的进程(节点,处理器等)看到的是一样的存取顺序

也就是只有一种状态被所有的并行进程观察到,对比与弱一致性(weak consitency),并行进程可能看到不同的状态。

参考资料:

维基百科:strong consistency。http://en.wikipedia.org/wiki/Strong_consistency

相对应与解决强一致性问题需求的方法:paxos算法

关于paxos算法的基本知识:

维基百科:paxos。http://en.wikipedia.org/wiki/Paxos_(computer_science)

国内介绍paxos算法比较全的网址:http://blog.csdn.net/chen77716/article/details/6166675

paxos算法作者的原著paper:http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf

paxos算法实现软件zookeeper:http://zookeeper.apache.org

paxos算法google实现chubby的经典论文:http://research.google.com/archive/chubby-osdi06.pdf

一致性模型(consistency model)的更多相关文章

  1. [翻译]内存一致性模型 --- memory consistency model

    I will just give the analogy with which I understand memory consistency models (or memory models, fo ...

  2. CAP原理、一致性模型、BASE理论和ACID特性

    CAP原理 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(Con ...

  3. thinkphp模型层Model、Logic、Service讲解

    thinkphp模型层Model.Logic.Service讲解 时间:2014-08-24 15:54:56   编辑:一切随缘   文章来源:php教程网 已阅读:771 次       js特效 ...

  4. Scikit-learn:模型评估Model evaluation

    http://blog.csdn.net/pipisorry/article/details/52250760 模型评估Model evaluation: quantifying the qualit ...

  5. 盒子模型(Box Model)

    盒子模型(Box Model) ■ 盒子模型——概念 在网页设计中常用的属性名:内容(content),填充(padding),边框(border),边界(margin),CSS 盒子模式都具备这些属 ...

  6. 使用 Jackson 树模型(tree model) API 处理 JSON

    http://blog.csdn.net/gao1440156051/article/details/54091702 http://blog.csdn.net/u010003835/article/ ...

  7. css盒模型(Box Model)

    所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用. CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和 ...

  8. HTML和CSS的盒子模型(Box model)

    本文作为属性篇的最后一篇文章, 将讲述HTML和CSS的关键—盒子模型(Box model). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css ...

  9. 事务的四大属性ACID即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability.。

    事务的四大属性ACID即事务的原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability.. 原子性(Atomicity) 原子性是指事 ...

随机推荐

  1. spring 代理

    java动态代理实现 1. Java自带的动态代理,反射生成字节码 2. Cglib调用asm生成子类 spring 中代理实现 1. 如果类实现了接口,使用java动态代理 2. 没有实现接口,使用 ...

  2. 【每日一linux命令】

    参考文章 1.[每日一linux命令]

  3. 记录开发Nodejs c++ addon的一些经验(三、关于node-gyp)

    关于node-gyp如何进行编译,我想它的官网已经说的很详细了: https://github.com/nodejs/node-gyp 但是我感觉关于binding.gyp文件的语法规则还是说的不明确 ...

  4. npm安装指定版本

    今天犯了一个低级错误,在npm安装依赖时,命令写成下了格式 npm i --save iview 2.0.0 要安装指定版本应该使用 npm i --save iview@2.0.0 谨记

  5. 安装配置postgreSQL+pgcli+pgadmin3

    记录了postgreSQL数据库的完整的安装配置过程,以及postgreSQL的pgcli命令行智能提醒扩展,pgadmin3图形化管理客户端的配置安装.此postgresql是bigsql版安装详情 ...

  6. 64位Navicat Premium-11.2.7(64bit)访问64位Oracle服务器

    1 在windows 10 64位操作系统安装Navicat Premium-11.2.7(64bit). 2 在服务器安装64位的Oracle(win64_11gR2_database). 3 在h ...

  7. layui分页

    毕业已经两年,期间经历了很多.一个人欢笑与哭泣,在墙角.在路边.在床上.每天搭乘首班车来到公司,每天无数次反省自己,每天每天再问自己为什么活着. 一.下载并引用css和js 地址:点我 <lin ...

  8. PHP | 别家网站都有的登录功能,你的网站也可以有!

    如果说一个网站是一个独立的王国,那登录功能就相当于这个[王国]的大门.进出往来的人必须要通过这道[门]才能进出这个[王国],这样才能有效的达到对人流量和用户的有效监管,也可以进一步了解每个用户的喜好, ...

  9. 错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息

    错误: 安装必备组件失败: 安装必备组件失败: SqlInstanceRtc 有关详细信息 查看错误得知是安装sqlexpr_x64.exe的时候出现了错误 解决: 通过打开skype镜像,找到sql ...

  10. QT的QPropertyAnimation讲解

    m_pAnimation->setEasingCurve(QEasingCurve::Linear); //直线风格 m_pAnimation->setLoopCount(-1); //无 ...