0x00 教程内容
- Kafka概述
- Kafka的架构
- Kafka的容错性测试
0x01 Kafka概述
1. Kafka概述
Apache Kafka® is a distributed streaming platform. What exactly does that mean?
A streaming platform has three key capabilities:
Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
Store streams of records in a fault-tolerant durable way.
Process streams of records as they occur.
来源于官网:http://kafka.apache.org/10/documentation.html#introduction
2. Kafka的作用
a. Kafka类似于消息队列或者企业消息系统
竟然是消息队列,消息系统,那么就会有生产者与消费者。
b. 如何理解生产者、消费者?
小故事:
包子师傅:生产者
你:消费者
包子:数据流,消息
c. 场景分析:
理想情况下,包子师傅生产一个包子,你就吃一个包子。
但现实情况下,生产一个,吃一个,肯定是来不及,往往没有这么完美的。
场景一:吃到某一个的时候,可能就吃不下去了,就相当于我们的消息系统里面的卡顿了,可以理解为我们的机器故障了。此时,师傅还在继续生产包子,那么多余的包子就丢失了。
场景二:生产包子的速度太多,你来不及吃,那么馒头也就丢失了。
问题:如何做到包子不丢失?
解决:拿个篮子来装着,等我们需要吃的时候,再向篮子里面拿即可。
问题:如果篮子满了,那么多余的包子就丢失了
解决:多准备几个篮子来装着
类比概念:我们的Kafka相当于篮子,起到一个缓冲的作用。
d. 三大特点:
1、发布订阅消息系统
2、以容错、持久的方式存储记录流
3、可以以流的方式消费信息
0x02 Kafka的架构
1. Kafka相关概念
a. producer:生产者,包子师傅
b. consumer:消费者,吃包子的你
c. broker:Kafka,篮子
d. topic:主题,即给包子打的标签,用来区分谁吃哪个包子。不是每个包子都可以吃的,我们可以选择性地吃某个人生产的包子。
2. 图解Kafka概念之Topic
a. Kafka可以作为一个集群运行在一个或多个可跨多个数据中心的服务器上,也就是说,Kafka可以以单机或者集群的方式出现。我们在创建Topic的时候,可以设置分区,比如三台机器设置三个分区,那么每个分区就分别落在三台机器上,分别是Partition 0、1、2,消费者也可以选择特定的分区去消费。
b. 由上图可知,每个分区都是一个有序的记录序列,而且它是不可变的。
c. 队列中,有一个叫偏移量(offset)的概念,是用来记录我们的消费位置的。消费者可以控制它的位置,所以可以按照自己喜欢的任何顺序消费信息。例如,消费者可以重置为较旧的偏移量以重新处理过去的数据,或者跳到最近的记录并从“现在”开始消费。
d. 这些功能组合意味着Kafka消费者不需要消耗什么性能,对集群或者其他消费者没有多大的影响。
e. 日志中的分区有多种用途。首先,当日志大小超过了单台服务器的限制,Kafka允许日志进行扩展。每个单独的分区都必须受限于主机的文件限制,不过一个主题可能有多个分区,因此可以处理无限量的数据。其次,它们充当了并行性的单位,关于此点,请参考官网。
0x03 Kafka的容错性测试
1. 实践步骤
a. 分别启动三个Kafka,前提是要先部署好Zookeeper集群
b. 创建一个topic,分区为3,副本系数也是3
c. 查看此topic的详细信息,并杀掉其中的主节点,和一台从节点
d. 再查看此topic的详细信息
2. 效果展示
a. 不影响使用,仍然可以发布订阅消息。
0xFF 总结
- Kafka的安装与部署Windows版本,请参考教程:Kafka的安装及发布订阅消息系统(windows)
- Kafka的安装与部署Linux版本,请参考教程:复制粘贴玩大数据之安装与配置Kafka集群