1 zookeeper介绍
1 zookeeper功能介绍
1.1 场景:应用程序动态补位(高可用)
多个应用服务程序的运行状况注册,监听,调度:
- 多个采集服务程序并行
- 定期上报第三方自己的状态信息;
- 定期监控第三方的状态;
- 一旦发现某个服务下线了;就选出一台承担该下线的服务器的工作;
如图:
1、网站侧每日产生日志文件,推荐系统有三台数据采集服务器,采集日志;
2、三台数据采集服务器server01,server02,server03,定期向zookeeper集群汇报自己的运行状态(正常、宕机);
3、当server02宕机后,zookeeper集群感知到server02宕机;
4、zookeeper集群会让server03替代server02的采集工作;
1.2 场景:服务程序的高可用(多机热备)
- 多个服务器并行运行
- 每个服务器都在第三方注册自己状态信息
- 第三方监听各个服务器状态信息;并分配主从服务状态标志;
- 客户端先读取第三方的状态信息,找到主服务的ip地址,进行访问;
- 当主服务宕机了,第三方从新选举新的主服务,更新状态;
- 客户机访问第三方信息,会获取到新的主服务的ip地址,取主服务进行访问;
1、 三个服务启动,向zookeeper集群汇报自己状态,形成状态列表;
2、 选举可用服务server02
3、 客户端请求连接,可以获取server02信息
4、 客户端连接server02,进行操作
5、 当server02宕机,zookeeper集群感知到server02宕机更新状态列表
6、 选举可用服务server01
7、 客户端请求连接,可以获取server01信息
8、 客户端连接server01,进行操作
1.3 zookeeper功能特点总结
A、zookeeper是为别的分布式程序服务的
B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)
C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务……
D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:
1、 管理(存储,读取)用户程序提交的数据;
2、 并为用户程序提供数据节点监听服务;
Zookeeper集群的角色:
Leader 和 follower (Observer)
只要集群中有半数以上节点存活,集群就能提供服务