Kafka -- 架构、分区、副本

1、Kafka的架构:

1、producer:消息的生产者

2、consumer:消息的消费者

3、broker:kafka集群的服务者,一个broker就是一个节点,主要是负责处理消息的读、写的请求和存储消息。在kafka cluster中包含很多的broker。

4、topic:消息的队列/分类,就类似一张表,里面用来接收数据,数据的格式可以随意,但是一般都会统一。

5、zookeeper:负责存储元数据。

2、kafka的分区和副本:

1、每一个topic可以分成多个partition,每一个分区一张表数据,在Kafka底层中就是一个以log结尾的文件,分别存在对应的data目录下(通过配置文件指定的)

使用分区的原因是实现分布式,一个topic中的数据非常大的时候,如果只存在一个分区那么数据压力就比较大。

2、每个partition内部消息强有序,其中的每个消息都有一个序号叫offset(消费偏移量),再取数据的时候就会根据这个偏移量来取数据

3、一个partition只对应一个broker,一个broker可以管多个partition

4、消息不经过内存缓冲,是直接写入磁盘中。

5、根据时间策略删除数据,并不是数据消费完成就删除数据。默认是7天删除一次数据,删除的一整个文件,默认是1G左右生成一个文件。对于存储的时间可以通过修改配置文件来决定存储的日期。

6、producer自己决定往哪个partition写消息,可以是轮询的负载均衡,或者是基于hash的partition策略

轮询的负载均衡:数据数循环的向每一partition中写,数据比较均衡

基于hash的partition策略:数据会根据hash值据欸的那个进入哪个partition,可以根据相同的key进入同一个partition中。但是可能会造成一个问题:数据倾斜的问题。

7、consumer(消费者)自己维护消费到哪个offset,每一个用户都记录自己所消费的offset,这些数据都是默认存在--toppic:__consumer_offsetsL中

8、每一个consumer都有对应的group,一个组中可以是一个用户,也可以是多个用户。

group内是queue消费模型

各个consumer消费不同的partition,因此一个消息在group内只消费一次,这样能保证消费数据不重复

group间是publish-subscribe消费模型

各个group各自独立消费,互不影响,因此一个消息在被每个group消费一次

相关推荐
jj_ccwgw16 小时前
Kafka 集群开机自启动配置指南
后端·kafka
肠畔码农17 小时前
深入分布式事务内核:从 2PC/XA 到 Seata AT 模式的架构演进与权衡
分布式·架构
ai小陈18 小时前
PyTorch多GPU分布式训练实战:从单卡脚本迁移到DDP
服务器·人工智能·pytorch·分布式·深度学习·ai·gpu算力
伟大的大威19 小时前
三台 DGX Spark 部署 DeepSeek V4 Flash NVFP4:从零到可用教程
大数据·分布式·spark
JackSparrow41419 小时前
Kafka(七)集成Apache Avro+Apicurio Schema Registry以保障生产者与消费者的消息兼容性
java·中间件·rpc·kafka·apache·avro·schema-registry
阿里云云原生19 小时前
企业级实时数据平台建设:利用存算分离 Kafka 实现低成本、高可靠入湖
分布式·阿里云·云原生·kafka
国科安芯20 小时前
星载CANFD总线通信网络中抗辐射微控制器MCU的失效机理与容错设计研究
网络·人工智能·分布式·单片机·嵌入式硬件·架构·抗辐射加固
zcmodeltech20 小时前
污水处理设备沙盘模型控制系统设计与实现:多单元协同联动方案
网络·分布式·stm32·单片机·嵌入式硬件·交互
roman_日积跬步-终至千里21 小时前
Spark 资源配置与 Shuffle 故障排查生产手册
大数据·分布式·spark
roman_日积跬步-终至千里21 小时前
常驻 Spark 引擎的稳定性风险:从一次 Linkis 任务失败说起
大数据·分布式·spark