Zookeeper概述
一、简介
- ZooKeeper致力于提供一个高性能、高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件。
二、特点
2.1 数据结构简单
2.2 支持集群
- 可以构建集群,避免单点故障,3-5台机器就可以组成集群,超过半数正常工作就能对外提供服务;
2.3 顺序访问
- 对于每个写请求,zk会分配一个全局唯一的递增编号,利用这个特性可以实现高级协调服务;
2.4 性能
- 高性能,基于内存操作,服务于非事务请求,适用于读操作为主的业务场景。3台zk集群能达到13w QPS;
三、 使用场景
- Master选举:比如Hadoop中的应用
- 集群管理(kafka):服务注册与发现,监控服务是否监控
- 分布式锁:应用多
- 负载均衡(服务注册与发现)Nginx是服务端负载,zk做注册与发现是客户端负载,客户端来选择需要访问的服务端,包括SpringCloud也是。
- 配置管理:多数据源配置,能够实时更新。
- 数据发布订阅:依赖事件监听机制来实现
- 命名服务:利用节点的唯一性,保证生产的业务比如订单全局唯一
- 分布式队列:应用不多
四、小结
分布式事事物协调器
临时节点/永久节点
顺序节点/
组合起来是4种节点
- Zookeeper对节点的watch监听通知是永久的吗?
是一次性的
- 部署方式?集群中的机器角色都有哪些?集群最少要几台机器?集群如果有3台机器,挂掉一台集群还能工作吗?挂掉两台呢?
可以单机部署,也可以集群部署,也可以在单机上部署伪集群。
集中的角色有三种。(Leader Fellower Obeserver)
集群最少需要3台设备。
3台设备的集群可以挂一台,保证大多数存活,挂2台后集群不能正常对外服务。
如果是单机扩展为集群,那么会短暂的中断对外服务。因为需要修改配置文件并且重启服务
如果是集群扩容,现部署新的机器,再一台一台的重启老机器,同一时刻只有一台不可用,保证大多数可用,因此对外服务不会中断
- Paxos算法& Zookeeper使用协议,选举算法和流程
请参阅参考文献[3]
参考