ZooKeeper 翻译一下就是 “动物园管理员”,他是一些管动物的管理员,关于他的名字来源给你们找来了,可以看看。

关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家RaghuRamakrishnan开玩笑地说:“在这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而Zookeeper正好要用来进行分布式环境的协调一一于是,Zookeeper的名字也就由此诞生了。

        如果用官方的说法就是ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件.

ZooKeeper集群的角色
        ZooKeeper提供服务时,是需要通过集群来实现,ZooKeeper集群中有一个leader,多个follower角色,其中leader提供写服务,follower提供读服务。

角色分类如下图所示:

kafka连接带认证的zookeeper kafka的zookeeper是什么_分布式应用

 

系统模型如图所示:

kafka连接带认证的zookeeper kafka的zookeeper是什么_kafka_02

 

下图这个就是我们实操最后会出现的结果:

[root@zookeeper1 bin]# ./zkServer.sh status
 ZooKeeper JMX enabled by default
 Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
 Mode: follower
 [root@zookeeper2 bin]# ./zkServer.sh status
 ZooKeeper JMX enabled by default
 Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
 Mode: leader
 [root@zookeeper3 bin]# ./zkServer.sh status
 ZooKeeper JMX enabled by default
 Using config: /root/zookeeper-3.4.14/bin/../conf/zoo.cfg
 Mode: follower


 再简单说一下我理解的zookeeper Leader的选举
        就好比:我们每个参加的人发出一个投票投给自己,然后我们接受来自每个人的投票,统计一下,看一下是否是有效的投票,针对每一个投票,我们都需要将别人的投票和自己的投票进行PK,如果最后票数相同的话,谁先发起的投票就把leader给谁。

Zookeeper的作用
1.Zookeeper实现了高性能,高可靠性,和有序的访问。

2.加强了集群稳定性。

 3.等等。

Kafka是什么
Kafka是分布式发布-订阅消息系统。

kafka集群存储的消息是以topic为类别记录的

Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。

kafka连接带认证的zookeeper kafka的zookeeper是什么_分布式应用_03

 

实验总结
        实验的目的就是在一台机子上创建文件,虽然在一台机子上创建的文件,但是其他有关联的两台机子也可以查看到消息,例如如下:

[root@zookeeper1 bin]#  ./kafka-topics.sh --create --zookeeper 192.168.200.11:2181 --replication-factor 1 --partitions 1 --topic test
 Created topic "test".
 [root@zookeeper2 bin]# ./kafka-topics.sh  --list --zookeeper 192.168.200.12:2181
 Test
 [root@zookeeper3 bin]# ./kafka-topics.sh  --list --zookeeper 192.168.200.13:2181
 test


我们在做的时候每一个节点进入 kafka_2.11-1.1.1/config目录下,编辑server.properties 文件。

我觉得这个是这次做kafka实验比较重要的点,要理解文件里的命令的含义。