zookeeper扫盲
一、zookeeper概述
a、zookeeper是一个开源的分布式的项目,为分布式业务提供协调服务的apache顶级项目
那什么是分布式的呢,通俗的说就是多个机器可以同时去处理一件事情
b、zookeeper相当于大数据生态体系的润滑剂,保存各个组件的配置文件;zoo是什么意思,动物园的意思,而大数据各个组件的标志都是一些动物,所以zookeeper又被称为动物园的管理员,可以管理大数据生态体系的很多组件
c、zookeeper的本质就是:文件系统+通知机制
二、工作机制
a、zk的设计是基于观察者模式设计的分布式服务管理框架,他负责存储和管理大家都关心的数据,然后接受观察者注册
b、一旦这些数据发生变化,zk就将负责通知已经在zk上注册的那些观察者,观察者会通过会根据相应的变化做出相应的行为
什么是观察者模式,通俗的讲就是一个人在干活,另外一个人在监视,就比如我们现在在这里培训,摄像头就是一个观察者
工作机制如何

三、zoopeeper特点

四、数据结构
zookeeper的数据模型结构和unix的文件系统类似,整体上可以看做是一个树,每个节点称为一个ZNode,每一个ZNode默认只只能够存储1MB的数据,每个ZNode都可以通过路径唯一标示

五、应用场景
zk可以提供如下服务,统一命名服务,统一配置管理,统一集群管理,服务器节点动态上下线,软负载均衡
a、统一命名服务
在分布式环境中,经常需要对应用服务进行统一命名,便于识别,例如ip不容易记住,而域名容易记住

b、统一配置管理
在分布式环境中,配置同步是非常常见的,这里监听模式就体现的非常的明显

一般在一个分布式集群中,所有节点的配置是一致的,比如kafka集群 ;而且一旦配置更改之后,所有的节点都可以快速同步到最新的配置
我们可以将配置文件写在一个ZNode中,然后集群中所有的节点都监控这个节点,一旦配置节点内容发生变化,则立刻更新本地配置
c、统一集群管理
在分布式环境中,实时掌握每个节点的状态是非常有必要的。我们可以将每个节点都注册到一个节点中,只要监听这个节点的变化就可以获取节点的的状态变化

首先每个服务器启动后,到zk上创建一个临时节点目录
然后client去获取当前在线的服务器的列表,同时监听目录信息
如果一个服务器节点故障,那么该节点创建的临时节点目录被删除
客户端收到通知,获取最新的在线列表服务器
六、zk安装

七、选举机制
a、半数机制,集群中半数节点存活,则集群可用,所以zk集群的节点数都为奇数个
b、zk在配置文件没有指定Leader和Follower,但是在实际工作中是有一个Leader和多Follower的,Leader是临时选举产生的
c、假设有5个服务器组成zk集群,myid分别为1,2,3,4,5,同时他们都是最新启动的,假设他们是按照顺序启动的,节点1启动成功,发现没有Leader,那么他投自己一票;节点2启动成功后,发现集群中没有Leader,且自己的myid为2,节点1的myid为1,自己的myid较大,那么他投自己一票,这个时候节点1发现节点的2的myid比自己大,那么节点1就会投节点2一票,这个时候节点2有2票,但是还没有过半数;这个时候节点3启动成功,他的myid是3,节点3发现集群中没有Leader,那么他投自己一票,节点1和节点2发现节点3的myid最大,那么他们会投节点3一票,此时节点3有三票,超过半数,那么节点3就是Leader,这个时候节点4和节点5启动,虽然他们的myid较大,但是也不会在进行选举了
八、zk的节点类型
a、持久型:客户端和服务端断开连接后,创建的节点不会删除
b、持久型顺序节点:客户端和服务端断开连接后,创建的节点不会删除,只是在节点名称上会加上单调递增的序号
c、短暂型:客户端和服务端断开连接后,创建的节点会被删除
d、短暂型顺序节点:客户端和服务端断开连接后,创建的节点会被删除,只是在节点名称上会加上单调递增的序号
九、节点操作
a、创建一个持久节点

b、查看节点内容

c、创建一个持久有序号的节点


c、创建一个短暂的节点

d、修改节点内容

e、监听节点的内容

如果节点内容发生变化,则会有监听信息

接听只是一次有效,第二次修改监听就没有效果了,需要重新监听
f、删除一个节点

十、zk写数据流程
a、client向zk集群发现写数据请求
b、如果该zk节点不是Leader,则这个请求会被转发给Leader,Leader会把请求在整个集群广播
c、节点手动请求后会通知Leader,如果半数以上的节点写入成功,则认为写入成功
d、Leader手动写入成功的返回后,则会通知Client,这次写入成功
十一、zk读数据流程
读流程相对节点,每个节点收到读请求,就会直接返回,不需要通过Leader
zookeeper扫盲的更多相关文章
- 分布式协调服务Zookeeper扫盲篇
分布式协调服务Zookeeper扫盲篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 身为运维工程师对kubernetes(k8s)可能比较熟,那么etcd(go语言实现)分布式协 ...
- Zookeeper 扫盲
Zookeeper 扫盲 :disappointed_relieved: 配置文件详解: tickTime:基本事件单元,以毫秒为单位,这个时间作为 Zookeeper 服务器之间或客户端之间维持心跳 ...
- SpringCloud笔记一:扫盲
目录 前言 什么是微服务? 微服务的优缺点是什么? 微服务之间是如何通讯的? SpringCloud和Dubbo有哪些区别? SpringCloud和SpringBoot的关系? 什么是服务熔断?什么 ...
- kafka扫盲笔记,实战入门
Kafka作为大数据时代的产物,自有其生存之道.让我们跟随扫盲班的培训,进行大致了解与使用kafka吧.(平时工作有使用不代表就知道kafka了哟) 1. kafka介绍 1.1. 拥有的能力(能干什 ...
- RocketMQ扫盲篇
本篇博客主要参考: <浅入浅出>-RocketMQ 敖丙 APACHE-RocketMQ Gitee RocketMQ官方文档 RocketMQ 实战与进阶 GitChat 又是好久没有写 ...
- 消息队列扫盲(RocketMQ 入门)
消息队列扫盲 消息队列顾名思义就是存放消息的队列,队列我就不解释了,别告诉我你连队列都不知道似啥吧? 所以问题并不是消息队列是什么,而是 消息队列为什么会出现?消息队列能用来干什么?用它来干这些事会带 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- [译]ZOOKEEPER RECIPES-Leader Election
选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客 ...
- zookeeper源码分析之六session机制
zookeeper中session意味着一个物理连接,客户端连接服务器成功之后,会发送一个连接型请求,此时就会有session 产生. session由sessionTracker产生的,sessio ...
随机推荐
- Zxing QRCode
1.拉伸 2.只能扫描一次 3.空指针异常
- java struts2 debug
出了一堆bug 改的顺序和哪个起了作用不太记得了 下面列出遇到问题的顺序:1java.lang.NoSuchMethodException:没这个方法 代码是改正后的,出错的时候保证class ,ac ...
- RAM、ROM和fFLASH相关概念整理
一:ROM ROM:Read Only Memory.只读存储器 是一种半导体内存,又叫做非挥发性内存.其特性是一旦数据被存储就无法再将之改变或删除.存储的数据不会因为电源关闭而消失. 二: ...
- .NET Core应用框架AA介绍(二)
AA的开源地址 https://github.com/ChengLab/AAFrameWork AA框架是一个基础应用框架,是建立在众多大家熟知的流行工具之上并与之集成.比如:ASP.NET Core ...
- centos7 安装wps
# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) # cat /proc/version Linux version 3.1 ...
- appium自动化的一个实例
实现appium的自动化,三步走,具体如下: 第一步:启动appium的服务端: 可以通过命令行的方式启动:cmd,然后输入appium,如下图 也可以打开桌面程序appium,点击右上角的运行按钮, ...
- LeetCode 链表题 ( Java )
leetcode 237. 删除链表中的节点 链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list/ 示例 : 输入: he ...
- 基于H.ui.Admin UI模板的网站管理后台
最近接手一个跨境电商平台开发,客户侧重电商网站UI设计,对管理后台要求不高,由我们决定选哪一款后台模板.找来找去,感觉还是H.ui靠谱一些,主要是这个模板清爽,不需要过多选择.其他的流行后台模板也看了 ...
- Docker简介与安装
简介与安装 简介 Docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的 ...
- 【华为云网络技术分享】HTTP重定向HTTPS配置指南
[摘要] 本文介绍使用华为云弹性负载均衡配置Http重定向到Https的方法. 1. HTTP.HTTPS 头部标识 ELB 对 HTTPS 进行代理,无论是 HTTP 还是 HTTPS 请求,到了 ...