Kafka消息模型与工作原理详解

1.1、概述

        Kafka其优良的性能使得其作为消息中间件具有得天独厚的优势,kafka是一个高吞吐的分布式消息系统,生产者生产数据,消费者消费数据。具体可以参考分布式流处理的王者之Kafka简介这篇博文。

1.2、消息系统

        一个消息系统负责将数据从一个应用传递到另外一个应用,应用只需关注于数据,无需关注数据在两个或多个应用间是如何传递的。分布式消息传递基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。有两种主要的消息传递模式:点对点传递模式、发布 – 订阅模式。大部分的消息系统选用发布-订阅模式。Kafka 就是一种发布 – 订阅模式。

1.2.1、点对点消息传递模式

        在点对点消息系统中,消息持久化到一个队列中。此时,将有一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次。当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。该模式即使有多个消费者同时消费数据,也能保证数据处理的顺序。点对点模式通常是基于拉取或者轮询的消息传送模型,队列中的消息由消费者主动的去拉取消息进行消费。点对点模型的的优点是消费者拉取消息的频率可以由自己控制。但是消息队列是否有消息需要消费,在消费者端无法感知,所以在消费者端需要额外的线程去监控。这种架构描述示意图如下:
点对点

1.2.2、发布-订阅消息传递模式

        在发布 – 订阅消息系统中,消息被持久化到一个 topic 中。与点对点消息系统不同的是,消费者可以订阅一个或多个 topic,消费者可以消费该 topic 中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布 – 订阅消息系统中,消息的生产者称为发布者,消费者称为订阅者。发布订阅模式是一个基于消息推送的消息传送模型,改模型可以有多种不同的订阅者。生产者将消息放入消息队列后,队列会将消息推送给订阅过该类消息的消费者。由于是消费者被动接收推送,所以无需感知消息队列是否有待消费的消息。该模式的示例图如下:
发布订阅

1.3、Kafka的消息模型

        Kafka中Producer为生产者,负责产生消息。每条消息都有一个主题Topic,生产者发送的消息进入对应的Topic,然后由消费者Consumer对Topic中的消息进行消费。消息模型架构如下所示:

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

giser@2011

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

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

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

打赏作者

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

抵扣说明:

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

余额充值