1.ZooKeeper的起源

1.什么是ZooKeeper

       ZooKeeper 是一个开源的分布式协调服务(基于k-v形式存储),用Java语言来开发的。由雅虎公司创建,是google chubby 的开源实现。ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集(由若干条指令组成的,完成一定功能的一个过程),并且以一系列简单易用的接口提供给用户使用。

      总结:它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

2.ZooKeeper主要解决什么问题

        ZooKeeper出现,主要解决:分布式进程锁的问题,协调访问服务的顺序性

3.ZooKeeper是如何起源的

       参考:1.分布式架构演进过程

      ①初期开发,单工程部署至单个服务器来提供服务;

      ②随着业务需求的变化,我们会将工程根据模块进行拆分;例如:我们将工程拆分为①用户模块  ②订单模块  ③商品模块

      ③随着访问量的增多。订单模块是非常重要的服务,需要大量的访问,为了提高后端吞吐量,则需要对订单模块进行大规模集群,可能是上千个节点

      ④对订单服务进行集群(比如100个集群)。如果用户模块调用订单模块,则需要维护100个地址,商品模块调用订单模块,也需要维护100个地址,模块越来越多,每个模块都得维护这100个地址,这100个地址主要还都是一样子的

      ⑤分布式架构,每个模块都部署在一台服务器上,多个模块之间是多进程模式,每个服务都是独立部署的,要解决资源共享的话,synchronized是无法解决的(synchronized用来解决一个进程中线程锁问题),所以ZooKeeper就出世了

      ⑥ZooKeeper的出现,主要完成:①协议地址的维护   ②负载均衡机制(100个集群,比如用户模块调用订单模块,具体应该调用到订单模块的哪个服务器,就不得而知了,使用ZooKeeper便能够帮我们解决这个问题)   ③服务动态上下线感知

      ⑦ZooKeeper单点问题,有问题后整个服务也会瘫痪,所以ZooKeeper也需要通过集群,来满足高可用

      ⑧为ZooKeeper做集群,此时又会出现ZooKeeper集群数据同步问题

      ⑨数据同步问题,满足CAP原则(数据一致性、高可用性、分区容错性,三者不可兼得)

你可能感兴趣的:(Zookeeper)