• 1 什么是Zookeeper 能干什么


    1 Zookeeper 概述

    • 美团,饿了么,淘宝,58 同城等等应用都是 zookeeper 的现实生活版
    • 博主我开了个饭店,如何才能让大家都能吃到我们的饭菜?需要入驻美团,这样大家就可以在美团 app 中看到我的饭店,下订单,从而完成一次交易
    • Zookeeper 是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的
      Apache 项目。
    • 在大数据技术生态圈中,zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂),
      Pig(猪)等技术

    1.2 工作机制

    • Zookeeper 从设计模式角度来理解:是一个基于观察者模式(一个人干活,有人盯着他)设计的分
      布式服务管理框架
    • 它负责 存储 和 管理 大家都关心的数据
      然后接受观察者的注册,一旦这些数据的发生变化
      Zookeeper 就将负责通知已经注册的那些观察者做出相应的反应
      从而实现集群中类似 Master/Slave 管理模式
      Zookeeper = 文件系统 + 通知机制

    img

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

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

    1.3 特点

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

    特点:

    img

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

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

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

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

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

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

    1.4 数据结构

    img

    • ZooKeeper数据模型的结构与linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一
      ZNode(ZookeeperNode)。
      • 每一个ZNode默认能够存储1MB的数据(元数据),每个ZNode的路径都是唯一的
      • 元数据 简单理解就是秘钥,key vaule
      • 元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about
        data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、
        资源查找、文件记录等功能

    1.5 应用场景

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

    1.5.1 统一命名服务

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

    img

    1.5.2 统一配置管理

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

    • 1000台服务器,如果配置文件作出修改,那一台一台的修改,运维人员肯定会疯,如何做到修改
      一处就快速同步到每台服务器上
      img

    • 将配置管理交给Zookeeper
      1、将配置信息写入到Zookeeper的某个节点上
      2、每个客户端都监听这个节点
      3、一旦节点中的数据文件被修改,Zookeeper这个话匣子就会通知每台客户端服务器

    1.5.3 服务器节点动态上下线

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

    1.5.4 软负载均衡

    • Zookeeper会记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户请求(雨露均
      沾)
    • 都是自己的孩子,得一碗水端平

    img

  • 相关阅读:
    git 时忽略某个文件或文件夹
    “数聚瑞安 · 创新未来”中国·瑞安第四届创新创业大赛角逐火热,初赛结果已公布!
    面试:dumpsys meminfo 内存信息含义
    CC1101 一款低功耗sub- 1ghz收发器芯片 适用于无线遥控智能家居
    Linux网络-UDP/TCP协议详解
    保卫你的应用:探索过滤器和拦截器的奥秘
    区块链应用:椭圆曲线数字签名算法ECDSA
    00、计算机视觉入门与调优简介
    简历(快速上手)
    spring面试题
  • 原文地址:https://www.cnblogs.com/look-word/p/16479323.html