参考:从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. mysql视图、触发事务、存储过程

    视图 视图是一个虚拟表(非真实存在的),其本质就是根据SQL语言获取动态的数据集,并为其命名,用户使用时只需要使用名称即可获得结果集,可以将结果集当做表来使用. 视图是存在数据库中的,如果我们程序中使 ...

  2. Mac 软件专题:教学参考工具软件-外语/医学/天文/地理/数学等

    今天和大家分享mac软件专题:教学参考工具软件,在这个专题中,主要向大家推荐一些Mac上优秀的教育教学.知识参考类的软件,包含外语.医学.天文.地址.数学.音乐等方面,学生.老师以及相关的工作者不要错 ...

  3. mybatis_异常

    1.HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.binding.Binding ...

  4. Servlet_问题总结

    1.Servlet转发到JSP后页面的CSS样式丢失,页面布局混乱,原来能点的链接现在失效 原因:原来前台页面(JSP|HTML)在引用静态资源(CSS|JS|JSP页面)时使用的是相对路径, 导致由 ...

  5. SpringBoot笔记十三:引入webjar资源和国际化处理

    目录 什么是webjar 怎么使用webjar 国际化 新建国际化配置文件 配置配置文件 使用配置文件 我们先来看一个html,带有css的,我们就以这个为准来讲解. 资源可以去我网盘下载 链接:ht ...

  6. [JUC-1]并发包实现及线程状态

    一.Java 并发包实现 二.Java 线程状态转换图

  7. PHP6天基础知识部分

    ---恢复内容开始--- (一).基础(PHP超文本预处理器) 1.PHP标记(2种) 1.<?php?>:大众的用法?和php之间不能有空格否则无效. 2.<??>:小众的用 ...

  8. Golang入门教程(八)复合数据类型使用案例一

    目录 数组 指针 结构体(struct) 一.数组 Go 语言提供了数组类型的数据结构. 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形.字符串或者自定 ...

  9. 转---Python——numpy random类

    numpy中利用random类获取随机数. numpy.random.random() 生成随机浮点数 默认为生成一个随机的浮点数,范围是在0.0~1.0之间,也可以通过参数size设置返回数据的si ...

  10. vue-cli脚手架笔记

    vue不支持IE8,因为vue使用了IE8无法模拟的 ECMAScript 5特性 使用vue-cli脚手架会让我们的工作非常方便 比如想编译一下es6的语法就使用 babel loader 和 ba ...