图解 Kafka,画得太好了!

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

基础

Kafka 是一套流处理系统,可以让后端服务轻松的相互沟通,是微服务架构中常用的组件。

image.png

生产者消费者

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

image.png

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


image.png

Topics 主题

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

image.png

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


image.png

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

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

image.png

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


image.png

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

Topic 扮演一个消息的队列。

首先,一条消息发送了。

image.png

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


image.png

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

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

image.png

继续发送消息。


image.png

像之前一样,这条消息会发送给消费者、不允许被改动、一直呆在队列中。

(消息在队列中能呆多久,可以修改 Kafka 的配置)

image.png

image.png

Partitions 分区

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

这样可以便于 Topic 的扩展。

image.png

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


image.png

消费者监听的是所有分区。


image.png

image.png

image.png

image.png

image.png

目录
相关文章
|
Java API 数据安全/隐私保护
掌握Spring Boot中的@Validated注解
【4月更文挑战第23天】在 Spring Boot 开发中,@Validated 注解是用于开启和利用 Spring 的验证框架的一种方式,特别是在处理控制层的输入验证时。本篇技术博客将详细介绍 @Validated 注解的概念和使用方法,并通过实际的应用示例来展示如何在项目中实现有效的数据验证
837 3
|
移动开发 Java HTML5
Springboot web静态资源配置
Springboot web静态资源配置
806 0
|
9月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
840 0
|
7月前
|
IDE Java 开发工具
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
IntelliJ IDEA创建Java项目的图文详细步骤,手把手带你创建Java项目
1311 10
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
|
Kubernetes 监控 网络协议
在K8S中,Pod不同探针有何区别?
在K8S中,Pod不同探针有何区别?
|
消息中间件 存储 Java
图解Kafka:Kafka架构演化与升级!
图解Kafka:Kafka架构演化与升级!
615 0
图解Kafka:Kafka架构演化与升级!
|
消息中间件 大数据 Kafka
高效处理大数据:Kafka的13个核心概念详解
大家好,我是小米!今天我将为大家深入解析Kafka的核心概念,包括消息、批次、主题、分区、副本、生产者、消费者、消费组等内容。通过这篇文章,你将全面了解Kafka的工作机制和应用场景,为你的大数据处理提供有力支持。准备好了吗?让我们开始吧!
445 4
|
缓存 负载均衡 网络协议
代理服务器之squid、lvs、nginx、haproxy之间的区别
根据不同的需求和场景,选择适合的代理服务器可以提升应用性能和可用性。
849 4
|
存储 JSON 数据安全/隐私保护
Flask Python:如何获取不同请求方式的参数
Flask Python:如何获取不同请求方式的参数
1028 0
|
Web App开发 前端开发 Java
SpringBoot之请求的详细解析
SpringBoot之请求的详细解析
345 0