Kafka

Kafka概念

https://kafka.apache.org/

Kafka是一种高吞吐量的分布式发布订阅消息系统,使用 Scala 语言编写。

producer通过网络发送消息到Kafka集群,然后consumer来进行消费,如下图:

服务端(brokers)和客户端(producer、consumer)之间通信通过TCP协议来完成。

broker

Kafka 服务器,负责消息存储和转发。

topic

消息类别,Kafka 按照 topic 来分类消息,发布到Kafka集群的每条消息都需要指定一个topic。

partition

topic 的分区,物理上的概念,一个 topic 可以包含多个 partition,topic 消息保存在各个 partition 上 ,每个partition内部消息是有序的。

在Kafka中,一个分区的数据只能被同一个消费组中的一个消费者消费‌。Kafka的设计保证了消息的顺序性(FIFO),即一个分区内的消息只能被同一个消费组中的一个消费者消费,以确保消息的顺序不被打乱。‌

offset

消息在日志中的位置,可以理解是消息在 partition 上的偏移量,也是代表该消息的唯一序号。

Producer

消息生产者,向Broker发送消息的客户端。

Consumer

消息消费者,从Broker读取消息的客户端。

Consumer Group

消费者分组,每个 Consumer 必须属于一个特定的Consumer Group,一条消息可以被多个不同的Consumer Group消费,但是一个Consumer Group中只能有一个Consumer能够消费该消息。

Zookeeper

保存着集群 broker、topic、partition 等 meta 数据;另外,还负责 broker 故障发现,partition leader 选举,负载均衡等功能。

Kafka消费者组和分区的对应关系

‌同一个消费组‌:

在一个消费组内,每个分区只能被该组中的一个消费者消费。例如,如果一个主题有3个分区,那么在一个消费组内最多可以有3个消费者,每个消费者负责消费一个分区。

‌不同消费组‌:

不同的消费组可以消费同一个分区的消息。例如,一个分区可以被消费组A的消费者消费,同时也可以被消费组B的消费者消费,但不会重复消费。

kafka为什么那么快?

磁盘 顺序读写

顺序IO

零拷贝机制

内存映射文件

零拷贝(避免了在内核空间用户空间之间的拷贝,从而提高了I/O速度)

分区架构和 批量操作

Kafka的集群架构采用了多分区技术,并行度高。生产者发送的消息先发送到一个队列,然后有sender线程批量发送给Kafka集群,这种设计提高了生产者的吞吐量。

PageCache利用 (页缓存技术)

Kafka利用了操作系统本身的pagecache,通过操作系统的pagecache,Kafka的读写操作基本上是基于内存的,读写速度得到了极大的提升。

相关推荐
talen_hx2961 天前
《kafka核心源码解读》学习笔记 Day 02
笔记·学习·kafka
lifallen1 天前
如何保证 Kafka 的消息顺序性?
java·大数据·分布式·kafka
真实的菜1 天前
Kafka 2.x vs 3.x,我为什么选择升级?
kafka
时光追逐者1 天前
分享四款开源且实用的 Kafka 管理工具
分布式·kafka·开源
Rick19931 天前
rabbitmq, rocketmq, kafka这三种消息如何分别保住可靠性,顺序性,以及应用场景?
kafka·rabbitmq·rocketmq
☞遠航☜1 天前
kafka快速上手
分布式·kafka·linq
工具罗某人1 天前
docker compose部署kafka集群搭建
docker·容器·kafka
Meme Buoy2 天前
13.6其他架构评估方法-中间件
中间件·架构
qq_297574672 天前
【Kafka 系列・入门第六篇】Kafka 集群部署(3 节点)+ 负载均衡配置
分布式·kafka·负载均衡