一.Zookeeper介绍
Zookeeper是一个高性能,分布式的,开源分布式应用协调服务。它提供了简单原始的功能,分布式应用可以基于它实现更高级的服(如Dubbo基于Zookeeper),比如,配置管理,集群管理,名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服在端跑在java上,提供java和C的客户端API。
两个重要的问题:
什么是分布式? 什么是协调服务?
二.分布系统
分布式系统对外来说就是一个整体,外部并不知道内部的组成
三.分布式系统的问题
四.协调者
五.分布式系统协调
● 协调: 多个节点一起完成的一个动作
● 举例:
o 集群成员管理:集群中有多少个节点,节点中有多少台机器,(分布式系统中需要自动的发现成员)
o 锁:多台服务器间的分布式锁,分布式系统中必须要用锁来保证数据一致性
o 选主
o 同步:数据一致性,数据发生变化后要同步到各个机器,数据的版本要一致
o 发布/订阅
六.数据模型
七.典型应用场景
1.数据订阅/发布
2.负载均衡
3.命名服务
4.分布式协调/通知
5.集群管理
例如:Solr,Dubbo,Kafka 集群需要Zookeeper来进行管理
注:集群中的机器数量是随时发生变化的,可以随时加入机器,也可能宕机了减少机器
6.Master选举
7.分布式锁