Kafka架构及基本概念

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 刚开始了解Kafka时对其中多个名词表示懵逼,broker是啥?咋还有分区?有没有跟和我一样有很多???本文就我对Kafka的理解梳理各个角色以及功能,欢迎大家一起来沟通交流

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

刚开始了解Kafka时对其中多个名词表示懵逼,broker是啥?咋还有分区?有没有跟和我一样有很多???本文就我对Kafka的理解梳理各个角色以及功能,欢迎大家一起来沟通交流。废话不多说,上图:

架构模型

Kafka架构模型

按照自己的理解画一个简单的Kafka架构模型,下面分别说明Zookeeper、Produce、Broker、Replica、Customer、Customer Group 、Topic、Partition在Kafka中的作用以及如何交互。当然,功能远远不止这些。


Produce

作为生产者,它的作用就是将消息成功发送指定的Topic中,消息投递的可靠度、顺序性由Produce决定。

  1. 可靠度:Produce在生产消息时通过设置ACK来决定消息的可靠度。
    — 当ACK为0时,不保证消息是否投递成功。
    — 当ACK为1时(默认),分区leader接收到消息视为投递成功。
    — 当ACK为-1时,分区leader和在同步的副本(ISR)接收到消息视为投递成功,取而代之的是生产效率。
  2. 顺序性:kafka不限制生产者的个数,要确保顺序,单个topic或partition的生产者不可以多线程或者多客户端??。如下图,当有两个生产客户端是无法知道哪个消息先到达的。
    在这里插入图片描述

    Broker

    Broker其实就是Kafka服务启动后的一个进程,是一个物理节点,启动几个Kafka就有几个Broker。作为消息的中介,接收producer往指定的topic中写消息,提供consumer拉取指定topic的消息,除此之外还承担以下几个职责:
  3. Broker集群中有一个节点作为Controller负责Broker成员管理、Topic维护和Partition的管理。
  4. 负责分区数据的持久化和维护。Broker将每个分区的数据按照segment划分,每个segment存放log、offset索引、时间戳索引3个物理文件,以提高数据的读取效率。

Topic

Topic被称为主题,在kafka中是一个逻辑概念,物理上同一个Topic的消息会存储在不同个broker上,真正意义上的分布式消息中间件。通常以topic划分消息所属类别,起业务隔离作用。

Partition

如上图所示,Broker以Topic为单位将消息分摊在不同分区,每个分区都有leader和副本。那为什么会有分区?这是因为如果topic内的消息只存储于一个broker,那这个broker终会成为瓶颈,无法做到水平扩展。此外在分区使用中需要注意的事项:

  1. topic中的各分区只保证内部数据的顺序,所以业务中对顺序有严格要求的只能建立一个分区。
  2. leader负责对外提供读写请求,副本只是同步数据。
  3. 一个分区只能被一个消费组的一个消费者消费。如下图,当分区被分配完后,consumer4无法消费。
    在这里插入图片描述

Replica

kafka的副本机制指的是分区的副本而不是broker,副本通常存放在和leader不同的broker中。如上述Partition注意事项2,副本如何同步数据以保证数据的可靠性和一致性?

  1. 分区leader会动态维护一个与之保持同步的副本列表ISR(In-sync Replicas),如果一个副本同步未达到阈值要求或宕机会被移除至OSR(Outof-sync Replicas),kafka要保证不丢失消息,就要保证ISR列表中至少有一个存活。如下图所示:
    ISR机制

  2. 副本以pull的方式拉取数据进行同步,每个副本都会维护自己的HW(High Watermark)和LEO(Last End Offset)保持数据同步。
    — 当ACK为-1时所有ISR节点的HW和LEO会保持一致。
    — 当ACK为0或1时,可能会因为leader节点的宕机,未同步、消费的数据会丢失。如下图,当leader节点宕机黄色节点的数据会丢失。
    在这里插入图片描述

    Customer

    消费者负责订阅 Kafka 中的Topic,按照Offset进行拉取消费。

Customer Group

在kafka中一个分区的消息只能被一个消费组中的一个消费者消费,不然会破坏分区中消息的消费顺序,但是避免不了一条消息会被多个地方使用的场景,所以有消费组的概念。消费者在进行消费时可以指定一个消费组,同一条消息在被多个消费组消费时就达到消息“广播”的功能。

Zookeeper

Zookeeper在kafka中主要起到两个作用,一是存储broker、topic、partition等元数据信息,二是协调如broker的controller、partition的leader等选举过程。


总结

OK,至此已经大致了解了kafka,总结一下:

  1. 生产——broker——消费,三个环节通过ACK来决定消息的可靠和一致。
  2. 分区有几个作用:
    (1)避免单个broker节点的瓶颈。
    (2)提高数据可靠性。
    (3)提高消费吞吐量。
  3. 利用Zookeeper协调功能,不用做额外配置工作,使得broker可以自动伸缩。

欢迎大家一起来沟通交流。

相关文章
|
3天前
|
缓存 前端开发 JavaScript
第三章(概念篇) 微前端架构模式
第三章(概念篇) 微前端架构模式
|
5天前
|
消息中间件 监控 大数据
Kafka消息队列架构与应用场景探讨:面试经验与必备知识点解析
【4月更文挑战第9天】本文详尽探讨了Kafka的消息队列架构,包括Broker、Producer、Consumer、Topic和Partition等核心概念,以及消息生产和消费流程。此外,还介绍了Kafka在微服务、实时数据处理、数据管道和数据仓库等场景的应用。针对面试,文章解析了Kafka与传统消息队列的区别、实际项目挑战及解决方案,并展望了Kafka的未来发展趋势。附带Java Producer和Consumer的代码示例,帮助读者巩固技术理解,为面试做好准备。
30 0
|
3天前
|
缓存 自然语言处理 前端开发
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
第一章 引言-HTTP协议基础概念和前后端分离架构请求交互概述
|
5天前
|
Kubernetes API 调度
Kubernetes学习-核心概念篇(二) 集群架构与组件
Kubernetes学习-核心概念篇(二) 集群架构与组件
|
5天前
|
监控 云计算 开发者
探索云计算中的无服务器架构:从概念到实践
无服务器架构作为云计算领域的新兴技术,正在以其高效、灵活的特性吸引着越来越多的开发者和企业。本文将深入探讨无服务器架构的概念及其在云计算中的应用,通过实际案例展示如何利用无服务器架构构建可靠、可扩展的应用系统。
|
5天前
|
安全 Java 数据安全/隐私保护
Spring Boot优雅实现多租户架构:概念与实战
【4月更文挑战第29天】在多租户系统中,一个应用实例服务于多个租户,每个租户享有独立的数据视图,而应用的基础设施被共享。这样的架构不仅优化了资源使用,还能降低维护和运营成本。本文将详细介绍如何在Spring Boot中实现多租户架构,并提供具体的实战案例。
44 2
|
5天前
|
敏捷开发 运维 监控
【专栏】微服务架构,以敏捷、灵活著称,通过拆分大型应用为小型自治服务,简化开发运维
【4月更文挑战第27天】微服务架构,以敏捷、灵活著称,通过拆分大型应用为小型自治服务,简化开发运维。本文探讨其基本概念、起源,核心优势(如敏捷开发、高可伸缩性)及挑战(系统复杂度、数据一致性),并分享实施策略(服务划分、技术选型、CI/CD)与实践案例(Netflix、Uber、Spotify),展示微服务如何重塑软件开发,并成为未来复杂应用系统的基础。
|
5天前
|
存储 监控 API
【云原生系列】云计算概念与架构设计介绍
**云计算**是基于互联网的计算模式,通过共享计算资源(如服务器、存储、应用程序)提供高效、可扩展、可靠、安全和经济的服务。其架构通常包括**物理层**(服务器、存储、网络设备等基础设施)、**虚拟化层**(虚拟机、容器、虚拟网络等)、**平台层**(开发、运行时、数据库服务等)和**应用层**(企业应用、Web应用、移动应用)。云计算服务有IaaS、PaaS和SaaS,广泛应用于企业IT、开发测试、大数据处理、AI和远程办公等领域。为了确保性能和可靠性,云平台采用负载均衡、自动伸缩、备份恢复、安全措施和监控故障排除等方法。
31 1
|
5天前
|
SQL 存储 分布式计算
Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
【4月更文挑战第6天】Hive【基础 01】核心概念+体系架构+数据类型+内容格式+存储格式+内外部表(部分图片来源于网络)
35 1
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理

热门文章

最新文章

http://www.vxiaotou.com