1.什么是zookeeper?
ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列
zookeeper中的角色
1.leader
2.follewer
3.observer
一个 ZooKeeper 集群同一时刻只会有一个 Leader,其他都是 Follower 或 Observer。ZooKeeper 默认只有 Leader 和 Follower 两种角色,没有 Observer 角色。为了使用 Observer 模式,在任何想变成Observer的节点的配置文件中加入:peerType=observer 并在所有 server 的配置文件中,配置成 observer 模式的 server 的那行配置追加 :observer
zookeeper作用
zookeeper适合作为dubbo服务的注册中心,工业强度高,可用于生产环境。可以作为集群的管理工具使用,可以集中管理配置文件。
zookeeper有这几个优点,分别是:简单,高可靠,有序,高性能
简单:允许各分布式应用通过一个共享的命名空间相互联系,该命名空间类似于一个标准的文件系统:由若干注册了的数据节点构成,这些节点类似于文件和目录。与专为存储而设计的典型文件系统不同zookeeper数据保存在内存中,这意味着zookeeper可以实现高吞吐量和低延迟数量。
高可靠:zookeeper本身就是具有冗余结构,它构建在一系列主机之上,构成zookeeper服务的各服务器之间必须相互知道,它们维护着一个状态信息的内存映像,以及在持久化存储中维护着事务日志和快照。只要大部分服务器正常工作zookeeper服务就能正常工作。客户端连接到一台zookeeper服务器。客户端维护这个TCP连接,通过这个连接,客户端可以发送请求、得到应答,得到监视事件以及发送心跳。如果这个连接断了,客户端可以连接到另一个zookeeper服务器。
有序:zookeeper给每次更新附加一个数字标签,表明zk中的事务顺序,后续操作可以利用这个顺序来完成更高层次的抽象功能,例如同步原语操作。
高性能:zookeeper特别适合于以读为主要负荷的场合。zookeeper可以运行在数千台机器上,如果大部分操作为读,例如读写比例为10:1,zk的效率会很高。
zookeeper的节点
临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点.
持久节点(PERSISTENT):创建后永久存在,除非主动删除。
以上两种节点为Non-sequence节点,只有一个可创建成功,其它匀失败。并且创建出的节点名称与创建时指定的节点名完全一样.
临时顺序节点(EPHEMERAL_SEQUENTIAL):具有临时节点特征,但是它会有序列号。
持久顺序节点(PERSISTENT_SEQUENTIAL):具有持久节点特征,但是它会有序列号。
以上两种节点为sequence节点,创建出的节点名在指定的名称之后带有10位10进制数的序号。多个客户端创建同一名称的节点时,都能创建成功,只是序号不同
容器节点(CONTAINER):如果节点中最后一个子Znode被删除,将会触发删除该Znode;
持久定时节点(PERSISTENT_WITH_TTL):客户端断开连接后不会自动删除Znode,如果该Znode没有子Znode且在给定TTL时间内无修改,该Znode将会被删除;TTL单位是毫秒,必须大于0且小于或等于 EphemeralType.MAX_TTL
持久顺序定时节点(PERSISTENT_SEQUENTIAL_WITH_TTL):同PERSISTENT_WITH_TTL,且Znode命名末尾自动添加递增编号;
(注:节点类型在节点创建的时候就被确定且不可改变)
Zookeeper的安装
Zookeeper是java开发的可以运行在windows、linux环境。需要先安装jdk。
安装的步骤:
第一步:安装jdk(有好多问题都是jdk不合适,选择一个合适的jdk)
第二步:把zookeeper的压缩包上传到linux系统。(用ifconfig命令查看系统的ip,然后用secureCRT软件连接)
第三步:解压缩压缩包(解压缩命令:tar -zxvf zookeeper-3.4.6.tar.gz)
第四步:进入zookeeper-3.4.6目录,创建data文件夹。
第五步:把zoo_sample.cfg改名为zoo.cfg(命令:[root@localhost conf]# mv zoo_sample.cfg zoo.cfg)
第六步:修改data属性(dataDir=/root/zookeeper-3.4.6/data)
第七步:启动zookeeper([root@localhost bin]# ./zkServer.sh start)关闭:[root@localhost bin]# ./zkServer.sh stop查看状态:[root@localhost bin]# ./zkServer.sh status
然后zookeeper就安装好了。