参考:从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. 关键字(5):cursor游标:(循环操作批量数据)

    declare   cursor stus_cur is select * from students;  --定义游标并且赋值(is 不能和cursor分开使用)    cur_stu studen ...

  2. 剑指Offer_编程题_11

    题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示.   class Solution { public: int NumberOf1(int n) { int size = 3 ...

  3. 面向对象【day08】:异常处理(六)

    本节内容 1.概述 2.异常梳理 3.异常梳理流程图 4.异常大全 5.自定义异常 一.概述 异常处理是当程序出错了,但是我们又不想让用户看到这个错误,而且我在写程序的时候已经预料到了它可以出现这样的 ...

  4. Java测试Junit

    Junit就是做测试用的,想想平常我们是怎么测试我们的方法或者类的,是不是在main方法里面去调用?这样有缺点: 1.每次都要在main方法里面写测试,假如我要上线新系统,里面有1000个方法需要测试 ...

  5. 8种提升ASP.NET Web API性能的方法

    英文原文:8 ways to improve ASP.NET Web API performance ASP.NET Web API 是非常棒的技术.编写 Web API 十分容易,以致于很多开发者没 ...

  6. .net 数据绑定gridview 和Repeater 序号,Container.ItemIndex

    gridview <asp:TemplateColumn HeaderText="编号">    <ItemTemplate>             &l ...

  7. HTML5-语义化标签

    article -- 解释 article标签装载显示一个独立的文章内容.例如一篇完整的论坛帖子,一则网站新闻,一篇博客文章等等,一个用户评论等等 artilce可以嵌套,则内层的artilce对外层 ...

  8. Java时间转换的一个特性

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date codedat ...

  9. Keil5创建GPIO

    软件仿真如下图 Main.c内容 #include "stm32f10x.h" int main(void) { GPIO_InitTypeDef GPIO_InitStructu ...

  10. treap基本操作

    利用rand保持堆的特性 const int N=; int ls[N],rs[N],v[N],p[N],cnt[N],siz[N]; // 权值 优先级 inline void update(int ...