作为开启分布式架构的基石,除了必会还有的选么

自己的一些理解,有错误的话请一定要给予指正!

一、是什么?

分布式数据一致性的解决方案。

二、有什么用

数据的发布/订阅(配置中心)  、 负载均衡(dubbo利用了zookeeper机制实现负载均衡) 、命名服务、

master选举(kafka、hadoop、hbase)、分布式队列、分布式锁。

zookeeper入门知识

1.CAP理论和BASE理论

参考文献: http://www.jdon.com/bigdata/how-to-understand-cap.html

 分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:
● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
● 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。分区容错性主要是考虑到网络故障时系统的处理.
关于CA冲突的理解:C 要求备份完才返回,保证数据一致(有故障则失败),而A不考虑数据同步的情况,会导致数据出现脏数据
base理论是在cap理论上升级,ba 表示基本可用, s表示soft-state,指的是  在基于client-server模式的系统中,server端有状态,即可以知道当前节点的同步情况.e指的是最终一致性(最终同步)
2.zookeeper的数据模型
树形结构 znode(节点),可被监听,且名字同级唯一,
节点类型分为:
 PERSISTENT(持久节点,服务断开任然存在)
PERSISTENT_SEQUENTIAL(例如:持久序列/test0000000019 即有序持久节点)
EPHEMERAL(临时节点,服务断开,节点消失)
EPHEMERAL_SEQUENTIAL(临时有序节点)
3.zookeeper 特性
3.1 顺序一致性,

从同一个客户端发起的事务请求(增删改),最终会严格按照顺序被应用到zookeeper中(队列,fifo)

3,2原子性

所有的事务请求的处理结果在整个集群中的所有机器上的应用情况是一致的,也就是说,要么整个集群中的所有机器都成功应用了某一事务、

要么全都不应用

3.3可靠些

一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留下来的

3.4实时性

一旦一个事务被成功应用,客户端就能够立即从服务器端读取到事务变更后的最新数据状态;(zookeeper仅仅保证在一定时间内,近实时)

 4.zab协议(角色,Paxos算法,选主过程)

参考文献:http://blog.jobbole.com/104985/

这一块恐怕要理解起来不是那么简单(源码级别)

zab主要是消息广播和崩溃恢复...

.zookeeper 中的observe角色

这个比较特殊:https://blog.csdn.net/mayp1/article/details/52026797/

事务:对数据源进行了改变

observe用来提高系统读取的吞吐量,不参与事务(增删改)以及投票.

这也很正常,如果leader是皇帝,observe顶多算个监国,只能处理日常事情,不然岂不是比leader权利还大.(代码即人生).

 
 

zookeeper 入门知识的更多相关文章

  1. zookeeper入门知识

    ZooKeeper 是什么? ZooKeeper 顾名思义 动物园管理员,他是拿来管大象(Hadoop) . 蜜蜂(Hive) .小猪(Pig)  的管理员, Apache Hbase和 Apache ...

  2. [置顶] Mysql存储过程入门知识

    Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...

  3. 移动H5开发入门知识,CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  4. H5移动端开发入门知识以及CSS的单位汇总与用法

    说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...

  5. Java web 入门知识 及HTTP协议详解

     Java  web  入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...

  6. Java基础入门知识

    Java编程入门知识   知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...

  7. zabbix入门知识

    zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...

  8. 分布式进阶(十六)Zookeeper入门基础

    Zookeeper入门基础 前言 在Zookeeper中,znode是一个跟Unix文件系统路径相似的节点,可以往这个节点存储或获取数据.如果在创建znode时Flag设置为EPHEMERAL,那么当 ...

  9. React的入门知识与概念【1】

    回顾在以往的项目开发中,从最初的使用的原生html+js+css+jquery开发,到后来随着项目功能的增加,也渐渐学习了Vue.js框架的开发,以及Vue.js的全家桶Axios,Vue-route ...

随机推荐

  1. [转][C#]降级.net 源码4.5

    来自:https://www.cnblogs.com/had37210/p/8057042.html 主要是 Task 的降级: 1.net4.5.2 引入了 async/await 关键字. 这个其 ...

  2. 廖雪峰Java2面向对象编程-1面向对象-1面向对象基础

    1.对象的概念 面向对象编程:Object-Oriented Programming 对现实世界建立计算机模型的一种编程方法. 现实世界 计算机模型 Java代码 人 类/class class Pe ...

  3. UML类关系:依赖、关联、聚合、组合

    1,依赖关系(Dependency) 单向,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类,是一种“use a”关系 如果A依赖于B,则B表现为A的局部变量,方法参数,静态方法调用等 ...

  4. RabbitMQ入门教程(十):队列声明queueDeclare(转载)

    原文转载至:https://blog.csdn.net/vbirdbest/article/details/78670550 简介本节主要讨论队列声明的各个参数 queueDeclare(String ...

  5. jqgrid使用(1)生成表格

    1.引入js,css 2,基本配置 function init() { $("#list1").jqGrid({ url: "../Listing.ashx", ...

  6. scipy构建稀疏矩阵

    from scipy.sparse import csr_matrix import numpy as np indptr = np.array([0, 2, 3, 6]) indices = np. ...

  7. lock和Monitor(锁对象)

    Monitor对象 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中为了避免获取 ...

  8. HADOOP+SPARK+ZOOKEEPER+HBASE+HIVE集群搭建(转)

    原文地址:https://www.cnblogs.com/hanzhi/articles/8794984.html 目录 引言 目录 一环境选择 1集群机器安装图 2配置说明 3下载地址 二集群的相关 ...

  9. 电商系统架构总结3(webapi授权机制)

    三 Web API 授权方式 web api的客户端,包括 android,ios,h5,自然对访问权限要加上授权机制.对于h5,要求把h5站点和web api部署在同一个域名下,然后对web api ...

  10. ubuntu 16.04在真实机安装后的静态ip的配置

    nssa-sensor1@nssa-sensor1:~$ vim /etc/network/interfaces 以下是编辑文件的内容# interfaces(5) file used by ifup ...