一、ZooKeeper总体介绍
1.1、什么是zookeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协同服务+存储系统,同时是一款世界级的优秀开源产品,在大数据生态系统中Hadoop、Storm、HBase、Spark、Flink、Kafka随处都是ZooKeeper的应用场景。特别是在粗粒度分布式锁、分布式选主、主备高可用切换等不需要高TPS的场景下有不可替代的作用。
1.2、ZooKeeper应用场景
很多分布式协调服务都可以用ZooKeeper来做,其中典型应用场景如下:1、配置管理:比如微服务系统,各个独立服务都要使用集中化的配置管理,这个时候就需要ZooKeeper。2、组成员管理:比如上面讲到的HBase其实就是用来做集群的组成员管理。3、各种分布式锁:ZooKeeper适用于存储和协同相关的关键数据,不适合用于大数据量存储。如果要存KV或者大量的业务数据,还是要用数据库或者其他NoSql来做。4、注册中心:大多数中小型公司都用zk来做注册中心
至于为什么ZooKeeper不适合大数据量存储呢?主要有以下两个原因:1、设计方面:ZooKeeper需要把所有的数据(它的datatree)加载到内存中。这就决定了ZooKeeper存储的数据量受内存的限制。一般的数据库系统例如MySQL可以存储大于内存的数据,这是因为InnoDB是基于B-Tree的存储引擎(基于内存+磁盘一致性)。2、工程方面:ZooKeeper的设计目标是为协同服务提供数据存储,数据的高可用性和性能是最重要的系统指标,处理大数量不是ZooKeeper的首要目标。因此,ZooKeeper不会对大数量存储做太多工程上的优化。
二.ZooKeeper源码环境
2.1、ZooKeeper版本选择
在了解任何技术源码的时候,最重要的两件事要搞清楚:1、版本如何选择2、源码环境准备zookeeper的大版本:1、zookeeper-3.4.x企业最常用,大数据技术组件最常用2、zookeeper-3.5.x3、zookeeper-3.6.x最总结论:zookeeper-3.4.14.tar.gz,安装包就是源码包,ZooKeeper-3.5以上,源码和安装包就分开了。
2.2、ZooKeeper源码环境准备
1、准备一个IDE:IDEA2、从