相信很多朋友很早就听说过zookeeper,也用过他,比如在使用dubbo或者kafka集群时,但是我们当时只是知道dubbo是为了实现业务接口分布式部署,kafka集群是为了实现消息的发布和订阅,但是zookeeper干嘛的却总是有些模糊;
下面就用最直白的话语说一下他到底是干嘛的:
他就是用来协调这些分布式应用的,它提供了一系列方便分布式协调的接口——分布式独享锁、选举、队列的等接口
简单的例子:假设我们有20个搜索引擎的服务器(每个负责总索引中的一部分的搜索任务)和一个总服务器(负责向这20个搜索引擎的服务器发出搜索请求并合并结果集),一个备用的总服务器(负责当总服务器宕机时替换总服务器),一个web的cgi(向总服务器发出搜索请求)。搜索引擎的服务器中的15个服务器提供搜索服务,5个服务器正在生成索引。这20个搜索引擎的服务器经常要让正在提供搜索服务的服务器停止提供服务开始生成索引,或生成索引的服务器已经把索引生成完成可以提供搜索服务了。使用Zookeeper可以保证总服务器自动感知有多少提供搜索引擎的服务器并向这些服务器发出搜索请求,当总服务器宕机时自动启用备用的总服务器。