一、概述

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. xshell连接中标麒麟

    中标麒麟: 1.首先肯定需要给虚拟机配置静态ip,让虚拟机作为独立的ip存在 https://www.cnblogs.com/judes/p/11776872.html 2.输入rpm -qa | g ...

  2. Vue学习笔记十:过滤器

    目录 公共过滤器的写法 简易过滤器+带参数过滤器+多过滤器 私有过滤器 公共过滤器的写法 过滤器的写法还是很简单的 ,如下 <p>{{ msg | filtermsg }}</p&g ...

  3. 图解 perspective && perspective-origin && transform3d && transform-origin

    perspective && perspective-origin perspective是物体相对于画布的视距距离 perspective-origin是物体在画布位置的中心视点 t ...

  4. Nginx配置文件的反向代理

    问题描述:项目需要预览pdf,前端控件支持的格式是http://192.168.0.1/pdf/a.pdf  是这样的,然后我就想给路径配个nginx反向代理就好了,但是配置的时候出问题了. 1.正确 ...

  5. android基础---->Parcelable的使用

     android中Parcelable序列化的使用,简单的记录一下. 目录导航: Serializable在android中的使用 Parcelable在android中的使用 Serializabl ...

  6. axios.js 在测试机ios7.1的iphone4中不能发送http请求解决方案

    原因:axios使用promise语法,浏览器不支持该语法 解决思路:使浏览器支持promise语法 具体代码: 安装es6-promise,npm i es6-promise -D. 在引入axio ...

  7. spark源码阅读 RDDs

    RDDs弹性分布式数据集 spark就是实现了RDDs编程模型的集群计算平台.有很多RDDs的介绍,这里就不仔细说了,这儿主要看源码. abstract class RDD[T: ClassTag]( ...

  8. 帮你培养类型思维TypeScript(一)

    前言:作为一名程序员,相信你已经熟练掌握了JavaScript语言,由于其应用领域非常的广泛,所以算得上是每一个程序员必须要掌握的语言.但是JavaScript自身的缺点,相信每一个程序员也是深有体会 ...

  9. shrio学习笔记

    Thymeleaf扩展坐标 <!--thyemleaf对shrio的扩展坐标--> <dependency> <groupId>com.github.thebora ...

  10. [转帖]oracle补丁类型

    oracle补丁类型 https://www.cnblogs.com/liang545621/p/9417919.html 介绍挺好的 跟现在的也比较类似呢.   名称 说明 Release ¤ 标准 ...