当前位置: 首页 > news >正文

Kafka 概念与概述

一、Kafka 概念

Apache Kafka 是一个分布式流处理平台,核心特点是高吞吐量、可持久化、可扩展。它既可以作为 消息队列,也可以作为 流数据平台

Kafka 的核心目标:

  1. 消息传递:服务间异步通信。
  2. 日志存储:保留历史消息,支持回溯。
  3. 流处理:处理实时数据流(结合 Kafka Streams / Flink / Spark Streaming)。

二、Kafka 核心概念

名称说明
Producer消息生产者,发送消息到 Kafka
Consumer消费者,从 Kafka 订阅和消费消息
Topic消息主题,逻辑上的分类
PartitionTopic 的分区,保证消息顺序性和并行性
BrokerKafka 服务节点,多个 Broker 组成集群
Zookeeper / KRaftKafka 元数据管理(Zookeeper 老模式 / KRaft 新模式)
Consumer Group消费者组,实现消息负载均衡与容错

三、Kafka 特性

  1. 高吞吐:百万级消息/秒,支持水平扩展。

  2. 消息持久化:消息写入磁盘,可设置保留时间。

  3. 顺序保证:Partition 内消息顺序有保障。

  4. 容错能力:Replica 机制,Leader-Follower 模式。

  5. 多种消费模式

    • 点对点:单消费者消费消息
    • 发布/订阅:多个消费者订阅同一 Topic

四、Kafka 在微服务中的应用场景

  1. 异步解耦:服务间无需直接调用,降低耦合。

    • 例:订单服务生成订单 → 发送消息到 Kafka → 库存服务消费消息扣减库存。
  2. 流处理

    • 实时统计、数据清洗、实时推荐。
  3. 事件溯源

    • 事件驱动架构(EDA),每个事件都可回溯。
  4. 日志系统

    • 将系统日志或业务日志发送到 Kafka,再通过 ELK 分析。

五、Kafka 集群架构(简化示意)

+-----------+        +-----------+        +-----------+
| Producer  | ---->  |  Broker 0 | ---->  | Consumer |
+-----------+        +-----------+        +-----------+/      \+-----------+ +-----------+| Broker 1  | | Broker 2  |+-----------+ +-----------+Replication Factor = 3

说明

  • Topic 分为多个 Partition。
  • 每个 Partition 有一个 Leader 和 N 个 Follower。
  • Producer 发送消息到 Partition Leader。
  • Consumer 从 Partition Leader 或 Follower 拉取消息。
  • Replica 保证高可用。

六、Java 使用 Kafka 示例

1. Maven 依赖

<dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.5.1</version>
</dependency>

2. 生产者示例

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");KafkaProducer<String, String> producer = new KafkaProducer<>(props);
ProducerRecord<String, String> record = new ProducerRecord<>("test-topic", "key1", "Hello Kafka");
producer.send(record);
producer.close();

3. 消费者示例

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("group.id", "group1");
props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
consumer.subscribe(Arrays.asList("test-topic"));while(true){ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));for (ConsumerRecord<String, String> record : records) {System.out.printf("offset=%d, key=%s, value=%s%n", record.offset(), record.key(), record.value());}
}

七、Kafka 与云原生结合

  1. 容器化:Kafka 可在 Docker / Kubernetes 中部署。

  2. K8s Operator:使用 Strimzi/Kafka Operator 简化 Kafka 集群管理。

  3. 微服务解耦

    • Spring Boot + Spring Cloud Stream 集成 Kafka。
    • 使用 Kafka 作为微服务事件总线。
  4. 弹性扩容

    • Partition 数量可调整,Consumer Group 动态伸缩。
  5. 可观测性

    • Prometheus + Grafana 监控 Broker、Topic、Consumer lag。
    • Kafka Exporter 提供指标。

八、微服务架构中 Kafka 的优势

  • 消息异步传递,减少服务阻塞。
  • 高可用、水平扩展,适合大规模系统。
  • 支持事件驱动架构,系统更灵活。
  • 可持久化消息,实现日志和事件溯源。
  • 与云原生环境高度兼容,支持容器化和自动伸缩。
http://www.dtcms.com/a/346620.html

相关文章:

  • AI热点周报(8.17~8.23):Pixel 10“AI周”、DeepSeek V3.1发布,英伟达再起波澜?
  • Kafka Streams vs Apache Flink vs Apache Storm: 实时流处理方案对比与选型建议
  • 何为‘口业’,怎么看待它
  • 轻量化设计·全要素监测——新一代便携式气象站赋能户外科研与应急
  • Elasticsearch Persistence(elasticsearch-persistence)仓储模式实战
  • 改华为智能插座为mqtt本地控制
  • 强光干扰与密集场景下工服识别准确率↑89%!陌讯多模态融合算法在安全生产中的实战优化
  • 华为/思科/H3C/锐捷操作系统操作指南
  • Mybatis面试题分享
  • 【网安干货】--操作系统基础(上)
  • 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)第五章整理
  • Python爬虫实战:研究WSL技术,构建跨平台数据采集和分析系统
  • 攻防世界—Confusion1—(模板注入ssti)
  • IPsec
  • selenium采集数据怎么应对反爬机制?
  • C++算法·进制转换
  • 2025/8/23c++++++++
  • kafaka知识要点
  • Spring Boot 3为何强制要求Java 17?
  • 【modbus】数据采集系统
  • 微服务概述1
  • Elasticsearch Ruby 客户端 Bulk Scroll Helpers 实战指南
  • 【Redis 进阶】----主从复制(重点理解流程和原理)
  • 【Tech Arch】Apache Flume海量日志采集的高速公路
  • 如何在 Spring Boot 中安全读取账号密码等
  • SpringBoot3整合dubbo3客户端【最佳实践】
  • 【204页PPT】某著名企业信息化规划方案(附下载方式)
  • 沟通效率提升 - 智能写作与邮件处理
  • 集成电路学习:什么是CNN卷积神经网络
  • 浏览器解析网址的过程