一、概述

1.1 简介

  Zookeeper是一个分布式开源框架(Java语言编写开源框架),是一个分布式协调工具,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务 ,分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

  • 1、Zookeeper是为别的分布式程序服务的
  • 2、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
  • 3、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务等
  • 4、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
    • 管理(存储,读取)用户程序提交的数据(类似namenode中存放的metadata);
    • 并为用户程序提供数据节点监听服务;

1.2 Zookeeper集群机制

  Zookeeper集群的角色: Leader 和 follower
只要集群中有半数以上节点存活,集群就能提供服务

1.3 Zookeeper特性

  • 1、Zookeeper:一个leader,多个follower组成的集群
  • 2、全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的
  • 3、分布式读写,更新请求转发,由leader实施
  • 4、更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行
  • 5、数据更新原子性,一次数据更新要么成功,要么失败
  • 6、实时性,在一定时间范围内,client能读到最新数据

二、Zookeeper应用场景

  1. 命名服务(注册中心) Dubbo注册中心
  2. 分布式配置中心(SpringCloud config. )动态管理配置文件信息
  3. 消息中间件事件通知(类似与发布订阅功能)
  4. Zookeeper分布式事务( 全局协调者)
  5. Zookeeper实现分布式锁,
  6. Zookeeper可以实现选举策略(哨 兵机制)
  7. Zookeeper实现本地动态负载均衡(Dubbo服 务负载均衡原理)
  8. 消息中间集群管理(Zookeeper )

  • 注册中心都是集群版本Consul、Eureka、 Zookeeper 、Redis
  • 分布式系统核心在于服务治理

【Zookeeper】应用场景概述

三、Zookeeper数据结构


Zookeeper数据结构
  • 1、层次化的目录结构,命名符合常规文件系统规范(类似文件系统)
  • 2、每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识
  • 3、节点Znode可以包含数据和子节点(但是EPHEMERAL类型的节点不能有子节点)
    节点类型:

    • a、Znode有两种类型:

      • 短暂(ephemeral)(create -e /app1/test1 “test1” 客户端断开连接zk删除ephemeral类型节点)
      • 持久(persistent) (create -s /app1/test2 “test2” 客户端断开连接zk不删除persistent类型节点)
    • b、Znode有四种形式的目录节点(默认是persistent )
      • PERSISTENT
      • PERSISTENT_SEQUENTIAL(持久序列/test0000000019 )
      • EPHEMERAL
      • EPHEMERAL_SEQUENTIAL
    • c、创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增的计数器,由父节点维护
    • d、在分布式系统中,顺序号可以被用于为所有的事件进行全局排序,这样客户端可以通过顺序号推断事件的顺序


    Zookeeper结构

四、Zookeeper安装

【Zookerper】 安装开启

五、Java操作Zookeeper

【Zookeeper】 在Java中的操作

六、Zookeeper实现负载均衡

【Zookeeper】实现负载均衡原理

七、Zookeeper 分布式锁

【Zookeeper】分布式锁

八、Zookeeper实现服务Master选举策略(哨兵机制)

【Zookeeper】实现哨兵机制(选举策略)

九、Zookeeper 集群搭建

【Zookeeper】集群环境搭建

【Zookeeper】基础学习概览【汇总】的更多相关文章

  1. 【Nginx】基础学习概览【汇总】

    一.Nginx 简介安装启动 二.Nginx的应用场景 三.Nginx中的配置命令 四.实现动态负载均衡 五.四层负载均衡 六.主从热备 七.动静分离 一.Nginx 简介安装启动 [Nginx]简介 ...

  2. 【Redis】基础学习概览【汇总】

    一.概述 1.1 简介 1.2 Redis单线程好处 1.3 单线程弊端 1.4 Redis应用场景 二.安装.开启以及关闭 三.Redis基本数据类型 四.SpringBoot整合Redis 五.R ...

  3. zookeeper基础学习-简介

    1.zookeeper的使命 zookeeper可以在分布式系统的协作多个任务(一个任务是指一个包含多个进程的任务),这个任务可以是为了协作或者是为了管理竞争. 协作:多个进程需要一同处理某些事情,一 ...

  4. 零基础学习openstack【完整中级篇】及openstack资源汇总

    1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事 ...

  5. 关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL))

    关于图计算&图学习的基础知识概览:前置知识点学习(Paddle Graph Learning (PGL)) 欢迎fork本项目原始链接:关于图计算&图学习的基础知识概览:前置知识点学习 ...

  6. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  7. 如何从零基础学习VR

    转载请声明转载地址:http://www.cnblogs.com/Rodolfo/,违者必究. 近期很多搞技术的朋友问我,如何步入VR的圈子?如何从零基础系统性的学习VR技术? 本人将于2017年1月 ...

  8. 【转】iOS超全开源框架、项目和学习资料汇总

    iOS超全开源框架.项目和学习资料汇总(1)UI篇iOS超全开源框架.项目和学习资料汇总(2)动画篇iOS超全开源框架.项目和学习资料汇总(3)网络和Model篇iOS超全开源框架.项目和学习资料汇总 ...

  9. d3可视化实战00:d3的使用心得和学习资料汇总

    最近以来,我使用d3进行我的可视化工具的开发已经3个月了,同时也兼用其他一些图表类库,自我感觉稍微有点心得.之前我也写过相关文章,我涉及的数据可视化的实现技术和工具,但是那篇文章对于项目开发而言太浅了 ...

随机推荐

  1. getField和getDeclaredField的区别

    这两个方法都是用于获取字段getField 只能获取public的,包括从父类继承来的字段.getDeclaredField 可以获取本类所有的字段,包括private的,但是不能获取继承来的字段. ...

  2. Qt编写气体安全管理系统5-数据监控

    一.前言 本项目对设备的监控有四种视图模式,可以任意切换,数据监控.地图监控.设备监控.曲线监控,其中数据监控是最常用的,所以在主界面导航中也排在第一位,综合观察分析了很多气体安全或者组态监控软件,大 ...

  3. Python记录-基础语法入门

    # -*- coding: utf-8 -*- #数字计算 a=1 b=2 print(a+b) print(a*b) print((a+b)/1) #浮点数 print((a+b)//2) ##保留 ...

  4. PAT 甲级 1146 Topological Order (25 分)(拓扑较简单,保存入度数和出度的节点即可)

    1146 Topological Order (25 分)   This is a problem given in the Graduate Entrance Exam in 2018: Which ...

  5. ABAP函数篇2 测试DATE_CONVERT_TO_FACTORYDATE

    DATE_CONVERT_TO_FACTORYDATE   根据日期返回工厂日历日期 函数功能说明: 标出工作日的计算方法 输入传输 CORRECT_OPTION = '+'如果指定的日期不是工作日, ...

  6. LeetCode_387. First Unique Character in a String

    387. First Unique Character in a String Easy Given a string, find the first non-repeating character ...

  7. GNU C之__attribute__

    __attribute__可以设置函数属性(Function Attribute).变量属性(Variable Attribute)和类型属性(Type Attribute) __attribute_ ...

  8. Linux虚拟机的命令分发工具。

    deploy.sh工具的目的是,将一个文件,发送到其他服务器上面去. runRemoteCmd.sh工具的目的是,将一个命令,在多台服务器上执行. depoly.conf是上面两个工具的配置文件. d ...

  9. C-LODOP回调多个返回值On_Return_Remain

    c-lodop默认一次只能回调一个值,回调后会销毁,如果想回调多个值,可加该语句:LODOP.On_Return_Remain=true;之前有博文:lodop和c-lodop通过打印状态和任务不在队 ...

  10. InstallerProjects打包

    C#—使用InstallerProjects打包桌面应用程序   前言 打包桌面应用程序实在是一个不常使用的东西,偶尔使用起来经常会忘东忘西的耽误时间,因此,这篇文章多以图片记录过程,也是用于备忘. ...