鸡汤:
某些你认为简单的事,如果不是你肤浅的理解,那么就是你已经深入的了解了它。
自己会的东西,就简单。
我之前看zookeeper,只能看到它与dubbo的配合使用,也就是用zk的命名服务,肤浅到不行。
zookeeper的主要功能:(我所能看见的)
1、命名服务
原理是根据zk的文件系统也就是类似于Linux的文件系统。
2、配置管理
程序总是需要配置文件的,如果将程序分布式到多个系统中,但是需要同一个配置文件,那么就可以使用zk的配置文件管理。可以设置程序对文件进行监听(watcher),一旦该配置文件发生变化,就可以通知到相应的程序,让程序进行相应的处理。
3、集群管理
管理机器的上下线,master的选举等。
4、分布式锁
进程内加锁,很方便。但是进程间如何使用锁呢?这时就需要分布式锁了。可以协调系统间的锁,比如两个系统,需要并发修改同一个资源,那么此时分布式锁就排上用场了。
5、watcher机制的原理
待补充。。。
服务器的角色
1、Leader 整个zookeeper 集群的核心
1.1、事务请求的唯一调度和处理者,保证集群事务处理的顺序性。
1.2、集群内部各服务器的调度者。
2、Follower 跟班
2.1、处理客户端非事务请求,转发事务请求给Leader服务器。
2.2、参与事务请求Proposal的投票。
2.3、参与Leader的选举。
3、Observer 观察者
类似Follower,区别是 不参与选举,即不参与投票且不能成为Leader。仅负责同步Leader的状态,并且处理读请求,作负载用。