一、Zookeeper理解与选举机制

①Zookeeper理解

概念:Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题

特点:Zookeeper 本质上是一个分布式文件系统, 适合存放小文件,也可以理解为一个数据库。

Zookeeper 中存储的其实是一个又一个 Znode, Znode 是 Zookeeper 中的节点。

Znode 是有路径的, 例如 /data/host1 , /data/host2 , 这个路径也可以理解为是Znode 的 Name

Znode 也可以携带数据, 例如说某个 Znode 的路径是 /data/host1 , 其值是一个字符串 "192.168.0.1"

正因为 Znode 的特性, 所以 Zookeeper 可以对外提供出一个类似于文件系统的试图, 可以
通过操作文件系统的方式操作 Zookeeper

  • 使用路径获取 Znode
  • 获取 Znode 携带的数据
  • 修改 Znode 携带的数据
  • 删除 Znode
  • 添加 Znode

②Zookeeper架构

Zookeeper集群是一个基于主从架构的高可用集群

每个服务器承担如下三种角色中的一种
1.Leader 一个Zookeeper集群同一时间只会有一个实际工作的Leader,它会发起并维护与各
Follwer及Observer间的心跳。所有的写操作必须要通过Leader完成再由Leader将写操作广
播给其它服务器。
2.Follower 一个Zookeeper集群可能同时存在多个Follower,它会响应Leader的心跳。
Follower可直接处理并返回客户端的读请求,同时会将写请求转发给Leader处理,并且负
责在Leader处理写请求时对请求进行投票。
3.Observer 角色与Follower类似,但是无投票权。

③Zookeeper的选举机制

1.服务器启动时期的Leader选举

进行leader选举至少两台机器,一般都为奇数个机器,选举过程如下:

①每个Server发起投票

②接收来自各个服务器的投票

③处理投票:

  • 优先检查ZXID。ZXID比较大的服务器优先作为Leader。
  • 如果ZXID相同,那么就比较myid。myid较大的服务器作为Leader服务器。

对于Server1而言,它的投票是(1, 0),接收Server2的投票为(2, 0),首先会比较两者的
ZXID,均为0,再比较myid,此时Server2的myid最大,于是更新自己的投票为(2, 0),然后重
新投票,对于Server2而言,其无须更新自己的投票,只是再次向集群中所有机器发出上一次
投票信息即可。

统计投票。

每次投票后,服务器都会统计投票信息,判断是否已经有过半机器接受到相同的投票信息,对于Server1、Server2而言,都统计出集群中已经有两台机器接受了(2, 0)的投票信息,此时便认为已经选出Leader。

⑤改变服务器状态

二、Zookeeper的Shell 客户端操作

首先进入shell客户端,有两种方式:

①在bin文件夹下:zkCli.sh -server hadoop101:2181

②在bin文件夹下:zkCli.sh

正式操作:

列出path下的所有Znode

ls /

创建永久结点

create /hello world

/hello为路径  world为携带的数据

创建临时节点

create -e /tmp world

永久节点不会随会话结束而消失,而临时节点会随着会话结束而消失

我们结束会话后,再次进入发现tmp目录已经消失了

创建永久序列化节点

create -s /hello2 world

创建临时序列化节点

create -e -s /tmp world

创建子节点(注意:只能给永久性节点创造子节点,临时性节点不可创造子节点)

create /hello/aaa world

修改节点数据

set /hello xxx

删除节点,如果要删除的节点有子节点,则不能删除

delete /hello

删除节点,即使有子节点也可删除

rmr /hello2

列出历史记录

history

Zookeeper学习(一)的更多相关文章

  1. zookeeper学习(上)

    zookeeper学习(上) 在前面的文章里我多次提到zookeeper对于分布式系统开发的重要性,因此对zookeeper的学习是非常必要的.本篇博文主要是讲解zookeeper的安装和zookee ...

  2. ZooKeeper 学习笔记

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

  3. 【分布式】ZooKeeper学习之一:安装及命令行使用

    ZooKeeper学习之一:安装及命令行使用 一直都想着好好学一学分布式系统,但是这拖延症晚期也是没得治了,所以干脆强迫自己来写一个系列博客,从zk的安装使用.客户端调用.涉及到的分布式原理.选举过程 ...

  4. [转]ZooKeeper学习第一期---Zookeeper简单介绍

    ZooKeeper学习第一期---Zookeeper简单介绍 http://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKe ...

  5. zookeeper 学习资料

    zookeeper 学习资料 学习资料 网址 Zookeeper 教程(菜鸟教程) https://www.w3cschool.cn/zookeeper/

  6. Zookeeper学习文章目录1

    目录:参考文章如下 1.ZooKeeper学习第一期---Zookeeper简单介绍 2. ZooKeeper学习第二期--ZooKeeper安装配置 3. ZooKeeper学习第三期---Zook ...

  7. zookeeper学习(零)_安装与启动

    zookeeper学习(零)_安装与启动 最近换了新的电脑,终于买了梦寐以求的macbook.最近也换了新的公司,公司技术栈用到了zookeeper.当然自己也要安装学习下.省的渣渣的我,被鄙视就麻烦 ...

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

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

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

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

  10. Zookeeper学习笔记(下)

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

随机推荐

  1. Android 性能优化 ---- 启动优化

    Android 性能优化 ---- 启动优化 1.为什么要进行启动优化 一款应用的第一印象很重要,第一印象往往决定了用户的去留.打开一款应用,如果速度很快,很顺畅,那么很容易让人觉得这款应用背后的技术 ...

  2. java 正则提取字符串中的电话号码

    public static void test2() { String str = "张三:13539558064,李四:15626829748,赵六:13718952204"; ...

  3. Ethical Hacking - GAINING ACCESS(20)

    CLIENT SIDE ATTACKS - Spoofing backdoor extension Change the extension of the trojan from exe to a s ...

  4. 【C#】根据开始时间和结束时间筛选存在的信息

    背景 业务需求中,需要根绝开始时间和结束时间筛选一段时间内的任务存在个数. 示例图片 根据开始时间 9:00到 结束时间11:00 筛选信息 总共有这么四种情况可能出现 插入测试数据 CREATE T ...

  5. 设计模式:composite模式

    目的:使容器和内容具备一致性 实现:将对象组合成树形结构以表示“部分-整体”的层次结构 实例:文件夹中可以包含文件夹也可以包含文件 例子: class Item //接口定义 { public: vi ...

  6. .net core options 依赖注入的方式

    options 依赖注入的方式 public class JwtSettingsOptions { public const string JwtSettings = "JwtSetting ...

  7. RACTF-web C0llide?(js弱类型)

    源码: const bodyParser = require("body-parser") const express = require("express") ...

  8. raw目录的位置是D:\android_projects\qrscan\app\src\main\res\raw

    D:\android_projects\qrscan\app\src\main\res\raw 这里可以放数据库文件和音频文件 文件名为sp.mp3 引用方法: MediaPlayer mp = Me ...

  9. Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码

    功能介绍 客户端给所有在线用户发送消息 客户端给指定在线用户发送消息 服务器给客户端发送消息(轮询方式) 项目搭建 项目结构图 pom.xml <?xml version="1.0&q ...

  10. luogu P4525 自适应辛普森法1

    LINK:自适应辛普森法1 观察题目 这个东西 凭借我们的数学知识应该是化简不了的. 可以直接认为是一个函数 求定积分直接使用辛普森就行辣. 一种写法: double a,b,c,d; double ...