参考:从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. python OrderDict

    # encoding: utf-8 import csv import collections d = {'banana':3,'apple':4,'pear':1,'orange':2} print ...

  2. 【.NET】SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间

    #背景 向sqlserver数据库中一个datetime字段插入DateTime.MinValue时, 出现问题: SqlDateTime 溢出.必须介于 1/1/1753 12:00:00 AM 和 ...

  3. python mysql索引 优化神器explain 慢查询

    ##############总结########## 数据库中专门帮助用户快速找到数据的一种数据结构 类似于字典的目录的索引 索引的作用:约束和加速查找 工作原理: b+树形结构 最上层是树根,中间是 ...

  4. Sublime Text 3 Mac常用快捷键与注意事项

    大多数情况下容易忘记的快捷键,在此整理了一下. 编辑快捷键:cmd+L:选择行(重复按下将下一行加入选择):cmd+D:选择词(重复按下时多重选择相同的词进行多重编辑):cmd+shift+D 复制光 ...

  5. 【leetcode-89 动态规划】 格雷编码

    ( 中等难度题(×) -背答案题(√) ) 格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异. 给定一个代表编码总位数的非负整数 n,打印其格雷编码序列.格雷编码序列必须以 ...

  6. 自己制作redis 和mongo 镜像

    root@docker-lab:~/redis# ll total drwxr-xr-x root root Feb : ./ drwx------ root root Feb : ../ -rw-r ...

  7. 016、Dockerfile 常用命令(2019-01-07 周一)

    参考https://www.cnblogs.com/CloudMan6/p/6864000.html   Dokcerfile常见命令   FROM     指定base镜像   MAINTAINER ...

  8. Android手机有的不显示Toast

    解决办法一: 在手机中把该app的通知打开 可以直接设置通知权限:<uses-permission android:name="android.permission.RECEIVE_B ...

  9. weui hd bd ft

    weui样式看到hd ,bd, ft hd 是header的缩写 bd 是body的缩写 ft 是footer的缩写

  10. 用EditPlus和jdk写Java代码

    一.安装EditPlus EditPlus: https://www.editplus.com/latest4.html EditPlus注册码在线生成: https://www.jb51.net/t ...