1 什么是Zookeeper 能干什么
1 Zookeeper 概述
- 美团,饿了么,淘宝,58 同城等等应用都是 zookeeper 的现实生活版
- 博主我开了个饭店,如何才能让大家都能吃到我们的饭菜?需要入驻美团,这样大家就可以在美团 app 中看到我的饭店,下订单,从而完成一次交易
- Zookeeper 是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的
Apache 项目。 - 在大数据技术生态圈中,zookeeper(动物管理员),Hadoop(大象),Hive(蜜蜂),
Pig(猪)等技术
1.2 工作机制
- Zookeeper 从设计模式角度来理解:是一个基于观察者模式(一个人干活,有人盯着他)设计的分
布式服务管理框架 - 它负责 存储 和 管理 大家都关心的数据
然后接受观察者的注册,一旦这些数据的发生变化
Zookeeper 就将负责通知已经注册的那些观察者做出相应的反应
从而实现集群中类似 Master/Slave 管理模式
Zookeeper = 文件系统 + 通知机制

对于我们初学者来说,知到 zookeeper 的工作机制是什么很重要。
- 首先我们可以把 zookeeper 看做一个美团
- 当我们用户下单后,他回去通知店家准备餐品
- 我们 zookeeper 就是做他们之间的桥梁,相互去通知他们
- 商家营业并入驻
- 获取到当前营业的饭店列表
- 服务器节点下线
- 服务器节点上下线事件通知
- 重新再去获取服务器列表,并注册监听
1.3 特点
- 首先我们得了解分布式和集群的区别?
- 无论分布式和集群,都是很多人在做事情。具体区别如下:
- 例如:我有一个饭店,越来越火爆,我得多招聘一些工作人员
- 分布式:招聘 1 个厨师,1 个服务员,1 个前台,三个人负责的工作不一样,但是最终目
的都是为饭店工作- 集群:招聘 3 个服务员,3 个人的工作一样
特点:

是一个
leader和多个follower来组成的集群(狮群中,一头雄狮,N头母狮)集群中只要有半数以上的节点存活,Zookeeper就能正常工作(5台服务器挂2台,没问题;4台服
务器挂2台,就停止)全局数据一致性,每台服务器都保存一份相同的数据副本,无论client连接哪台server,数据都是
一致的数据更新原子性,一次数据要么成功,要么失败(不成功便成仁)实时性,在一定时间范围内,client能读取到最新数据更新的请求按照顺序执行,会按照发送过来的顺序,逐一执行(发来123,执行123,而不是321
或者别的)
1.4 数据结构

ZooKeeper数据模型的结构与linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一
个ZNode(ZookeeperNode)。- 每一个ZNode默认能够
存储1MB的数据(元数据),每个ZNode的路径都是唯一的 元数据简单理解就是秘钥,key vaule元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about
data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、
资源查找、文件记录等功能
- 每一个ZNode默认能够
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 能干什么的更多相关文章
- zookeeper能干啥
在Zookeeper的官网上有这么一句话:ZooKeeper is a centralized service for maintaining configuration information, n ...
- 学习 zookeeper
1.zookeeper是什么 zookeeper是hadoop的分布式协调服务.主要作用是对hadoop的集群节点进行监控.但是由于其功能的单一而去不依赖hadoop其他框架,所以不局限在hadoop ...
- zookeeper集群配置与启动
摘要:Zookeeper是一个很好的集群管理工具,被大量用于分布式计算.如Hadoop以及Storm系统中.这里简单记录下Zookeeper集群环境的搭建过程.本文以Ubuntu 12.04 LTS作 ...
- ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知识,理解起来比较抽象所以还需要借助一些应用场景,来帮我们 ...
- ZooKeeper之(一)ZooKeeper是什么
1.1 产生背景 当今是个分布式.集群.云计算等名词满天飞的时代.造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群.服务集群对外提供服务的过 ...
- 什么是ZooKeeper?
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下K ...
- 【Zookeeper系列】ZooKeeper管理分布式环境中的数据(转)
原文地址:https://www.cnblogs.com/sunddenly/p/4092654.html 引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它 ...
- ZooKeeper系列(5):管理分布式环境中的数据
引言 本节本来是要介绍ZooKeeper的实现原理,但是ZooKeeper的原理比较复杂,它涉及到了paxos算法.Zab协议.通信协议等相关知 识,理解起来比较抽象所以还需要借助一些应用场景,来帮我 ...
- Zookeeper原理架构
Zookeeper到底是什么!? 学一个东西,不搞明白他是什么东西,哪还有心情学啊!! 首先,Zookeeper是Apache的一个java项目,属于Hadoop系统,扮演管理员的角色. 然后看到官网 ...
随机推荐
- PXE实现无人值守批量安装服务器
今天我们使用PXE+Kickstart+TFTP+DHCP+FTP实现无人值守安装服务器. 一.无人值守所需服务介绍: 1)PXE PXE,远程引导技术 功能:使计算机通过网络启动 硬件要求:客户端的 ...
- IIS发布Https和Https的问题
asp.net调试页面的时候遇到一个问题,我喜欢右键点击在浏览器查看页面,打开的页面默认是https的,其实iis会同时生成http和https两种页面,但是我懒得每次去点.问题是页面中测试接口是ht ...
- 98. 验证二叉搜索树 前序遍历解法以及后续遍历解法(go语言)
leetcode题目 98. 验证二叉搜索树 前序遍历 最简洁的答案版本,由于先判断的是根节点,所以直接判断当前root的值v,是否满足大于左子树最大,小于右子树最小,然后再遍历左子树,右子树是否是这 ...
- AQS源码三视-JUC系列
AQS源码三视-JUC系列 前两篇文章介绍了AQS的核心同步机制,使用CHL同步队列实现线程等待和唤醒,一个int值记录资源量.为上层各式各样的同步器实现画好了模版,像已经介绍到的ReentrantL ...
- zabbix 1.1
1.zabbix监控平台 2.zabbix的三部分组件: Zabbix server 是 Zabbix软件的核心组件,agent 向其报告可用性.系统完整性信息和统计信息.server也是存 ...
- 2021夏季学期华清大学EE数算OJ1:算数问题
第一次写博客,有点紧张... 也许格式也没有特别丑吧 先看原题( 此题做法众多,这里仅仅介绍蒟蒻的一种很复杂的思路(但最后还是喜提0ms的好成绩) 读完这道题,不难发现,此题不过是一个质因数分解+一堆 ...
- Python写安全小工具-TCP全连接端口扫描器
通过端口扫描我们可以知道目标主机都开放了哪些服务,下面通过TCP connect来实现一个TCP全连接端口扫描器. 一个简单的端口扫描器 #!/usr/bin/python3 # -*- coding ...
- Spring Security之用户名+密码登录
自定义用户认证逻辑 处理用户信息获取逻辑 实现UserDetailsService接口 @Service public class MyUserDetailsService implements Us ...
- Fastflow——基于golang的轻量级工作流框架
Fastflow 是什么?用一句话来定义它:一个 基于golang协程.支持水平扩容的分布式高性能工作流框架. 它具有以下特点: 易用性:工作流模型基于 DAG 来定义,同时还提供开箱即用的 API, ...
- dubbo是如何实现可扩展的?
dubbo如何实现可扩展的,援引官网描述: Dubbo 的扩展点加载从 JDK 标准的 SPI (Service Provider Interface) 扩展点发现机制加强而来. Dubbo 改进了 ...