浅谈zookeeper

  • 什么是zookeeper?
  • zookeeper节点有哪些特性,什么时候使用什么特性的节点?
  • Leader 角色
  • Follower 角色
  • Observer 角色
  • 总结:以上就是zookeeper的节点的特性的特点,参考这些特性在不同需求上可以选择不同的节点。
  • 使用zookeeper实现服务注册中心,原理是什么?用到了zk的哪些特性?


什么是zookeeper?

zookeeper是一种高可靠的分布式协调组件,主要用来解决分布式一致性和分布式锁的问题。

zookeeper节点有哪些特性,什么时候使用什么特性的节点?

首先讲到zookeeper节点的相关知识,就一定要知道zookeeper当时的一些设计思想,他的创造是为了解决哪些问题?

  1. 如何防止单点故障?
    常见的方法我们都会做集群来处理;
  2. 对于集群需要满足哪些功能?
    2.1 集群中的角色分类,最典型集群模式:Master/Slave 模式(主备模式)。在这种模式中,Master节点是负责写的操作,而Slave节点服务器通过异步复制的方式获取 Master 服务器最新的数据提供读服务,这样子可以将事务的操作放在一台服务器上便于问题的简单化,而对于zookeeper没有选择传统的 Master/Slave 概念,而是引入了Leader、Follower 和 Observer三种角色。
Leader 角色

Leader服务器是整个zookpeer集群的核心所在,它既可以提供读操作也可以提供写操作,他的任务有两种:

  1. 对于请求的唯一调度和处理者,可以保证并发请求的顺序性
  2. 对于集群内部各个服务的统一调度者
Follower 角色

Follower角色主要:

  1. 处理非事务请求和请求转发给Leader角色
  2. 参与事务请求的Proposal的投票(只有当半数以上的服务器通过才能通知Leader服务器进行事务的commit操作,所以Leader是方案的提出者,Follower则是投票决定者)
  3. 参与Leader的选举操作。
Observer 角色

只提供非事物请求服务,通常在于不影响集群事物处理能力的前提下提升集群非事物处理的能力,不参与任何的投票

总结:以上就是zookeeper的节点的特性的特点,参考这些特性在不同需求上可以选择不同的节点。

使用zookeeper实现服务注册中心,原理是什么?用到了zk的哪些特性?

原理:zookeeper相当于一个大型的分布式文件系统,每当一个服务启动后会将自己的服务名称IP等信息注册到zookeeper的ZNode上,服务调用者第一次请求过来的时候会返回集群的IP地址的集合并注册一个服务的监听,然后在前端通过负载均衡算法(随机,轮询,加权轮询,最小连接数,hash)将对应的请求发到对应的设备上,而zookeeper和服务提供者之间会存在一个心跳机制,定时发送一个数据包来检查该服务器的状态,当接收不到数据包时,则会将该设备注册的相对应的服务进行删除,然后会push到服务调用者将对应的ip进行删除防止后续请求转发到已经宕掉的服务器上。
特性:数据节点持久化,动态感知服务上下线的特性,分布式一致性特性。