Kafka01:Kafka介绍:消息队列、什么是Kafka?、Kafka组件介绍

一、什么是消息队列

在学习Kafka之前我们先来看一下什么是消息队列
消息队列(Message Queue):可以简称为MQ

例如:Java中的Queue队列,也可以认为是一个消息队列

消息队列:顾名思义,消息+队列,其实就是保存消息的队列,属于消息传输过程中的容器。
消息队列主要提供生产、消费接口供外部调用,做数据的存储和读取。

二、消息队列分类

消息队列大致可以分为两种:点对点(P2P)、发布订阅(Pub/Sub)

1、共同点

针对数据的处理流程是一样的
消息生产者生产消息发送到queue中,然后消息消费者从queue中读取并且消费消息。

2、不同点

点对点(p2p)模型包含:消息队列(Queue)、发送者(Sender)、接收者(Receiver)
一个生产者生产的消息只有一个消费者(Consumer)(消息一旦被消费,就不在消息队列中)消费。例如QQ中的私聊,我发给你的消息只有你能看到,别人是看不到的

发布订阅(Pub/Sub)模型包含:消息队列(Queue)、主题(Topic)、发布者(Publisher)、订阅者(Subscriber)
每个消息可以有多个消费者,彼此互不影响。比如我发布一个微博:关注我的人都能够看到,或者QQ中的群聊,我在群里面发一条消息,群里面所有人都能看到

这就是这两种消息队列的区别

我们接下来要学习的Kafka这个消息队列是属于发布订阅模型的

三、什么是Kafka

Kafka 是一个 高吞吐量 的、 持久性 的、 分布式 发布订阅消息系统

1、高吞吐量:可以满足每秒百万级别消息的生产和消费。
为什么这么快?
难道Kafka的数据是放在内存里面的吗?
不是的,Kafka的数据还是放在磁盘里面的
主要是Kafka利用了磁盘顺序读写速度超过内存随机读写速度这个特性。
所以说它的吞吐量才这么高
2、持久性:有一套完善的消息存储机制,确保数据高效安全的持久化。
3、分布式:它是基于分布式的扩展、和容错机制;Kafka的数据都会复制到几台服务器上。当某一台机器故障失效时,生产者和消费者切换使用其它的机器。

Kafka的数据时存储是磁盘中的,为什么可以满足每秒百万级别消息的生产和消费?
这是一个面试题,其实就是我们刚才针对高吞吐量的解释:kafka利用了磁盘顺序读写速度超过内存随机读写速度这个特性。

Kafka主要应用在实时计算领域,可以和Flume、Spark、Flink等框架结合在一块使用

例如:我们使用Flume采集网站产生的日志数据,将数据写入到Kafka中,然后通过Spark或者Flink从Kafka中消费数据进行计算,这其实是一个典型的实时计算案例的架构

四、Kafka组件介绍

接下来我们来分析一下Kafka中的组件,加深对kafka的理解

看这个图

在这里插入图片描述
先看中间的Kafka Cluster
这个Kafka集群内有两个节点,这些节点在这里我们称之为Broker
Broker:消息的代理,Kafka集群中的一个节点称为一个broker

在Kafka中有Topic的概念
Topic:称为主题,Kafka处理的消息的不同分类(是一个逻辑概念)。
如果把Kafka认为是一个数据库的话,那么Kafka中的Topic就可以认为是一张表
不同的topic中存储不同业务类型的数据,方便使用

在Topic内部有partition的概念
Partition:是Topic物理上的分组,一个Topic会被分为1个或者多个partition(分区),分区个数是在创建topic的时候指定。每个topic都是有分区的,至少1个。
注意:这里面针对partition其实还有副本的概念,主要是为了提供数据的容错性,我们可以在创建Topic的时候指定partition的副本因子是几个。
在这里面副本因子其实就是2了,其中一个是Leader,另一个是真正的副本
Leader中的这个partition负责接收用户的读写请求,副本partition负责从Leader里面的partiton中同步数据,这样的话,如果后期leader对应的节点宕机了,副本可以切换为leader顶上来。

在partition内部还有一个message的概念
Message:我们称之为消息,代表的就是一条数据,它是通信的基本单位,每个消息都属于一个partition。

在这里总结一下

Broker>Topic>Partition>Message

接下来还有两个组件,看图中的最左边和最右边
Producer:消息和数据的生产者,向Kafka的topic生产数据。
Consumer:消息和数据的消费者,从kafka的topic中消费数据。
这里的消费者可以有多个,每个消费者可以消费到相同的数据

最后还有一个Zookeeper服务,Kafka的运行是需要依赖于Zookeeper的,Zookeeper负责协调Kafka集群的正常运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一个有趣的人Zz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值