kafka消息队列入门一组件介绍

Kafka是一个高吞吐、持久性和分布式的发布订阅消息系统,常用于实时计算。文章介绍了消息队列的基本概念,包括点对点和发布订阅两种模式,接着详细阐述了Kafka的特点和组件,如Broker、Topic、Partition以及Message。Kafka的高吞吐量得益于磁盘顺序读写,而其持久性和分布式特性则保证了数据的安全和扩展性。

(一)消息队列

消息队列(Message Queue):可以简称为MQ
例如:Java中的Queue队列,也可以认为是一个消息队列
消息队列:顾名思义,消息+队列,其实就是保存消息的队列,属于消息传输过程中的容器。
消息队列主要提供生产、消费接口供外部调用,做数据的存储和读取

(二)消息队列分类

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

  • 共同点:
    针对数据的处理流程是一样的消息生产者生产消息发送到queue中,然后消息消费者从queue中读取并且消费消息。
  • 不同点:
    点对点(p2p)模型包含:消息队列(Queue)、发送者(Sender)、接收者(Receiver)
    一个生产者生产的消息只有一个消费者(Consumer)(消息一旦被消费,就不在消息队列中)消费。
    例如QQ中的私聊,我发给你的消息只有你能看到,别人是看不到的
    发布订阅(Pub/Sub)模型包含:消息队列(Queue)、主题(Topic)、发布者(Publisher)、订阅者
    (Subscriber)
    每个消息可以有多个消费者,彼此互不影响。比如我发布一个微博:关注我的人都能够看到,或者QQ中的群聊,我在群里面发一条消息,群里面所有人都能看到。
    这就是这两种消息队列的区别

(三)什么是kafka

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

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

Kafka的数据时存储是磁盘中的,为什么可以满足每秒百万级别消息的生产和消费?
这是一个面试题,其实就是我们刚才针对高吞吐量的解释:kafka利用了磁盘顺序读写速度超过内存随机读写速度这个特性。
Kafka主要应用在实时计算领域,可以和Flume、Spark、Flink等框架结合在一块使用

(四)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集群的正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值