前言
文章力求:通俗易懂、图文并茂、系统全面,语言精练,主要介绍以下知识点:
1.zk基础知识铺路,做到屋里有粮,心中不慌
2.zk的下载、安装、核心参数配置、节点参数释义
3.zk集群快速搭建的两种方式
注:本文以zk的3.4.6版本展开介绍,如想使用更高zk3.8.0版本[下载](需要下载已编译的bin版本),则需要注意一些细节,本文依然适合你阅读,里面的坑,已经标注。
如果感兴趣ZK常规命令,请参考:
zookeeper常规命令 | Watch | ACL权限操作 | nc四字命令详解
一、概述
1.zk概述
Zookeeper是谷歌基于Java语言开发的分布式协调服务,是Hadoop和Hbase的重要组件。基于java语言开发的分布式组件,Zookeeper的本意就是动物管理员,它里面有大象Hadoop、小猪Pig(组件)、Hive蜜蜂,成员依然在持续壮大中。
2.作用
1.zk节点可以存储1M数据,作为中间件可以提供协调服务(比如用来存储、计算、缓存)
2.可以为大数据服务,比如配置维护、命名服务、同步服务。
3.提高程序的高可用(通过快速选举Leader+分布式锁的watch实现)
3.特性
1.最终一致性︰数据一致性,数据按照顺序分批入库(仅Leader有事务操作权限)
2.原子性︰事务要么成功要么失败,不会局部化
3.统—视图︰客户端连接集群中的任—zk节点,数据都是一致的
4.可靠性︰每次对zk的操作状态都会保存在服务端(一台宕机,无感被切换到另一台继续处理),Keepalive没有这一特性。
5.实时性︰客户端可以读取到zk服务端的最新数据
6.独立性:各个Client之间互不干预
4.版本变迁
ZooKeeper3.6引入了观察者Observer角色,之前版本只有Leader和Flower,截止收稿(2021.12),最新版本更新到ZooKeeper3.7.1[下载]
截止2022年11月13日,zk已更新至 Zookeeper3.8[下载]
1.Observer引入原因
1.早期版本ZooKeeper集群无法做到跨域部署。
2.随着集群规模的变大,Flower越来越多,彼此的网络通信也变得越来越耗时,集群处理写入的性能反而下降。
2.Observer[观察者]特色
1.Observer功能上和Flower的主要区别是它没有选举和被选举权。
2.Observer 可以处理 ZK在集群中的非事务性请求,不参与投票操作,这样既保证了集群扩展性,又避免了因为过多的服务器参与投票相关的操作而影响 ZooKeeper 集群处理事务性会话请求的能力。
3.Observer 不参与 Leader 节点等操作,并不会像 Follow 服务器那样频繁的与 Leader 服务器进行通信。因此,可以将 Observer 服务器部署在不同的网络区间中,这样也不会影响整个 ZooKeeper 集群的性能,也就是所谓的跨域部署。
3.Observer配置示例
peerType=observer 此行代码,只需在observer观察者所在这台机器的zoo.cfg中配置!!!
server.1=192.168.31.214:2888:3888
server.2=192.168.31.215:2888:3888
server.3=192.168.31.216:2888:3888:observer 本行代码,集群中所有配置文件都要一样
一般小公司的