ZooKeeper学习笔记(一)——概述
zookeeper学习笔记(一)——概述
1. 概述
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。zookeeper从设计模式的角度来理解:是一个基于观察者设计模式的分布式服务管理框架,她负责存储和观察大家都关心的数据,然后接收观察者的注册,一旦这些数据的状态发生变化,zookeeper就将负责通知已经在zookeepr上注册的那些观察者做出相应的反应。
2. zookeeper的特点
1)Zookeeper:它是一个由一个leader,多个follower组成的集群。;
2)集群中只要由半数以上的节点存活,zookeeper就能够正常工作;
3)全局数据一致性:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,拿到的数据都是一致的;
4)更新请求顺序进行,来自同一个client的更新请求按照其发送顺序依次进行;
5)数据更新原子性,一次数据要么更新成功,要么失败;
6)实时性:在一定的时间范围内,Client能够读到最新的数据。
3. 数据结构
zookeeper的数据模型结构与Linux的文件系统的结构非常类似,整体上可以看作是一个树的结构,每个节点成为一个znode
。每一个znode
默认能够存储1MB的数据,每个znode
都可以通过其路径唯一标识。
就像Linux的文件系统一样,我们能够自由的增加删除znode
也可以在一个znode
下增加删除子节点,注意哦,znode
是可以存储数据的。具体操作已在其他的随笔中有记录了。
4. zookeeper的应用场景
zookeeper提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等等~~
1)统一命名服务:在分布式的环境下,经常需要对应用/服务进行统一的命名服务,便于识别。例如:IP地址不容易记住,而域名就比较好记了。
2)统一配置管理:
(1)分布式环境下,配置文件同步非常常见:
- 一般要求一个集群中,所有的节点配置信息一致,比如kafka集群;
- 对于配置文件修改之后,希望能够快速同步到集群的各个节点上去;
(2)配置管理可以交给zookeeper实现:
可以将配置信息 写入zookeeper的一个
znode
上各个客户端监听这个
znode
一旦
znode
中的数据被修改,zookeeper将通知各个客户端服务器。
3)统一集群管理
(1)分布式环境中,实时掌握每个节点的状态是必要的,可以根据节点的状态做出一些调整
(2)zookeeper可以实时的监控节点的状态变化:
- 可以将节点信息写入zookeeper的一个znode
- 简体这个znode可以获取它的实时变化
4)服务器动态上下线
5. Zookeeper中的配置文件zoo.cfg中参数
1).tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒
Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。
它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(session的最小超时时间是2tickTime)
2).initLimit =10:LF初始通信时限
集群中的Follower跟随者服务器与Leader领导者服务器之间初始连接时能容忍的最多心跳数(tickTime的数量),用它来限定集群中的Zookeeper服务器连接到Leader的时限。
3).syncLimit =5:LF同步通信时限
集群中Leader与Follower之间的最大响应时间单位,假如响应超过syncLimit tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。
4).dataDir:数据文件目录+数据持久化路径
主要用于保存Zookeeper中的数据。
5).clientPort =2181:客户端连接端口
监听客户端连接的端口。
ZooKeeper学习笔记(一)——概述的更多相关文章
- ZooKeeper 学习笔记
ZooKeeper学习笔记 1. zookeeper基本概念 zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和Habase的重要组件,是为分布式应用提供一致性服 ...
- Zookeeper学习笔记(上)
Zookeeper学习笔记 本篇主要是一些基本的介绍和API的使用介绍, 有些只是记录了知识点,而没有完全在笔记中详细解释, 需要自行查找资料补充相关概念 主要参考了课程中的内容: Zookeeper ...
- ZooKeeper学习笔记(二)——内部原理
zookeeper学习笔记(二)--内部原理 1. zookeeper的节点的类型 总的来说可以分为持久型和短暂型,主要区别如下: 持久:客户端与服务器端断开连接的以后,创建的节点不会被删除: 持久化 ...
- Zookeeper学习笔记(中)
Zookeeper学习笔记(中) Zookeeper的基本原理和基本实现 深入了解ZK的基本原理 ZK的一致性: ZAB 协议: Zookeeper 原子消息广播协议 ZK通过选举保证 leader ...
- ZooKeeper学习笔记一:集群搭建
作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...
- ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心
作者:Grey 原文地址:ZooKeeper学习笔记三:使用ZooKeeper实现一个简单的配置中心 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 很多程序往 ...
- ZooKeeper学习笔记二:API基本使用
Grey ZooKeeper学习笔记二:API基本使用 准备工作 搭建一个zk集群,参考ZooKeeper学习笔记一:集群搭建. 确保项目可以访问集群的每个节点 新建一个基于jdk1.8的maven项 ...
- ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁
作者:Grey 原文地址: ZooKeeper学习笔记四:使用ZooKeeper实现一个简单的分布式锁 前置知识 完成ZooKeeper集群搭建以及熟悉ZooKeeperAPI基本使用 需求 当多个进 ...
- Zookeeper学习笔记(下)
这是ZK学习笔记的下篇, 主要希望可以分享一些 ZK 的应用以及其应用原理 我本人的学习告一段落, 不过还遗留了一些ZK相关的任务开发和性能测试的任务, 留待以后完成之后再通过其他文章来进行分享了 Z ...
随机推荐
- SSM 实现支付宝支付功能(图文详解+完整代码)
阅读本文大概需要 4 分钟. 前言 本教程详细介绍了如何使用ssm框架实现支付宝支付功能.本文章分为两大部分,分别是「支付宝测试环境代码测试」和「将支付宝支付整合到ssm框架」,详细的代码和图文解释, ...
- Kafka(三)High Availability 高可用
参考文档: http://www.jasongj.com/2015/04/24/KafkaColumn2/#ACK%E5%89%8D%E9%9C%80%E8%A6%81%E4%BF%9D%E8%AF% ...
- Logback的基本使用方法
一.Logback简介 Logback是由log4j创始人设计的又一个开源日志组件. 1.logback当前分成三个模块:logback-core,logback- classic和logback-a ...
- Redis的内存回收策略和内存上限(阿里)
还有一篇文章 讲解guava如何删除过期数据的,与redis不同,guava没有维护线程删除过期key,只是在设置 key 或者 读取key的时候,顺带删除参考:GuavaCache简介(一)是轻量级 ...
- linux Ubuntu Centos 增加 TCP 连接数
https://blog.csdn.net/c359719435/article/details/80300433 查看max conn: cat /proc/sys/net/core/somaxco ...
- What is the difference between UNION and UNION ALL?
What is the difference between UNION and UNION ALL? UNION removes duplicate records (where all colum ...
- NodeJS包管理器之Yarn
一.安装yarn 首选必须先安装好NodeJS,之后可以去yarn官网下载mis安装程序安装.由于NodeJS自带了一个包管理器npm,所以安装yarn更简单的方法是直接使用npm install - ...
- Error-ASP.NET:未能加载文件或程序集“CMSCalendar”或它的某一个依赖项。系统找不到指定的文件。
ylbtech-Error-ASP.NET:未能加载文件或程序集“CMSCalendar”或它的某一个依赖项.系统找不到指定的文件. 1.返回顶部 1. “/”应用程序中的服务器错误. 分析器错误 说 ...
- 在 json4s 中自定义CustomSerializer
到目前为止,Scala 环境下至少存在6种 Json 解析的类库,这里面不包括 Java 语言实现的 Json 类库.所有这些库都有一个非常相似的抽象语法树(AST).而 json4s 项目旨在提供一 ...
- 【MongoDB学习之三】条件操作符
环境 MongoDB 4.0 CentOS6.5_x64 一.条件操作符 (>) 大于 - $gt (<) 小于 - $lt (>=) 大于等于 - $gte (<= ) 小于 ...