Kafka架构

引言

Kafka 凭借其独树一帜的分区架构,在消息中间件领域展现出了卓越的性能表现。其分区架构不仅赋予了 Kafka 强大的并行计算能力,使其能够高效处理海量数据,还显著提升了系统的容灾能力,确保在复杂的运行环境中始终保持稳定可靠。本文将深入剖析 Kafka 的架构选型,通过对其底层逻辑的抽丝剥茧,帮助我们提炼架构设计的关键能力与思维模式,进而为优化自身系统架构提供极具价值的参考。

消息中间件通用架构

生产者

  • 功能:负责将消息发布到 Kafka 集群。生产者可以将消息发送到指定的主题(Topic),并根据分区策略决定消息发送到哪个分区。
  • 工作原理:生产者在发送消息时,会先将消息序列化为字节数组,然后根据主题和分区信息,将消息发送到对应的 Broker 节点。生产者还可以进行消息的批量发送、压缩等操作,以提高发送效率。

消费者

  • 功能:用于从 Kafka 集群中读取消息并进行处理。消费者可以订阅一个或多个主题,并从这些主题的分区中拉取消息进行消费。
  • 工作原理:消费者通过向 Broker 发送拉取请求来获取消息,它会记录自己已经消费到的消息偏移量(Offset),以便在下次拉取时从正确的位置继续读取。消费者可以以单线程或多线程的方式处理消息,并且可以将消费结果进行持久化或进行其他后续操作。

主题

  • 功能:是 Kafka 中消息的逻辑分类,类似于数据库中的表。每个主题可以包含多个分区,不同的主题可以用于不同的业务场景或数据类型。
  • 工作原理:生产者将消息发送到指定的主题,消费者通过订阅主题来获取该主题下的消息。主题可以配置不同的属性,如分区数量、副本因子等,以满足不同的业务需求。

代理

  • 功能:是 Kafka 集群中的服务器节点,负责接收生产者发送的消息,存储消息,并为消费者提供消息读取服务。
  • 工作原理:Broker 接收到生产者发送的消息后,会将消息写入到本地的磁盘日志文件中。当消费者请求消息时,Broker 会根据消费者的请求,从磁盘中读取相应的消息并返回给消费者。Broker 还负责管理分区的副本,进行数据的复制和同步,以保证数据的可靠性。

集群

  • 功能:由多个 Broker 节点组成,共同提供 Kafka 的消息存储和处理服务。集群可以实现高可用性、可扩展性和负载均衡。
  • 工作原理:集群中的 Broker 节点通过 Zookeeper 进行协调和管理,它们会相互通信,以确保数据的一致性和可用性。当集群中的某个 Broker 节点出现故障时,其他节点可以自动接管其工作,保证系统的正常运行。同时,集群可以通过添加新的 Broker 节点来扩展存储和处理能力。

独特架构

主题 + 分区

  • 功能:是主题的物理划分,每个主题可以分为多个分区。分区可以分布在不同的 Broker 节点上,实现数据的分布式存储和并行处理。
  • 工作原理:消息在写入主题时,会根据分区策略被分配到具体的分区中。每个分区内部的消息是有序的,消费者可以通过分区来并行地读取消息,提高消费效率。同时,分区还可以通过副本机制来保证数据的可靠性和容错性。
  • 独特性:可以将消息并行消费,同时不同Broker能保存相同的分区消息来实现容错性。

架构思维

  • 吞吐率:如何将消息并行化同时保持有序性,kafka给予了很好的范本
  • 容错性:默认副本机制,持久化的同时节点备份是最优解
相关推荐
卖买买卖8 小时前
美业收银系统对比分析:系统架构、功能深度与服务模型评估
架构·sass
wdfk_prog9 小时前
嵌入式面试真题第 15 题:不可恢复异常后的通用崩溃快照、调用栈保存与离线分析架构
linux·开发语言·面试·架构
小小测试开发10 小时前
PromptFoo 源码分析与工程实战:LLM 测试框架的架构与最佳实践
人工智能·架构
葬送的代码人生11 小时前
别再让 AI 瞎写代码了!Vibe Coding 三步法教你写出靠谱代码
前端·设计模式·架构
杉氧11 小时前
KMP 自动化之路 (4):iOS 自动化构建与签名 —— 攻克最硬的骨头
android·架构·android jetpack
taocarts_bidfans12 小时前
极简架构降载技术|从西班牙红薯饭去繁就简,解析反向海淘系统轻量化架构优化方案
架构·taocarts
AI人工智能+电脑小能手13 小时前
【大白话说Java面试题 第190题】【08_Kafka篇】第6题:消息队列有什么作用?
java·kafka·消息队列·系统设计·分布式架构
cyforkk15 小时前
重新认识 MCP:大模型时代的“标准接口”与架构边界
架构
富贵冼中求15 小时前
从单向流到双向 RPC:Agent 通信协议的范式分叉与 ACP 协议实战拆解
设计模式·架构
XUHUOJUN17 小时前
Azure Local 2602→2606 演进全景:2604 为什么是架构转折点(2602→2606 演进与升级价值·中篇)
架构·azure local