1.ZooKeeper是什么
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态,根据节点提交的反馈,进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
2.ZooKeeper中的各种角色
角色 | 工作 |
---|---|
领导者(Leader) | 负责进行投票的发起和决议,更新系统状态 |
跟随者(Follower) | 用于接收用户请求并向客户端返回结果,在选择Leader过程中参与投票 |
观察者(Observer) | 接收客户端连接,将写请求转发给Leader节点,但不参与投票过程,只同步Leader的状态。Observer的目的是为了扩展系统,提高读取速度。 |
3.工作流程
(1)client向follower发出一个写的请求,
(2)follower将请求发送给leader
(3)leader接收到以后开始发起投票并通知follower进行投票
(4)follower将投票结果发给leader
(5)leader将结果汇总后如果需要写入,则开始写入,然后commit
(6)follower把请求结果返回给client
4.原理:zookeeper可以作为注册中心,用于服务治理
每启动一个微服务,就会去zk中注册一个临时子节点, 每当有一个服务down机,由于是临时接点,此节点会立即被删除,并通知订阅该服务的微服务更新服务列表(zk上有watch,每当有节点更新,都会通知订阅该服务的微服务更新服务列表);每当有一个新的微服务注册进来,就会在对应的目录下创建临时子节点,并通知订阅该服务的微服务更新服务列表。