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、理解零拷贝
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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上本地化部署