一、概述

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. 全面系统Python3入门+进阶-1-8 Python的前景

    语言的热度. python在开发效率上有优势 大数据.人工智能 结束

  2. 【DataBase】Hsqldb的简单使用

    介绍 HSQLDB是一个开放源代码的JAVA数据库,其具有标准的SQL语法和JAVA接口,它可以自由使用和分发,非常简洁和快速的.具有Server模式,每个程序需要不同的命令来运行. HyperSQL ...

  3. linux安装qt

    1.下载run文件 2../运行 3.修改配置文件 sudo gedit /etc/profile 添加如下: port QTDIR=/home/rainbow/zhuxy/soft/Qt5.9.0/ ...

  4. matlab基本函数find

    一起来学演化计算-matlab基本函数find 觉得有用的话,欢迎一起讨论相互学习~Follow Me 找到非零元素的索引和值 语法 k = find(X) k = find(X)返回一个向量,其中包 ...

  5. 【Leetcode_easy】872. Leaf-Similar Trees

    problem 872. Leaf-Similar Trees 参考 1. Leetcode_easy_872. Leaf-Similar Trees; 完

  6. ELK之7版本Elastic Maps功能介绍

    Elasticsearch 7.0 中还引入了一个新的聚合来处理地理地图图块,允许用户在地图上放大和缩小,而不会改变结果数据的形状,实现更加平滑地缩放 Elastic Maps:使用纳秒精度存储时序数 ...

  7. Ubuntu中Qt Creator无法启动调试

    Ubuntu下安装Qt creator后无法启动调试,报错为Ptrace:Operation not permitted. 产生原因: 在Ubuntu 11.04("Natty Narwha ...

  8. [转帖]nginx基础整理

    nginx基础整理 https://www.cnblogs.com/guigujun/p/6588545.html 目录结构如下: Nginx基础知识 Nginx HTTP服务器的特色及优点 Ngin ...

  9. Java中常用的设计模式代码与理解

    Java中常用的设计模式代码与理解 一.单例模式 1.饿汉式 (太饿了,类加载的时候就创建实例) /** * 饿汉式单例模式 */ public class HungrySingleInstance ...

  10. java微服务的统一配置中心

    为了更好的管理应用的配置,也为了不用每次更改配置都重启应用,我们可以使用配置中心 关于eureka的服务注册和rabbitMQ的安装使用(自动更新配置需要用到rabbitMQ)这里不赘述,只关注配置中 ...