1 Zookeeper 概述

  • 美团,饿了么,淘宝,58 同城等等应用都是 zookeeper 的现实生活版
  • 博主我开了个饭店,如何才能让大家都能吃到我们的饭菜?需要入驻美团,这样大家就可以在美团 app 中看到我的饭店,下订单,从而完成一次交易
  • Zookeeper 是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的

    Apache 项目。
  • 在大数据技术生态圈中,zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂),

    Pig(猪)等技术

1.2 工作机制

  • Zookeeper 从设计模式角度来理解:是一个基于观察者模式(一个人干活,有人盯着他)设计的分

    布式服务管理框架
  • 它负责 存储 和 管理 大家都关心的数据

    然后接受观察者的注册,一旦这些数据的发生变化

    Zookeeper 就将负责通知已经注册的那些观察者做出相应的反应

    从而实现集群中类似 Master/Slave 管理模式

    Zookeeper = 文件系统 + 通知机制

对于我们初学者来说,知到 zookeeper 的工作机制是什么很重要。

  • 首先我们可以把 zookeeper 看做一个美团
  • 当我们用户下单后,他回去通知店家准备餐品
  • 我们 zookeeper 就是做他们之间的桥梁,相互去通知他们
  1. 商家营业并入驻
  2. 获取到当前营业的饭店列表
  3. 服务器节点下线
  4. 服务器节点上下线事件通知
  5. 重新再去获取服务器列表,并注册监听

1.3 特点

  • 首先我们得了解分布式和集群的区别?

    • 无论分布式和集群,都是很多人在做事情。具体区别如下:
    • 例如:我有一个饭店,越来越火爆,我得多招聘一些工作人员
      • 分布式:招聘 1 个厨师,1 个服务员,1 个前台,三个人负责的工作不一样,但是最终目

        的都是为饭店工作
      • 集群:招聘 3 个服务员,3 个人的工作一样

特点:

  1. 是一个leader和多个follower来组成的集群(狮群中,一头雄狮,N头母狮)

  2. 集群中只要有半数以上的节点存活,Zookeeper就能正常工作(5台服务器挂2台,没问题;4台服

    务器挂2台,就停止)

  3. 全局数据一致性,每台服务器都保存一份相同的数据副本,无论client连接哪台server,数据都是

    一致的

  4. 数据更新原子性,一次数据要么成功,要么失败(不成功便成仁)

  5. 实时性,在一定时间范围内,client能读取到最新数据

  6. 更新的请求按照顺序执行,会按照发送过来的顺序,逐一执行(发来123,执行123,而不是321

    或者别的)

1.4 数据结构

  • ZooKeeper数据模型的结构与linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一

    ZNode(ZookeeperNode)。

    • 每一个ZNode默认能够存储1MB的数据(元数据),每个ZNode的路径都是唯一的
    • 元数据 简单理解就是秘钥,key vaule
    • 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about

      data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、

      资源查找、文件记录等功能

1.5 应用场景

  • 我们的zk还提供许多的服务:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载

    均衡等

1.5.1 统一命名服务

  • 在分布式环境下,通常需要对应用或服务进行统一的命名,便于识别
  • 例如:服务器的IP地址不容易记,但域名相比之下却是很容易记住

1.5.2 统一配置管理

  • 分布式环境下,配置文件做同步是必经之路

  • 1000台服务器,如果配置文件作出修改,那一台一台的修改,运维人员肯定会疯,如何做到修改

    一处就快速同步到每台服务器上

  • 将配置管理交给Zookeeper

    1、将配置信息写入到Zookeeper的某个节点上

    2、每个客户端都监听这个节点

    3、一旦节点中的数据文件被修改,Zookeeper这个话匣子就会通知每台客户端服务器

1.5.3 服务器节点动态上下线

  • 客户端能实时获取服务器上下线的变化
  • 在美团APP上实时可以看到商家是否正在营业或打样

1.5.4 软负载均衡

  • Zookeeper会记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户请求(雨露均

    沾)
  • 都是自己的孩子,得一碗水端平

1 什么是Zookeeper 能干什么的更多相关文章

  1. zookeeper能干啥

    在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, n ...

  2. 学习 zookeeper

    1.zookeeper是什么 zookeeper是hadoop的分布式协调服务.主要作用是对hadoop的集群节点进行监控.但是由于其功能的单一而去不依赖hadoop其他框架,所以不局限在hadoop ...

  3. zookeeper集群配置与启动

    摘要:Zookeeper是一个很好的集群管理工具,被大量用于分布式计算.如Hadoop以及Storm系统中.这里简单记录下Zookeeper集群环境的搭建过程.本文以Ubuntu 12.04 LTS作 ...

  4. ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据

    引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们 ...

  5. ZooKeeper之(一)ZooKeeper是什么

    1.1 产生背景 当今是个分布式.集群.云计算等名词满天飞的时代.造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群.服务集群对外提供服务的过 ...

  6. 什么是ZooKeeper?

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下K ...

  7. 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)

    原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...

  8. ZooKeeper系列(5):管理分布式环境中的数据

    引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知 识,理解起来比较抽象所以还需要借助一些应用场景,来帮我 ...

  9. Zookeeper原理架构

    Zookeeper到底是什么!? 学一个东西,不搞明白他是什么东西,哪还有心情学啊!! 首先,Zookeeper是Apache的一个java项目,属于Hadoop系统,扮演管理员的角色. 然后看到官网 ...

随机推荐

  1. Bootstrap Blazor 模板使用(一)Layout 组件

    原文链接:https://www.cnblogs.com/ysmc/p/16197223.html BootstrapBlazor 官网地址:https://www.blazor.zone Boots ...

  2. Halo 开源项目学习(七):缓存机制

    基本介绍 我们知道,频繁操作数据库会降低服务器的系统性能,因此通常需要将频繁访问.更新的数据存入到缓存.Halo 项目也引入了缓存机制,且设置了多种实现方式,如自定义缓存.Redis.LevelDB ...

  3. [笔记] Slope Trick:解决一类凸代价函数的DP优化问题

    原理 当序列 DP 的转移代价函数满足 连续: 凸函数: 分段线性函数. 时,可以通过记录分段函数的最右一段 \(f_r(x)\) 以及其分段点 \(L\) 实现快速维护代价的效果. 如:$ f(x) ...

  4. 渗透:aircrack-ng

    ircrack- NG是一个完整的工具来评估Wi-Fi网络安全套件,功能包括: 监控:数据包捕获和导出数据到文本文件,以供第三方工具进一步处理. 攻击:通过数据包注入回放攻击,去认证,伪造接入点等. ...

  5. 项目:PMBok

    美国项目管理协会(PMI)资格认证之所以能在如此广的行业和地域范围内被迅速认可,首先是项目管理本身的重要性和实用性决定的,其次很大程度上是得益于该项认证体系本身的科学性.PMI早在七十年代末就率先提出 ...

  6. 130_传析阅管理系统accdb64位版本

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 几年前笔者针对家居门店的进销存.人员管理.工资管理.任务系统.门店经营盈亏管理.销售分析.考勤请假等息息相关的业务基于Ac ...

  7. 羽夏笔记—— AT&T 与 GCC

    写在前面   本文是本人根据<AT&T 汇编语言与 GCC 内嵌汇编简介>进一步整理,修改了一些错误,并删除我并不能复现代码相关的部分.该文章一是我对 AT&T 的学习记录 ...

  8. Matplotlib的小入门

    Matplotlib专门用于开发2D图表(包括3D图表),在日常数据处理中经常需要运用到它,它的用法非常多样,这里记录一些基础用法,算是一个小入门,后面如果有更复杂的画图要求,再进一步学习. 如果有需 ...

  9. Unity中通过深度优先算法和广度优先算法打印游戏物体名

    前言:又是一个月没写博客了,每次下班都懒得写,觉得浪费时间.... 深度优先搜索和广度优先搜索的定义,网络上已经说的很清楚了,我也是看了网上的才懂的,所以就不在这里赘述了.今天讲解的实例,主要是通过自 ...

  10. 理“ Druid 元数据”之乱

    vivo 互联网大数据团队-Zheng Xiaofeng 一.背景 Druid 是一个专为大型数据集上的高性能切片和 OLAP 分析而设计的数据存储系统. 由于Druid 能够同时提供离线和实时数据的 ...