2019独角兽企业重金招聘Python工程师标准>>>

1、Zookeeper介绍

ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现如下功能:

数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

2、集群中的角色

在zookeeper中有三种角色:

Leader,follower,Observer

一个 ZooKeeper 集群同一时刻只会有一个 Leader,其他都是 Follower 或 Observer。

ZooKeeper 配置很简单,每个节点的配置文件(zoo.cfg)都是一样的,只有 myid 文件不一样。myid 的值必须是 zoo.cfg中server.{数值} 的{数值}部分。

ZooKeeper在装有 ZooKeeper 的机器的终端执行 zookeeper-server status 可以看当前节点的 ZooKeeper 是什么角色(Leader or Follower)。

ZooKeeper 默认只有 Leader 和 Follower 两种角色,没有 Observer 角色。为了使用 Observer 模式,在任何想变成Observer的节点的配置文件中加入:peerType=observer 并在所有 server 的配置文件中,配置成 observer 模式的 server 的那行配置追加 :observer,例如:

server.1:192.168.137.12:2888:3888:observer

ZooKeeper 集群的所有机器通过一个 Leader 选举过程来选定一台被称为『Leader』的机器,Leader服务器为客户端提供读和写服务。

Follower 和 Observer 都能提供读服务,不能提供写服务。两者唯一的区别在于,Observer 机器不参与 Leader 选举过程,也不参与写操作的『过半写成功』策略,因此 Observer 可以在不影响写性能的情况下提升集群的读性能。

3、会话(session

Session 是指客户端会话,在讲解客户端会话之前,我们先来了解下客户端连接。在 ZooKeeper 中,一个客户端连接是指客户端和 ZooKeeper 服务器之间的TCP长连接。

ZooKeeper 对外的服务端口默认是2181,客户端启动时,首先会与服务器建立一个TCP连接,从第一次连接建立开始,客户端会话的生命周期也开始了,通过这个连接,客户端能够通过心跳检测和服务器保持有效的会话,也能够向 ZooKeeper 服务器发送请求并接受响应,同时还能通过该连接接收来自服务器的 Watch 事件通知。

Session 的 SessionTimeout 值用来设置一个客户端会话的超时时间。当由于服务器压力太大、网络故障或是客户端主动断开连接等各种原因导致客户端连接断开时,只要在 SessionTimeout 规定的时间内能够重新连接上集群中任意一台服务器,那么之前创建的会话仍然有效。

4、数据节点

在分布式中,一般“节点”指的是组成集群的每一台机器。而ZooKeeper 中的数据节点是指数据模型中的数据单元,称为 ZNode。ZooKeeper 将所有数据存储在内存中,数据模型是一棵树(ZNode Tree),由斜杠(/)进行分割的路径,就是一个ZNode,如 /hbase/master,其中 hbase 和 master 都是 ZNode。每个 ZNode 上都会保存自己的数据内容,同时会保存一系列属性信息。

Zookeeper的数据节点分为:持久节点、临时节点

5、Zookeeper的事务操作

在ZooKeeper中,能改变ZooKeeper服务器状态的操作称为事务操作。一般包括数据节点创建与删除、数据内容更新和客户端会话创建与失效等操作。对应每一个事务请求,ZooKeeper 都会为其分配一个全局唯一的事务ID,用 ZXID 表示,通常是一个64位的数字。每一个 ZXID 对应一次更新操作,从这些 ZXID 中可以间接地识别出 ZooKeeper 处理这些事务操作请求的全局顺序。

6、Watcher事务监听器

Watcher(事件监听器),是 ZooKeeper 中一个很重要的特性。ZooKeeper允许用户在指定节点上注册一些 Watcher,并且在一些特定事件触发的时候,ZooKeeper 服务端会将事件通知到感兴趣的客户端上去。该机制是 ZooKeeper 实现分布式协调服务的重要特性。

7、ACL

ZooKeeper 采用 ACL(Access Control Lists)策略来进行权限控制。ZooKeeper 定义了如下5种权限。

CREATE: 创建子节点的权限。

READ: 获取节点数据和子节点列表的权限。

WRITE:更新节点数据的权限。

DELETE: 删除子节点的权限。

ADMIN: 设置节点ACL的权限。

其中:CREATE 和 DELETE 都是针对子节点的权限控制。

转载于:https://my.oschina.net/demons99/blog/1928405

Zookeeper的一些概念相关推荐

  1. 大白话带你认识 ZooKeeper !重要概念一网打尽!

    大家好,我是 「后端技术进阶」 作者,一个热爱技术的少年. 文章目录 1. 前言 2. ZooKeeper 介绍 2.1. ZooKeeper 由来 2.2. ZooKeeper 概览 2.3. Zo ...

  2. ZooKeeper简介和概念知识

    1. 简介 ZooKeeper是一种分布式协调服务,用于管理大型主机.在分布式环境中协调和管理服务是一个复杂的过程. ZooKeeper通过其简单的架构和API解决了这个问题.ZooKeeper允许开 ...

  3. zookeeper 负载均衡 概念笔记

    (一)http://blog.csdn.net/zhangyu_ad/article/details/68942158 负载均衡(Load Balance)是分布式系统架构设计中必须考虑的因素之一,它 ...

  4. zookeeper和并发概念

    1.高并发问题是怎么解决的 1. 数据层 a.集群 b.分表分库 c. 开启索引 d. 开启缓存 e. 表设计优化 f.Sql语句优化 g. 缓存服务器(提高查询效率,减轻数据库压力) h. 搜索服务 ...

  5. 可能是全网把 ZooKeeper 概念讲的最清楚的一篇文章

    前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲  ZooKeeper 是个什么东西,你能回答到什么地步呢? 我本人 ...

  6. 2021年大数据ZooKeeper(六):ZooKeeper选举机制

    目录 ​​​​​​ZooKeeper选举机制 概念 全新集群选举 非全新集群选举 ZooKeeper选举机制 zookeeper默认的算法是FastLeaderElection,采用投票数大于半数则胜 ...

  7. ZooKeeper最佳指南--云平台技术栈11

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的zookeeper! 转自:云时代架构 前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 是 ...

  8. 【Zookeeper入门】相关概念总结

    1. 前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 到底有啥用不?如果别人/面试官让你给他讲讲对于 ZooKeeper 的认识,你能回答到什么地步呢? 拿我自 ...

  9. ZooKeeper基础学习

    简介: ZooKeeper:为分布式应用提供了高效且可靠的分布式协调服务,提供了诸如统一命名服务.配置管理和分布式锁等分布式的基础服务. Zookeeper介绍: 是一个开放源代码的分布式协调服务,设 ...

最新文章

  1. 递归的妙用—遍历子控件
  2. selenium之作用和工作原理
  3. c10k问题及其解决方案
  4. GDI+需要Dispose的对象(不断更新中)
  5. 学计算机的女生是一种怎样的存在?
  6. DC/DC电源模块是什么?有何特点
  7. C#操作XmlDocument对象 报缺少根节点 一一道来
  8. 每天干的啥?(2017.6)
  9. 知识图谱可视化技术在美团的实践与探索
  10. Scala学习(三、函数)
  11. 【JeecgBoot】关于 jeecg-boot 的项目理解、使用心得和改进建议
  12. QTableView效率优化3 - 自定义Model的内容补充
  13. 大数据高薪职位必备:Hadoop求职者的6大攻略
  14. 【四二学堂】标准GPS坐标,转换成百度坐标
  15. flash 与3D笔记:图片墙(1)
  16. 同为双摄像头,华为P9到底比iPhone 7 plus差在哪里?
  17. 烟雨江湖小米鸿蒙,烟雨江湖小米时装怎么拿? 小米衣服获取方法详解[多图]
  18. git tag的用法及意义
  19. Win10 1803卡顿怎么解决?
  20. 如何读取lansee捕获的数据包

热门文章

  1. MySQL 重命名表名 2种方法
  2. Prometheus 轻松实现集群监控
  3. Linux(Ubuntu)如何处理新添加的硬盘
  4. Ubuntu中DenyHosts安装及配置
  5. 升级node,老的项目启动不了的解决方法(亲测有效)
  6. ubuntu16.04 打开chrome弹出“Enter password to unlock your login keyring”解决方法
  7. 解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题
  8. 创建 maven maven-archetype-quickstart 项目抱错问题解决方法
  9. MySQL存储过程的异常处理
  10. 解决eclipse安装maven的问题:Unable to update index for central