3.1、初识 Kafka 的逻辑结构和物理结构

本文深入探讨Kafka集群的逻辑与物理结构,解释了多服务组成的集群如何存储topic,及topic如何被多个consumer消费的问题。介绍了Kafka的消费者组概念,以及broker、partition、segment的物理结构。

·前言

如果你有了解过 ActiveMQ 你会很直接的想到 topic 和 queue,对于Kafka 而言,也有着不完全相同,但是非常类似的概念,这就是本文要介绍的内容。

·Kafka集群 逻辑结构

从逻辑结构上来说,Kafka 可以简单的分为 producer、consumer、consumer group、Kafka集群、topics 。其中生产者负责将 record 放入到 topics,消费者从 topics 中拉取消息。

在这里插入图片描述

延伸出的几个问题
Kafka 集群如果由多个 Kafka 服务组成,如何存储 topic?

在一个 Kafka集群中,producer 生产一条消息,然后推送到 某一个 topic 中,尽管集群中可能有多台机器组成,从而造成每一个 Kafka 服务中都有这个 topic,但是,一条消息只会保存到其中一个 Kafka 服务的 topic 中。
那么有人可能会问了,如果这个服务挂了怎么办,消息不就丢了吗?Kafka 支持主备模式,从服务可以备份主服务中的记录,但是不会对外提供服务,除非主服务挂了,从服务会取而代之。

一个 topic 可以被多个consumer 消费吗?

其实 Kafka 的消费者有一个消费者组的概念,同一个组内可以有多个 consumer,当然也可以只有一个consumer,以组为单位,一个topic 允许多个组进行消费,但是每一个组只允许其中一个消费者进行消费,即如果你想实现广播的功能,可以创建多个consumer组,如果只是单播,则使用一个组即可。

·Kafka 相关 物理结构

物理结构无外乎机器、存储文件这些。
在Kafka 中有这么几个概念,broker、partition、segment

broker 表示服务器

broker 表示物理的机器,比如一台或者多台服务器

partiton 表示一个文件夹

上面有说到,Kafka 集群中的每一个服务都会有一个同名的 topic,它们共同对外提供这个 topic 的存储和消费服务,而此时每一个服务上同名 topic 保存的记录总和才是这个 topic的所有的记录,那么在物理层面,这个其实被叫做 partition,每一个partition 都是一个文件夹,该文件夹内部保存具体的数据。
需要说明的是,默认一个 Kafka 服务只包含一个 partition,可以通过配置增加个数。

在这里插入图片描述

partiton 由一个或多个 segment 组成

segment 包含具体的记录数据文件和索引文件,是最小的物理存储实体。
无论是读或者写,每次都只允许操作一个 segment。

延伸思考

所以综合上面的信息来看,我们可以得到下面的对应关系。
即,一个机器可以启动多个 Kafka 服务;
一个Kafka 服务可以配置多个 partition;
一个 partition 可以包含多个 segment
在这里插入图片描述

·参考文档

[1]、https://www.cnblogs.com/likehua/p/3999538.html
[2]、《分布式消息中间件实践》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值