0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Kafka的核心概念

马哥Linux运维 来源:马哥Linux运维 作者:马哥Linux运维 2022-06-20 14:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Kafka 是主流的消息流系统,其中的概念还是比较多的,下面通过图示的方式来梳理一下 Kafka 的核心概念,以便在我们的头脑中有一个清晰的认识。

01 基础

Kafka 是一套流处理系统(也可以叫消息队列),可以让后端服务轻松地相互沟通,是微服务架构中的常用组件。

d73d250e-efd4-11ec-ba43-dac502259ad0.jpg

02 生产者消费者

生产者服务 Producer 向 Kafka 发送消息,消费者服务 Consumer 监听 Kafka 接收消息。

d74b5980-efd4-11ec-ba43-dac502259ad0.jpg

一个服务可以同时为生产者和消费者。

d75cb8f6-efd4-11ec-ba43-dac502259ad0.jpg

03 Topics 主题

Topic 是生产者发送消息的目标地址,是消费者的监听目标。

d76a322e-efd4-11ec-ba43-dac502259ad0.jpg

一个服务可以监听、发送多个 Topics。

d785daa6-efd4-11ec-ba43-dac502259ad0.jpg

Kafka 中有一个【consumer-group(消费者组)】的概念。

这是一组服务,扮演一个消费者。

d79d6504-efd4-11ec-ba43-dac502259ad0.jpg

如果是消费者组接收消息,Kafka 会把一条消息路由到组中的某一个服务。

d7bbde76-efd4-11ec-ba43-dac502259ad0.jpg

这样有助于消息的负载均衡,也方便扩展消费者。

Topic 扮演一个消息的队列。首先,一条消息发送了。

d7ccbb06-efd4-11ec-ba43-dac502259ad0.jpg

然后,这条消息被记录和存储在这个队列中,不允许被修改。

d7ef00d0-efd4-11ec-ba43-dac502259ad0.jpg

接下来,消息会被发送给此 Topic 的消费者。

但是,这条消息并不会被删除,会继续保留在队列中。

d7fe1098-efd4-11ec-ba43-dac502259ad0.jpg

继续发送消息。

d814eea8-efd4-11ec-ba43-dac502259ad0.jpg

像之前一样,这条消息会发送给消费者,不允许被改动,一直呆在队列中(消息在队列中能待多久,取决于 Kafka 的配置)。

d825185a-efd4-11ec-ba43-dac502259ad0.jpg

d8426d9c-efd4-11ec-ba43-dac502259ad0.jpg

04 Partitions 分区

上面 Topic 的描述中,把 Topic 看做了一个队列,实际上,一个 Topic 是由多个队列组成的,被称为【Partition(分区)】。

这样可以便于 Topic 的扩展。

d85453e0-efd4-11ec-ba43-dac502259ad0.jpg

生产者发送消息的时候,这条消息会被路由到此 Topic 中的某一个分区(Partition)。

d85f8152-efd4-11ec-ba43-dac502259ad0.jpg

消费者监听的是所有分区并消耗所有人的事件。

d879a960-efd4-11ec-ba43-dac502259ad0.jpg

生产者发送消息时,默认是面向 Topic 的,由 Topic 决定放在哪个 Partition,默认使用轮询策略。

d889aef0-efd4-11ec-ba43-dac502259ad0.jpg

也可以配置 Topic,让同类型的消息都在同一个 Partition。

例如,处理用户消息,可以让某一个用户所有消息都在一个 Partition。

例如,用户 1 发送了 3 条消息:A、B、C,默认情况下,这 3 条消息是在不同的 Partition 中(如 P1、P2、P3)。

在配置之后,可以确保用户 1 的所有消息都发到同一个分区中(如 P1)。

d8a34644-efd4-11ec-ba43-dac502259ad0.jpg

这个功能有什么用呢?这是为了提供消息的【有序性】。

消息在不同的 Partition 是不能保证有序的,只有一个 Partition 内的消息是有序的。

d8bd0782-efd4-11ec-ba43-dac502259ad0.jpg

d8cf8ca4-efd4-11ec-ba43-dac502259ad0.jpg

05 架构

Kafka 是集群架构的,ZooKeeper 是其重要组件。

d8f4aa84-efd4-11ec-ba43-dac502259ad0.jpg

ZooKeeper 管理着所有的 Topic 和 Partition。

Topic 和 Partition 存储在 Node 物理节点中,ZooKeeper 负责维护这些 Node。

d907fc4c-efd4-11ec-ba43-dac502259ad0.jpg

例如,有 2 个 Topic,各自有 2 个 Partition。

d919a65e-efd4-11ec-ba43-dac502259ad0.jpg

这是逻辑上的形式,但在 Kafka 集群中的实际存储可能是这样的:

d92779aa-efd4-11ec-ba43-dac502259ad0.jpg

Topic A 的 Partition#1有 3 份,分布在各个 Node 上。

这样可以增加 Kafka 的可靠性和系统弹性。

3 个 Partition#1中,ZooKeeper 会指定一个 Leader,负责接收生产者发来的消息。

d93a0c5a-efd4-11ec-ba43-dac502259ad0.jpg

其他 2 个 Partition #1 会作为 Follower,Leader 接收到的消息会复制给 Follower。

d958fc82-efd4-11ec-ba43-dac502259ad0.jpg

这样,每个 Partition 都含有了全量消息数据。

d9782cf6-efd4-11ec-ba43-dac502259ad0.jpg

即使某个 Node 节点出现了故障,也不用担心消息的损坏。

Topic A 和 Topic B 的所有 Partition 分布可能就是这样的:

d98d59b4-efd4-11ec-ba43-dac502259ad0.jpg

这样一来,你对 Kafka 的组件有了一个初步认识,更多关于 Kafka 或消息队列的内容,可以查阅相关资料,感谢您的阅读,希望对您有所帮助。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 架构
    +关注

    关注

    1

    文章

    537

    浏览量

    26643
  • kafka
    +关注

    关注

    0

    文章

    55

    浏览量

    5593

原文标题:讲真!Kafka 的原理竟是这样的,一看就明白!

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    浅谈Kubernetes的六个核心概念

    运维工程师在学习 Kubernetes 时,往往会在某些核心概念上反复卡住。这些概念不是孤立的知识点,而是相互关联、层层递进的体系。理解这些概念的关键在于动手实践,而非仅仅阅读文档。
    的头像 发表于 04-13 13:55 170次阅读

    开关电源的基本概念和分析方法

    开关电源的基本概念和分析方法
    发表于 04-10 15:20 0次下载

    聚焦概念验证中国路径 国内外专家齐聚昱栎技术深入研讨

    转化模式创新等核心议题开展了深度研讨与交流。会上,昱栎技术董事长栗旭锦系统介绍,公司深耕行业12年,作为北京市规模最大的民营概念验证中心,始终以纯市场化模式实现自我
    的头像 发表于 03-31 16:24 692次阅读
    聚焦<b class='flag-5'>概念</b>验证中国路径 国内外专家齐聚昱栎技术深入研讨

    进程概念和特征

    进程的概念   在多道程序环境下,允许多个程序并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入了进程(Process)的概念,以便更好地描述和控制程序的并发执行,实现操作系统
    发表于 01-15 06:39

    工程师之夜系列分享第三十九篇:Kafka、RocketMQ、JMQ 存储架构深度对比

    引言 消息队列的存储架构是决定其可靠性、吞吐量、延迟性能的核心因素,直接影响业务场景适配能力。本文聚焦三款主流消息队列 ——Kafka(LinkedIn 开源,侧重高吞吐)、RocketMQ(阿里
    的头像 发表于 01-13 16:19 285次阅读
    工程师之夜系列分享第三十九篇:<b class='flag-5'>Kafka</b>、RocketMQ、JMQ 存储架构深度对比

    Hudi系列:Hudi核心概念之索引(Indexs)

    Hudi系列:Hudi核心概念(版本1.0) •Hudi架构 ◦一. 时间轴(TimeLine)s ▪1.1 时间轴(TimeLine)概念 ▪1.2 Hudi的时间线由组成 ▪1.3 时间线
    的头像 发表于 10-21 09:47 519次阅读
    Hudi系列:Hudi<b class='flag-5'>核心</b><b class='flag-5'>概念</b>之索引(Indexs)

    Hudi系列:Hudi核心概念之文件布局(Storage Layouts)

    Hudi系列:Hudi核心概念(版本1.0) •Hudi架构 ◦一. 时间轴(TimeLine) ▪1.1 时间轴(TimeLine)概念 ▪1.2 Hudi的时间线由组成 ▪1.3 时间线
    的头像 发表于 10-14 16:06 812次阅读
    Hudi系列:Hudi<b class='flag-5'>核心</b><b class='flag-5'>概念</b>之文件布局(Storage Layouts)

    RK3576与RK3588核心板如何选型?1分钟速通!#RK3576核心板 #RK3588核心

    核心
    广州灵眸科技有限公司
    发布于 :2025年09月23日 17:31:12

    一文读懂大模型常见的10个核心概念

    这些常见的专业术语,你又了解多少?这篇文章将帮助你快速掌握AI行业常见的核心概念。1、大模型型号每个大模型都有其独特的设计和功能,有些大模型可能在语言理解方面表现出
    的头像 发表于 09-22 17:02 1377次阅读
    一文读懂大模型常见的10个<b class='flag-5'>核心</b><b class='flag-5'>概念</b>

    《AI芯片:科技探索与AGI愿景》—— 深入硬件核心的AGI指南

    《AI芯片:科技探索与AGI愿景》一书如同一张详尽的“藏宝图”,为读者指明了通往下一代人工智能的硬件之路。作者没有停留在空洞的概念层面,而是直击核心,从冯·诺依曼架构的“内存墙”瓶颈切入,清晰阐述了
    发表于 09-17 09:29

    CoWoP封装的概念、流程与优势

    本文介绍了CoWoP(Chip‑on‑Wafer‑on‑Substrate)封装的概念、流程与优势。
    的头像 发表于 08-12 10:49 3431次阅读
    CoWoP封装的<b class='flag-5'>概念</b>、流程与优势

    Kafka生产环境应用方案

    Apache Kafka作为分布式流处理平台,在现代大数据架构中扮演着消息中间件的核心角色。本文将从运维工程师的角度,详细介绍Kafka在生产环境中的部署方案、配置优化、监控运维等关键技术。通过实战案例和代码示例,帮助运维团队构
    的头像 发表于 07-09 09:56 677次阅读

    概念模拟电子电路(全彩版)

    《新概念模拟电子电路》,五部合集。 纯分享贴,有需要可以直接下载附件获取完整资料! (如果内容有帮助可以关注、点赞、评论支持一下哦~)
    发表于 05-19 16:17

    Kafka工作流程及文件存储机制

    Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic 的。
    的头像 发表于 05-19 10:14 1058次阅读
    <b class='flag-5'>Kafka</b>工作流程及文件存储机制

    Linux系统管理的核心概念

    在前一篇文章中,我们深入探讨了Linux中的文件操作命令,如cp、mv、rm,以及文本处理命令grep、wc和管道符。本文将继续深入Linux系统管理的核心概念,包括root用户的角色、用户和用户组
    的头像 发表于 05-15 17:05 821次阅读