zookeeper-1
简述
在分布式系统应用中,由于跨越不同主机,各系统性能不一,发生 子系统状态改变、网络通信 等问题,由各系统分别处理显得冗余臃肿,且难以应付。 如:在典型主从架构中,主节点故障,从节点故障,网络通信故障,都需要分别作出选举判断处理,各子系统设计应该专注自身系统能,而整体管理交由管理员。
在单机系统中,各子系统以进程的方式运行在同一个操作系统中,操作系统充当了管理员的角色,调度进程,提供通信机制。 zookeeper则为分布式系统提供了解决方案,监控协调各子系统工作, 开放调用接口,供子系统使用。
基本概念
节点
zookeeper中用节点存储数据,节点以类似文件系统的树形方式组织,形成一个节点树。客户端(各个子系统)可通过zookeeper提供的api来创建、删除、修改节点。 节点有四种类型:
- 临时节点 当创建节点的客户端与zookeeper失去连接式,节点会自动删除。临时节点不能有子节点。利用其监测服务是否存活。
- 持久节点 与临时节点相反,只能由客户端调用delete删除。 可用来持久保存某些共用数据。
- 持久有序节点
- 临时有序节点 zookeeper会根据有序节点的创建顺序分配一个递增的序号,跟在节点名后。
监视
对于节点数据及子节点的变化,有两种处理方式: 一是客户端轮询,这样会造成服务端压力。 二是观察者模式,客户端向服务器注册感兴趣的事件,这里称作设置监视点(Watcher), 当事件变化时异步通知。 客户端通过对节点znode设置监视点来接收通知,每个监视点只能触发一次次,客户端必须在每次通知后重新设置。
版本
每个节点带有一个版本号信息,随着数据变化版本号自增,当多个客户端对同一个节点修改时,只有版本号一致才可修改成功,很容易利用其实现乐观锁。
会话
客户端与服务器通过tcp连接形成一个会话,zookeeper会不断发送ping请求来维持会话。客户端可以设置会话过期时间,会话过期时,临时节点被删除。当会话无法通信时,zookeeper会透明的将会话转移到另外一个服务器,并且保持之前会话的状态。
zookeeper也有单机模式和集群模式,集群模式采用了主从机制,其中有三种角色:
领导者(leader)
由众多跟随者投票选举产生,所有的写请求都交给领导者。 如果领导者挂掉,将会从跟随者种重新选举。
跟随者(follower)
负责投票选举,从领导者处复制同步数据,客户端可从此读数据
观察者(observer)
不参与投票,仅同步领导者的数据,提供给客户端读取,分担压力。
- 上一篇 获取知乎答题王题库与排位辅助
- 下一篇 java8-1