目录
1.什么是Zookeeper
Zookeeper是在分布式环境中应用非常广泛,它的优秀功能很多,比如分布式环境中全局命名服务,服务注册中心,全局分布式锁(针对临界区代码段的编写,假如,我们是一个分布式系统,两个服务分别运行在两台机器上,这两台机器要竞争一个资源,这个资源是不能让同时2个RPC节点去访问的,这时候需要一把分布式锁,此时普通的锁是不能解决的,因为普通的锁是在同一个进程里控制线程的)等等。
Zookeeper相当于动物园的管理员,也负责协调各种动物之间的。
- ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是大数据生态中的重要组件。它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
- 它是一个为分布式应用提供一致性协调服务的中间件
我们在做mprpc框架项目的时候,消费者发起RPC的请求,我们需要知道这个RPC服务在哪个机器上运行的,我们需要服务配置中心,在这个分布式系统中,所有提供RPC服务的节点都会向配置中心注册服务,提供什么端口号,什么服务。在消费者发起RPC服务的请求,我们去配置中心查找一下就可以了!
2.ZooKeeper提供了什么
2.1 文件系统
Zookeeper提供一个多层级的节点命名空间(节点称为znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限为1M。
2.2 通知机制
client端会对某个znode建立一个watcher事件,当该znode发生变化时,这些client会收到zk的通知,然后client可以根据znode变化来做出业务上的改变等。
3.Zookeeper作用
1、master节点选举, 主节点down掉后, 从节点就会接手工作, 并且保证这个节点是唯一的,这也就是所谓首脑模式,从而保证我们集群是高可用的
2、统一配置文件管理, 即只需要部署一台服务器, 则可以把相同的配置文件同步更新到其他所有服务器, 此操作在云计算中用的特别多(例如修改了redis统一配置)
3、数据发布与订阅, 类似消息队列MQ
4、分布式锁,分布式环境中不同进程之间争夺资源,类似于多进程中的锁(平常学习的读写锁、互斥锁、自旋锁等都是在同一线程中控制临界区代码段的)。
5、集群管理, 保证集群中数据的强一致性
4.Zookeeper的特性
一致性: 数据一致性, 数据按照顺序分批入库
原子性: 事务要么成功要么失败
单一视图: 客户端连接集群中的任意zk节点, 数据都是一致的
可靠性:每次对zk的操作状态都会保存在服务端
实时性: 客户端可以读取到zk服务端的最新数据
5.什么是分布式系统
很多台计算机组成一个整体, 一个整体一致对外并且处理同一请求
内部的每台计算机都可以相互通信(rest/rpc)
客户端到服务端的一次请求到响应结束会经历多台计算机
6.Zookeeper的安装
1.下载 zookeeper-3.4.10.tar.gz
2.解压:
tar -zxvf zookeeper-3.4.10.tar.gz