1.zookeeper入门
1.1 概述
选择zookeeper3.5.7作为教程版本.Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。也就是说zookeeper可以为其它的分布式框架提供服务,而它本身也是分布式项目。
从设计模式的角度理解,zookeeper是一个基于观察者模式的设计模式,它可以存储一些大家都关心的数据,然后接受观察者的注册,一旦数据发生变化,就会通知到各个观察者们,使其做出相对应的反应。其实它就相当于一个文件系统+通知机制。微服务中很重要的一个机制就是服务的注册、监听与发现,使用zookeeper很容易就做到。
1.2特点
1)zookeeper一个领导者(Leader),多个跟随者(Follower)组成的集群。 所有的写操作都需要经过leader,避免数据写入混乱,但是follower都可以提供读服务,提高效率分散压力。
2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所 以Zookeeper适合安装奇数台服务器。比如5台服务器挂2台集群还能使用,但是如果是6台服务器挂2台也能使用,挂3台就不行了,这样我们多安装了一台服务器,但是服务器集群的稳定性并没有提高,相当于浪费了一台服务器。
3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
4)更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
5)数据更新原子性,一次数据更新要么成功,要么失败。
6)实时性,在一定时间范围内,Client能读到最新数据。这是因为zookeeper的数据同步效率很高。
1.3 数据结构
ZooKeeper 数据模型的结构与 Unix 文件系统很类似,整体上可以看作是一棵树,每个节点称做一个 ZNode。每一个 ZNode 默认能够存储 1MB 的数据,因此zookeeper不适合用来存储海量数据,只适用于存储一些小存储量的配置信息,每个 ZNode 都可以通过其路径唯一标识。
1.4 应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。
(1)统一命名服务
在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。例如:IP不容易记住,而域名容易记住。同时统一命名服务一台主机挂掉并不影响服务整体的使用。ngix也可以起到类似的作用。
(2)统一配置管理
分布式环境一般要求服务集群的配置信息保持一致,如果一个配置信息发生改变,需要尽快的同步到各个服务器节点。同时可以将变化尽快的通知到服务端。
(3)统一集群管理
客户端在zookeeper上注册后,可以将其节点信息存放到一个znode
,这样就可以被其它节点监听到。
4)服务动态上线
服务上线、下线都可以被监听到
(5)软负载均衡
均衡客户端对服务端的请求
1.5 下载地址
服务上线、下线都可以被监听到