Kafka架构

引言

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

消息中间件通用架构

生产者

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

消费者

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

主题

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

代理

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

集群

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

独特架构

主题 + 分区

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

架构思维

  • 吞吐率:如何将消息并行化同时保持有序性,kafka给予了很好的范本
  • 容错性:默认副本机制,持久化的同时节点备份是最优解
相关推荐
明达智控技术9 分钟前
MR30分布式I/O在面机装备中的应用
分布式·物联网·自动化
小马哥编程1 小时前
【软考架构】第五章 软件工程基础知识:5.1软件工程概述
架构·软件工程
一直_在路上1 小时前
Go项目实战案例解析】:以Go语言之道,构建电商高并发架构
后端·架构
一直_在路上2 小时前
Go语言并发编程架构师指南:从基础到企业级实战
后端·架构
车口2 小时前
一套代码实现表单新增,编辑和预览
架构
JAVA学习通2 小时前
【RabbitMQ】---RabbitMQ 工作流程和 web 界面介绍
分布式·rabbitmq
cg.family3 小时前
Doris 消费kafka消息
kafka·doris
Light603 小时前
架构矩阵实战:业务边界×技术分层的双螺旋落地法
架构·业务模块·ai 原生·架构矩阵·技术分层·契约治理
安卓开发者4 小时前
鸿蒙NEXT应用数据持久化全面解析:从用户首选项到分布式数据库
数据库·分布式·harmonyos
趴着喝可乐4 小时前
openEuler2403安装部署Kafka
kafka·openeuler