• 一致性模型(consistency model)


    比如下面的例子:

    • 一行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   

  • 相关阅读:
    MySql基础教程(三)——查询训练
    MySql基础教程(二)
    MySql基础教程(一)
    解决Eclipse闪退问题的方法总结
    MySQL图形工具 MySQL GUI Tools的安装使用方法
    MySql5.6版修改用户登录密码
    Windows下MySQL解压版的配置
    js 数组容易弄混的那些方法
    如何使CSS--better(系列二)
    如何使CSS--better(系列一)
  • 原文地址:https://www.cnblogs.com/linghuchong0605/p/4115022.html
Copyright © 2020-2023  润新知