0
点赞
收藏
分享

微信扫一扫

分布式消息队列Kafka理论(浅显易懂)



教程目录


  • ​​0x00 教程内容​​
  • ​​0x01 Kafka概述​​

  • ​​1. Kafka概述​​
  • ​​2. Kafka的作用​​

  • ​​0x02 Kafka的架构​​

  • ​​1. Kafka相关概念​​
  • ​​2. 图解Kafka概念之Topic​​

  • ​​0x03 Kafka的容错性测试​​

  • ​​1. 实践步骤​​
  • ​​2. 效果展示​​

  • ​​0xFF 总结​​


0x00 教程内容


  1. Kafka概述
  2. Kafka的架构
  3. 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.

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

分布式消息队列Kafka理论(浅显易懂)_发布订阅

a. Kafka可以作为一个集群运行在一个或多个可跨多个数据中心的服务器上,也就是说,Kafka可以以单机或者集群的方式出现。我们在创建Topic的时候,可以设置分区,比如三台机器设置三个分区,那么每个分区就分别落在三台机器上,分别是Partition 0、1、2,消费者也可以选择特定的分区去消费。

b. 由上图可知,每个分区都是一个有序的记录序列,而且它是不可变的。

分布式消息队列Kafka理论(浅显易懂)_kafka_02

c. 队列中,有一个叫偏移量(offset)的概念,是用来记录我们的消费位置的。消费者可以控制它的位置,所以可以按照自己喜欢的任何顺序消费信息。例如,消费者可以重置为较旧的偏移量以重新处理过去的数据,或者跳到最近的记录并从“现在”开始消费。

d. 这些功能组合意味着Kafka消费者不需要消耗什么性能,对集群或者其他消费者没有多大的影响。

e. 日志中的分区有多种用途。首先,当日志大小超过了单台服务器的限制,Kafka允许日志进行扩展。每个单独的分区都必须受限于主机的文件限制,不过一个主题可能有多个分区,因此可以处理无限量的数据。其次,它们充当了并行性的单位,关于此点,请参考官网。

0x03 Kafka的容错性测试

1. 实践步骤

a. 分别启动三个Kafka,前提是要先部署好Zookeeper集群

b. 创建一个topic,分区为3,副本系数也是3

c. 查看此topic的详细信息,并杀掉其中的主节点,和一台从节点

d. 再查看此topic的详细信息

2. 效果展示

a. 不影响使用,仍然可以发布订阅消息。

0xFF 总结


  1. Kafka的安装与部署Windows版本,请参考教程:​​Kafka的安装及发布订阅消息系统(windows)​​
  2. Kafka的安装与部署Linux版本,请参考教程:​​复制粘贴玩大数据之安装与配置Kafka集群​​

作者简介:​​邵奈一​​

大学大数据讲师、大学市场洞察者、专栏编辑

公众号、微博:​​邵奈一​​

​​邵奈一的技术博客导航​​



举报

相关推荐

0 条评论