Kakfka的理解及其特点

本文深入解析Kafka的特点,包括其生产者、Broker、Topic、Partition和Consumer的角色,以及依赖Zookeeper的集群管理。Kafka通过顺序写磁盘、分区策略和消息结构优化性能,提供7天的默认存储策略。其解耦、异步和削峰的能力使其成为高效的消息中间件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章链接:https://zhuanlan.zhihu.com/p/68052232

本文主要总结kafka的各项特点,用于辅助对该消息中间件的理解。


图中各项元素的含义:

Producer生产者,可以有多个生产者,作为消息的来源。

Broker实例,即kafka的实例,每一个Broker可以看作一个服务器,或者一个虚拟机,或者伪集群中的一个。

Topic主题,为消息的分类,可以有多个消息主题。

Partition分区,作用是负载,提高kafka的吞吐量,同一个Topic在不同的分区的数据是不一样的。

Consumer消费者,消息的消费方,是消息的出口

Zookeeper,kafkaj集群需要依靠zookeeper保存集群的元消息,保证系统的可用性。

 

kafka的设计核心是为了解决M个生产者N个消费者,则需要拉M*N条线,并且接口和协议均不相同,因此使用消息中间件来解耦消费者和生产者

特点:

  • 生产者生产的数据首先写入leader,follower再进行同步,生产者不会主动写入follower
  • kafka将数据写入磁盘,独立开辟一片区域,顺序存储,用于弥补IO时间消耗
  • Partition在服务器上的实例就是一个一个的文件夹,内容为i.ndex、.log和.timeindex .log为存储message的地方,其余两个为索引文件
  • Message结构为 offset、消息大小和消息体,其中offset可以确定message在partition中的位置
  • 存储策略默认为7天,过期会被删除
  • 把每个partition比作一碗饭,每个consumer比作一个人。可以出现一个人吃同时多碗饭的情况,不能出现多个人吃一碗饭的情况,如果人比多饭碗,那就得有人饿着
  • kafka的优势,解耦、异步、削峰
  • 解耦是指消费者和生产者脱离直接关联,由于两者对数据的需求、处理速度可能不同,因此需要kafka作为中间件来解耦,类比快递中的自提柜
  • 异步是指生产者不用等待消费者的动作,只需要将生产的数据放入kafka,无需管消费者的消费时间
  • 削峰,生产者多的时候,数据量较大 topic较多,而消费者只需从中间件提取所需,而不需要管生产者是否同时生产,同样对于生产者,无需关系消费者是否有时间消费数据,只需将生产的数据放入kafka即可
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值