zookeeper和kafka的理解
Zookeeper是什么
ZooKeeper 翻译一下就是 “动物园管理员”,他是一些管动物的管理员,关于他的名字来源给你们找来了,可以看看。
关于“ZooKeeper”这个项目的名字,其实也有一段趣闻。在立项初期,考虑到之前内部很多项目都是使用动物的名字来命名的(例如著名的Pig项目),雅虎的工程师希望给这个项目也取一个动物的名字。时任研究院的首席科学家RaghuRamakrishnan开玩笑地说:“在这样下去,我们这儿就变成动物园了!”此话一出,大家纷纷表示就叫动物园管理员吧一一一因为各个以动物命名的分布式组件放在一起,雅虎的整个分布式系统看上去就像一个大型的动物园了,而Zookeeper正好要用来进行分布式环境的协调一一于是,Zookeeper的名字也就由此诞生了。
如果用官方的说法就是ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件.
ZooKeeper集群的角色
ZooKeeper提供服务时,是需要通过集群来实现,ZooKeeper集群中有一个leader,多个follower角色,其中leader提供写服务,follower提供读服务。
角色分类如下图所示:
系统模型如图所示:
下图这个就是我们实操最后会出现的结果:
-
[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是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。
实验总结
实验的目的就是在一台机子上创建文件,虽然在一台机子上创建的文件,但是其他有关联的两台机子也可以查看到消息,例如如下:
-
[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实验比较重要的点,要理解文件里的命令的含义。
参考图片:百度 ,文档
参考博客: zookeeper+kafka工作原理 - 张小爽 - 博客园 (cnblogs.com)
目录
</article>