广州总部电话:020-85564311
广州总部电话:020-85564311

广州网站建设-小程序商城开发-广州小程序开发-企业微信开发公司-网站建设高端品牌-优网科技

20年
互联网应用服务商
请输入搜索关键词
知识库 知识库

优网知识库

探索行业前沿,共享知识宝库

Kafka最全详解(万字图文总结)
发布日期:2025-04-23 18:34:45 浏览次数: 821 来源:mikechen的互联网架构

关注mikechen十余年BAT架构经验倾囊相授!


大家好,我是mikechen。


Kafka是消息中间件的核心,也是大型架构和高并发的必备中间件,本篇我就全面来详解Kafka@mikechen

Kafka

Apache Kafka是分布式发布-订阅消息系统,Kafka最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。

1.高吞吐量、低延迟

kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒。

2.可扩展性

kafka集群支持热扩展。

3.持久性、可靠性

消息被持久化到本地磁盘,并且支持数据备份防止数据丢失。

4.容错性

允许集群中节点失败,若副本数量为n,则允许n-1个节点失败。

5.高并发

支持数千个客户端同时读。


Kafka原理

Kafka的工作原理可以概括为生产者将消息发布到主题,然后消费者订阅主题并消费其中的消息。

如下图所示:

上图基本都是目前主流消息中间件的原型,可以很清楚的看见三者的关系。

生产者将数据生产出来,交给 broker 进行存储。

如下图所示:

消费者需要消费数据了,就从broker中去拿出数据来,然后完成一系列对数据的处理操作。

备注:图上有个细节需要注意:producer 到 broker 的过程是 push也就是有数据就推送到 broker,而 consumer 到 broker 的过程是 pull是通过 consumer 主动去拉数据的。

多个 broker 协同合作,producer 和 consumer 部署在各个业务逻辑中被频繁的调用,三者通过 zookeeper管理协调请求和转发。

Kafka使用zookeeper作为其分布式协调框架,很好的将消息生产、消息存储、消息消费的过程结合在一起。

如下图所示:

这样一个高性能的分布式消息发布订阅系统就完成了。

(1)无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

(2)Kafka使用zookeeper作为其分布式协调框架,很好的将消息生产、消息存储、消息消费的过程结合在一起。

(3)同时借助zookeeper,kafka能够生产者、消费者和broker在内的所以组件在无状态的情况下,建立起生产者和消费者的订阅关系,并实现生产者与消费者的负载均衡。

备注:Kafka最新版本,开始逐步摆脱对Zookeeper的依赖,引入了KRaft元数据模式来替换。


Kafka架构

Kafka架构,包括以下组件:


上图中可以看出,生产者将数据发送到Broker代理,Broker代理有多个话题topic,消费者从Broker获取数据。

整个流程,会涉及到如下组件:

  1. Broker(代理):

  • Kafka集群由多个独立的Broker节点组成,每个Broker都是一个Kafka服务器。

  • 每个Broker都负责存储和处理消息,消息以主题(Topic)的形式进行分类和组织。

  • 每个主题可以被分为多个分区(Partition),每个分区都会在多个Broker节点上进行副本复制。

  • Topic(主题):

    • Topic是消息的逻辑分类单元,相当于一个消息队列或主题类别。

    • 生产者(Producer)将消息发布到特定的主题中,消费者(Consumer)订阅主题并从中接收消息。

    • 每个主题可以被划分为多个分区,以实现消息的并行处理和负载均衡。

  • Partition(分区):

    • Partition是一个主题的分片,用于水平扩展和并行处理。

    • 每个分区都是有序且持久化的消息序列,以日志文件的形式存储在Broker节点上。

    • 每个分区在集群中的不同Broker节点上具有一个副本(Replica),其中一个副本为领导者(Leader),其余副本为追随者(Follower)。

  • Producer(生产者):

    • 生产者负责向Kafka集群发布消息。

    • 生产者将消息发送到指定的主题,可以选择将消息发送到特定的分区,或者由Kafka自动选择分区。

    • 生产者可以对消息进行批量发送和压缩,以提高性能和吞吐量。

  • Consumer(消费者):

    • 消费者订阅一个或多个主题,并从Broker节点中拉取和消费消息。

    • 消费者可以以消费者组(Consumer Group)的形式组织,每个消费者组可以有多个消费者。

    • 在消费者组内,每个分区只能由一个消费者进行消费,从而实现负载均衡和扩展性。

  • Consumer Group(消费者组):

    • 消费者组是一组具有相同消费者组ID的消费者的集合。

    • 每个分区只能由消费者组内的一个消费者进行消费,但一个消费者组可以消费多个分区。

    • 如果消费者组内的消费者数量多于分区数量,一些消费者将处于空闲状态。

  • ZooKeeper:

    • Kafka使用ZooKeeper来进行集群的协调和元数据管理。


    Kafka应用场景

    下面是一些Kafka常见的应用场景:

    1.实时数据流处理

    Kafka适用于实时数据流处理,可以接收和传输大规模的实时数据。

    2.日志收集

    Kafka可用于收集分布式系统中的日志数据,并将其聚合到中心化的存储和分析系统中。

    生产者可以将日志数据发布到Kafka,而消费者可以订阅并将日志数据发送到日志存储、数据仓库或实时监控系统。

    3.消息队列

    Kafka的高吞吐量和低延迟使其成为可靠的消息队列和任务队列。

    生产者将任务发布到Kafka中,而消费者可以从中获取任务并进行处理,实现分布式任务调度和并行处理。

    4.应用解耦

    也可以使用Kafka来实现应用解耦。

    5.流式处理

    Kafka可以将数据从生产者快速传递给消费者,支持实时数据分析、流式处理和复杂事件处理。

    比如:spark streaming和storm

    以上


    最后送大家一个福利:


    送我原创超30万字阿里架构师进阶专题合集


    以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。


    需要以上架构专题&面试答案的同学,加我微信即可领取!


    添加时备注:资料


    优网科技,优秀企业首选的互联网供应服务商

    优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!

    优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。


    我要投稿

    姓名

    文章链接

    提交即表示你已阅读并同意《个人信息保护声明》

    专属顾问 专属顾问
    扫码咨询您的优网专属顾问!
    专属顾问
    马上咨询
    联系专属顾问
    联系专属顾问
    联系专属顾问
    扫一扫马上咨询
    扫一扫马上咨询

    扫一扫马上咨询

    和我们在线交谈!