kafka初识

1、kafka:高吞吐的分布式消息系统(消息队列)

2、消息队列应用场景

(1)系统之间解耦合 queue模型 publish-subscribe模型   

(2)峰值压力缓冲   

(3)异步通信

3、kafka架构

 

 producer:消息生存者

consumer:消息消费者

broker:kafka集群的server, 负责处理消息读、写请求,存储消息

topic:消息队列/分类  (相当于数据库里面的表。一个topic代表一类消息,没有结构,里面存的都是kv结构)

Queue里面有生产者消费者模型

broker就是代理,在kafka cluster这一层这里,其实里面是有很多个broker

topic就相当于queue

图里没有画其实还有zookeeper,这个架构里面有些元信息是存在zookeeper上面的,整个集群的管理也和zookeeper有很大的关系

 

4、 kafka的消息存储和生产消费模型

一个topic分成多个partition

每个partition内部消息强有序,其中的每个消息都有一个序号叫offset

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

消息不经过内存缓冲,直接写入文件 。

根据时间策略删除,而不是消费完就删除 。

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

5、topic

kafka里面的消息是有topic来组织的,简单的我们可以想象为一个队列,一个队列就是一个topic,然后它把每个topic又分为很多个partition,这个是为了做并行的,在每个partition里面是有序的,相当于有序的队列,其中每个消息都有个序号,比如0到12,从前面读往后面写,

一个partition对应一个broker,一个broker可以管多个partition,比如说,topic有6个partition,有两个broker,那每个broker就管3个partition

这个partition可以很简单想象为一个文件,当数据发过来的时候它就往这个partition上面append,追加就行,kafka和很多消息系统不一样,很多消息系统是消费完了我就把它删掉,而kafka是根据时间策略删除,而不是消费完就删除,在kafka里面没有一个消费完这么个概念,只有过期这样一个概念,这个模型带来了很多个好处,这个我们后面再讨论一下

这里producer自己决定往哪个partition里面去写,这里有一些的策略,譬如如果hash就不用多个partition之间去join数据了

6、消费模型

consumer自己维护消费到哪个offset

每个consumer都有对应的group

group内是queue消费模型, 各个consumer消费不同的partition ,因此一个消息在group内只消费一次

group间是publish-subscribe消费模型, 各个group各自独立消费,互不影响 因此一个消息在被每个group消费一次

7、kafka有哪些特点

消息系统的特点:生存者消费者模型,FIFO

高性能:单节点支持上千个客户端,百MB/s吞吐

持久性:消息直接持久化在普通磁盘上且性能好

分布式:数据副本冗余、流量负载均衡、可扩展

很灵活:消息长时间持久化+Client维护消费状态

8、消费状态谁来维护Client vs.Server

 

 9、理解零拷贝

 

 

 

posted @   坤坤无敌  阅读(102)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
点击右上角即可分享
微信分享提示