参考:从Paxos到Zookeeper分布式一致性原理与实践

从ACID到CAP/BASE

ACID

事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。

事务的特性

Atomicity(原子性)

事务中包含的一组操作要么全部成功执行,要么全部不执行

Consistency(一致性)

事务执行前后处于一致性状态

Isolation(隔离性)

并发环境中事物之间不能相互影响

[四个隔离级别]


读未提交

事务B可以读到事务A在没有提交时对数据的操作,出现脏读

读已提交

事务B可以读到事务A,C提交的数据,即:一个事务内读到的数据不一致,出现不可重复读

可重复读

事务B只能读到事务开始时刻的值V_b1,当新起一个事务B_2,读到的是V_b2可能和V_b1不一样,出现幻读

串行化

事务B在其他事务结束前不能执行。

持久性

一旦事务提交成功,它对数据库中对应数据状态的变更就永久保存。

CAP理论

一个分布式系统不可能同时满足Consistency(一致性),Availability(可用性),Partition tolerance(分区容错),最多只能满足其中两个。

Consistency(一致性)

数据在多个副本之间保持一致。
如果某个数据后,所有用户都可以读到最新值,就认为具有强一致性。

Availability(可用性)

对于用户的每一个请求都会在有限时间内返回结果。

Partition tolerance(分区容错)

分布式系统在遇到任何网络分区故障后,仍然可以提供一致性和可用性服务。

既然分布式系统必须要有P,那么只能在A,C之间寻求平衡。

BASE理论

Basically Available(基本可用),Soft stat(软状态), Eventually consistent(最终一致性).
BASE是对CAP中C好A的权衡的结果,核心思想是即使无法做到强一致性,但是每个应用可以根据自身的特点,采取适当的方式达到最终一致性.

Basically Available(基本可用)

延长响应时间和部分服务降级.

Soft stat(软状态)

比如:除支付成功,支付失败,还有支付中(中间状态)

Eventually consistent(最终一致性)

各个副本数据最终同步

Zookeeper学习笔记1的更多相关文章

  1. ZooKeeper 学习笔记

    ZooKeeper学习笔记 1.   zookeeper基本概念 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和Habase的重要组件,是为分布式应用提供一致性服 ...

  2. ZooKeeper学习笔记(二)——内部原理

    zookeeper学习笔记(二)--内部原理 1. zookeeper的节点的类型 总的来说可以分为持久型和短暂型,主要区别如下: 持久:客户端与服务器端断开连接的以后,创建的节点不会被删除: 持久化 ...

  3. ZooKeeper学习笔记(一)——概述

    zookeeper学习笔记(一)--概述 1. 概述 Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目.zookeeper从设计模式的角度来理解:是一个基于观察者设计 ...

  4. Zookeeper学习笔记(中)

    Zookeeper学习笔记(中) Zookeeper的基本原理和基本实现 深入了解ZK的基本原理 ZK的一致性: ZAB 协议: Zookeeper 原子消息广播协议 ZK通过选举保证 leader ...

  5. Zookeeper学习笔记(上)

    Zookeeper学习笔记 本篇主要是一些基本的介绍和API的使用介绍, 有些只是记录了知识点,而没有完全在笔记中详细解释, 需要自行查找资料补充相关概念 主要参考了课程中的内容: Zookeeper ...

  6. ZooKeeper学习笔记一:集群搭建

    作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...

  7. ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心

    作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...

  8. ZooKeeper学习笔记二:API基本使用

    Grey ZooKeeper学习笔记二:API基本使用 准备工作 搭建一个zk集群,参考ZooKeeper学习笔记一:集群搭建. 确保项目可以访问集群的每个节点 新建一个基于jdk1.8的maven项 ...

  9. ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁

    作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...

  10. Zookeeper学习笔记(下)

    这是ZK学习笔记的下篇, 主要希望可以分享一些 ZK 的应用以及其应用原理 我本人的学习告一段落, 不过还遗留了一些ZK相关的任务开发和性能测试的任务, 留待以后完成之后再通过其他文章来进行分享了 Z ...

随机推荐

  1. div设置overflow-scroll滚动之后,jq获取其子元素的offset.top出现问题。

    先上个图: 布局很简单,左右超过屏幕的部分自行滚动. 1. html <div class="ce-container"> <div class="ce ...

  2. Vue.js 循环语句

    循环使用 v-for 指令. v-for 指令需要以 site in sites 形式的特殊语法, sites 是源数据数组并且 site 是数组元素迭代的别名. v-for 指令: v-for 可以 ...

  3. Python的常用语句

    判断语句 if单层条件判断 if expression: statements1 else: statements2 if多层条件判断 if expression1: statements1 elif ...

  4. sqlserver修改计算机名称。

    SELECT @@SERVERNAME As [@@SERVERNAME], CAST(SERVERPROPERTY('MACHINENAME') AS VARCHAR(128)) + COALESC ...

  5. KMP算法的next[]数组 的求法

    例如: next数组的求解方法是:第一位的next值为0,第二位的next值为1,后面求解每一位的next值时,根据前一位进行比较.首先将前一位与其next值对应的内容进行比较,如果相等,则该位的ne ...

  6. CSS-Naming-Conventions--BEM

    BEM BEM : Block Element Modifier There are only two hard problems in Computer Sciences:cache invalid ...

  7. yum 安装时错误 Errno 14 Couldn't resolve host 解决办法

    后来网上查了一下说是DNS服务器错误.于是修改一下 /etc/resolv.conf 添加一个nameserver 8.8.8.8完成

  8. Consul 域名服务

    =============================Web请求的全过程(包含DNS) =============================完整过程参考 https://blog.csdn. ...

  9. HanLP用户自定义词典源码分析

    HanLP用户自定义词典源码分析 1. 官方文档及参考链接 关于词典问题Issue,首先参考:FAQ 自定义词典其实是基于规则的分词,它的用法参考这个issue 如果有些数量词.字母词需要分词,可参考 ...

  10. MySQL Out-of-Band 攻击

    概述 当涉及到MSSQL与Oracle时,Out-of-Band 注入是非常好的方式.但我注意到MySQL注入的情况并非如此,于是我准备以自己在SQL注入方面的经验做相关的研究.我们可以利用诸如loa ...