1. 协调服务的由来
在分布式架构下,当服务越来越多,规模越来越大时,对应的机器数量也越来越大,单靠人工来管理和维护服务及地址的配置地址信息会越来越困难,单点故障的问题也开始凸显出来,一旦服务路由或者负载均衡服务器宕机,依赖他的所有服务均将失效。
此时,需要一个能够动态注册服务和获取服务的地方,来统一管理服务名称和所对应的服务地址列表信息,我们称之为服务配置中心。服务提供者在启动时,会将其提供的服务名称和服务器地址注册到服务配置中心;服务消费者通过服务配置中心来获取需要调用服务的机器地址列表。通过设定的负载均衡算法来选择其中一台服务器进行调用。当提供服务的服务器宕机或者下线时,相应的机器需要从服务配置中心移除,并通知相应的服务消费者去更新服务地址列表,否则服务消费者就有可能因为调用了已经失效的服务而发生错误。
在这个过程中,服务消费者只有在第一次调用服务时需要查询一下服务配置中心,然后将查询到的结果在本地缓存起来,后面的调用直接使用本地缓存的服务地址列表信息,而不需要重新查询一次服务配置中心来获取相应的服务地址列表,除非机器上下线才会触发重新刷新服务地址列表。
2. 什么是 zookeeper
zookeeper 是一个开源的分布式协调服务,由雅虎公司创建,是 google chubby 的开源实现。zookeeper 的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集(由若干条指令组成的,完成一定功能的一个过程),并且以一系列简单易用的