zoukankan      html  css  js  c++  java
  • 一致性模型(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   

  • 相关阅读:
    web.xml配置详解
    javascript实现的网页打印
    C#实现新建文件并写入内容
    nodeJs学习过程之认识nodejs
    windows下nodejs与coffeeScript环境搭建
    javascript/css压缩工具---yuicompressor使用方法
    verilog描述表决器的两种方式简易分析
    verilog阻塞与非阻塞的初步理解(二)
    verilog阻塞与非阻塞的初步理解(一)
    FIFO学习心得
  • 原文地址:https://www.cnblogs.com/linghuchong0605/p/4115022.html
Copyright © 2011-2022 走看看