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

详解kafka基础(一)

文章目录

        • 0. kafka主要构成组件:
        • 1. 主题(Topics)
        • 2.分区(Partitions)
        • 3.Brokers
        • 4. 复制(Replication):kafka通过复制实现容错
        • 5.消费方(producers)
        • 6.消费方(consumers):读取消息从topic,响应事件流
        • 7. Confluent Schema Registry:
        • 8.kafka connect:集成外部系统到kafka集群
        • 9.Stream Processing
        • 10.Confluent 商业kafka介绍

0. kafka主要构成组件:

在这里插入图片描述

1. 主题(Topics)

topics以日志的形式存储数据
在这里插入图片描述
以接受的顺序存储消息
在这里插入图片描述
以主题组织数据
在这里插入图片描述

从其他主题派生主题

在这里插入图片描述

topic不是一个队列,是一条日志,是有序不可变的记录
在这里插入图片描述

kafka 消息细节(消息数据结构)
在这里插入图片描述
在这里插入图片描述
key:是一个唯一约束的ID

日志保存和压缩(log retention and compaction)
在这里插入图片描述

2.分区(Partitions)

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

消息以无序的方式进入分区(没有key),采用消息以轮询的方式进入分区

在这里插入图片描述
在这里插入图片描述

消息以有序的方式进入分区(有key),通过采用hash取模操作,相同的key总被写到同一个分区
在这里插入图片描述在这里插入图片描述

3.Brokers

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

kafka4.0采用KRaft(基于raft协议),协调管理元数据,不再采用zookeeper
在这里插入图片描述

4. 复制(Replication):kafka通过复制实现容错

kafka复制分区跨brokers
在这里插入图片描述
如果kafka leader broker 挂掉,集群会在剩余的分区中选择新的leader

kafka 客户端从leader进行读写消息
在这里插入图片描述
在这里插入图片描述

为了性能,kafka客户端,可以从follwers进行读取数据
在这里插入图片描述

5.消费方(producers)

生产方发送消息到kafka
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

6.消费方(consumers):读取消息从topic,响应事件流

在这里插入图片描述
在这里插入图片描述

偏移量追踪(偏移量提交):offset commit
kafka会记录每条已消费消息的偏移量;它能确保如果消费者离线,还能从上次中断的地方继续处理。这些偏移量会提交回 Kafka 本身,并存储在一个内部主题中。如果消费者崩溃后重新启动,它会读取自己最后提交的偏移量,继续处理而不会丢失数据。
在这里插入图片描述
在这里插入图片描述

消费组伸缩(scaling with Consumer Groups):
在这里插入图片描述
消费方重新平衡(Rebalancing):
在这里插入图片描述
为了扩展处理能力,Kafka 支持消费者组。同一组中的所有消费者共同承担从topic分区读取数据的工作。Kafka会将每个分区分配给该组中的一个消费者 , 同一组中不会有两个消费者从同一个分区读取数据。这实现了并行处理:

  • 如果一个主题有三个分区,且组中有三个消费者,则每个消费者会独立处理来自一个分区的消息。

  • 如果添加更多消费者,Kafka 会自动在它们之间重新平衡分区。

  • 如果某个消费者发生故障,其分区将重新分配给剩余的消费者,以维持处理。

kafka的基于日志设计即消费数据不删除数据。 多个消费者在不同的消费组,可以读取相同的消。这也就允许独立的应用处理相同的事件流不冲突。

消费者从 Kafka 中检索数据并进行处理。通过消费者组,可以实现水平扩展、并行处理并保证容错能力,同时能保持每个分区内消息的完整性和顺序。

7. Confluent Schema Registry:
  • 具有结构化格式的消息被称作schema

  • 提供了一个元数据服务层.是一个独立的服务,存储和管理schema

Schema Registry工作机制:
在这里插入图片描述
​ 生产者发送消息时,首先会通过REST API 联系 Schema Registry 来注册schema(如果是新的schema)。生产者会在消息中包含schema ID,然后再将其发送到 Kafka 主题。此 ID 允许消费者在收到消息时查找schema,确保他们知道如何正确地反序列化和翻译消息。

​ 在消费者端,消费者会根据 Schema Registry 检查消息中的Schema ID。如果Schema符合预期,则继续消费数据。如果不符合,消费者可能会抛出异常,表明它无法处理该版本的模式。此机制可防止消费者在消息格式意外更改时中断服务。

Schema兼容性规则::可以帮助管理schema优雅的变更

  • 向前兼容(Forward Compatibility):旧的消费者能够读取由较新的schema生成的消息
  • 向后兼容(Backward Compatibility):新的消费者能够读取用旧schema生成的消息
  • 全兼容(Full Compatibility):保存向前和向后兼容

Schema序列化格式:
在这里插入图片描述
Avro转java
在这里插入图片描述

Schema Registry主要职责:

  • 集中式Schema管理 : 所有生产者和消费者对消息格式拥有共同的理解。
  • 容性强制 :通过在生产方和消费者中验证Schema,防止重大变更。
  • 治理与协作 :团队可以使用 IDL 文件作为共享契约,安全地协商 Schema变更。
  • 编译时检查 :可以在部署代码之前验证兼容性,避免运行时意外。
8.kafka connect:集成外部系统到kafka集群

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9.Stream Processing

实时流处理器:

  • 窗口聚合(例如,统计每分钟的页面浏览量)
  • 流到表的连接(例如,使用用户个人资料丰富点击流数据)
  • 事件过滤和重复数据去重
  • 对延迟或乱序数据的恢复能力

​ 流处理框架专为大规模管理状态、排序和容错而设计。

Flink是事实的流处理标准
在这里插入图片描述
在这里插入图片描述

流处理选型对比:Flink VS kafka streams
在这里插入图片描述
flink SQL
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

10.Confluent 商业kafka介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/351720.html

相关文章:

  • JavaScript常用的算法详解
  • Cherry-pick冲突与Git回滚
  • Oracle跟踪及分析方法
  • 力扣100+补充大完结
  • MySql 事务 锁
  • 推荐系统学习笔记(十四)-粗排三塔模型
  • 庖丁解牛:深入解析Oracle SQL语言的四大分类——DML、DDL、DCL、TCL
  • KubeBlocks for Oracle 容器化之路
  • 高校党建系统设计与实现(代码+数据库+LW)
  • 从零开始的 Docker 之旅
  • HIVE的高频面试UDTF函数
  • 【软考论文】论面向对象建模方法(动态、静态)
  • 无人机倾斜摄影农田航线规划
  • HTML应用指南:利用GET请求获取中国银行人民币存款利率数据
  • SciPy科学计算与应用:SciPy线性代数模块入门-矩阵运算与应用
  • 精确位置定位,AR交互助力高效作业流程​
  • 余承东:鸿蒙智行累计交付突破90万辆
  • 机器人视频感知架构深度解析:7条技术法则,打造低延迟实时感知与交互
  • 【ROS2】 忽略局域网多机通信导致数据接收的bug
  • 天气查询小程序项目报告
  • iOS 审核 4.3a【二进制加固】
  • Spring MVC 全解析:从核心原理到 SSM 整合实战 (附完整源码)
  • leetcode-python-383赎金信
  • 深度学习----由手写数字识别案例来认识PyTorch框架
  • 构建AI智能体:十四、从“计算”到“洞察”:AI大模型如何让时间序列数据“开口说话”
  • version GLIBCXX_3.4.30‘ not found (required by cmake)
  • JVM线上调优参数配置指南
  • 今日分享:C++ string 类模拟实现
  • 深度学习之第四课卷积神经网络CNN(一)
  • 不卡顿、不掉线!稳定可靠的体育赛事直播系统源码解析