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

kafka--基础--01--介绍

kafka–基础–01–介绍


1、Kafka介绍

  • Kafka是一个分布式、分区、多副本、多生产者、多消费者的分布式消息(日志)系统
  • Kafka基于ZooKeeper做高可用
  • 使用场景
    • 用于 日志收集
    • 用于 消息服务

1.1、设计目标

  • 以时间复杂度为 O(1) 的方式提供消息持久化能力,即使对 TB 级以上的数据也能保证常数时间的访问性能。
  • 高吞吐率:即使在非常廉价的商用机器上也能做到单机支持 10W/每秒 消息的传输。
  • 支持 Kafka Server 间的消息分区,以及分布式消费,同时保证每个 Partition 内的消息顺序传输。
  • 支持离线数据处理和实时数据处理。
  • 支持在线水平扩展

1.2、消息系统介绍

  • 消息系统:负责将数据从A应用传递到B应用,应用只需关注数据,无需关心数据在两个或多个应用间是如何传递的。

  • 分布式消息传递:基于可靠的消息队列,在客户端应用和消息系统之间异步传递消息。

  • 有两种主要的消息传递模式:

    • 点对点传递模式
    • 发布-订阅模式(大部分的消息系统选用发布-订阅模式)

1.2.1、传递模式:点对点消息

  • 消息持久化:消息持久化到一个队列中。
  • 消费消息:一个或多个消费者消费队列中的数据。但是一条消息只能被消费一次,当一个消费者消费了队列中的某条数据之后,该条数据则从消息队列中删除。
  • 优点:
    • 即使有多个消费者同时消费数据,也能保证数据处理的顺序。

架构示意图如下:

1.2.2、传递模式:发布-订阅消息

  • 消息持久化:消息被持久化到一个 Topic 中
  • 消费消息:
    • 消费者可以订阅一个或多个 Topic
    • 消费者可以消费 Topic 中所有的数据
    • 同一条数据可以被多个消费者消费
    • 数据被消费后不会立马删除
  • 发布者:消息的生产者
  • 订阅者:消息的消费者

架构示意图如下:

2、术语

2.1、结构概述

上图介绍:

  • 1个 Topic 配置了 3 个 Partition。

    • Partition1:有2个Offset(0和1)。
    • Partition2:有4个Offset。
    • Partition3:有1个Offset。
  • 副本的 ID 和副本所在的机器的 ID 恰好相同。

  • 如果一个 Topic 的副本数为 3,那么 Kafka 将在集群中为每个 Partition 创建 3 个相同的副本。

  • 集群中的每个 Broker 存储一个或多个 Partition。

  • 多个 Producer 和 Consumer 可同时生产和消费数据。

2.2、Broker

  • 一台 Kafka 服务器就是一个 Broker,一个集群由多个 Broker 组成,一个 Broker 可以容纳多个 Topic。

  • Broker 和 Broker 之间没有 Master 和 Standby 的概念,它们之间的地位基本是平等的。

  • Kafka 集群包含一个或者多个服务器,服务器节点称为 Broker。

  • Broker 存储 Topic 的数据。如果某 Topic 有 N 个 Partition,集群有 N 个 Broker,那么每个 Broker 存储该 Topic 的一个 Partition。

  • 如果某 Topic 有 N 个 Partition,集群有 (N+M) 个 Broker,那么其中有 N 个 Broker 存储该 Topic 的一个 Partition,剩下的 M 个 Broker 不存储该 Topic 的 Partition 数据。

  • 如果某 Topic 有 N 个 Partition,集群中 Broker 数目少于 N 个,那么一个 Broker 存储该 Topic 的一个或多个 Partition。在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致 Kafka 集群数据不均衡。

2.3、Topic

每条发布到 Kafka 集群的消息都有一个Topic。

  • 物理上:不同 Topic 的消息分开存储
  • 逻辑上:一个 Topic 的消息虽然保存于一个或多个 Broker 上,但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处

2.4、Producer

生产者,向 Kafka Topic 发布消息的客户端。

2.5、Partition

  • Topic 中的数据分割为一个或多个 Partition。
    • 每个 Topic 至少有一个 Partition。
    • 每个 Partition 中的数据使用多个 Segment 文件存储。
  • Partition 中的数据是有序的,不同 Partition 间的数据丢失了数据的顺序。
    • 如果 Topic 有多个 Partition,消费数据时就不能保证数据的顺序。
    • 在需要严格保证消息的消费顺序的场景下,需要将 Partition 数目设为 1。

2.6、Consumer

  • 消费者可以从 Broker 中读取数据。
  • 消费者可以消费多个 Topic 中的数据。

2.7、Consumer Group

每个 Consumer 属于一个特定的 Consumer Group(可为每个 Consumer 指定 Group Name,若不指定 Group Name 则属于默认的 Group)。

2.8、Leader

每个 Partition 有多个副本,其中有且仅有一个作为 Leader,Leader 是当前负责数据的读写的 Partition。

2.9、Follower

  • Follower 跟随 Leader,所有写请求都通过 Leader 路由,数据变更会广播给所有 Follower,Follower 与 Leader 保持数据同步。
  • 如果 Leader 失效,则从 Follower 中选举出一个新的 Leader。
  • 当 Follower 与 Leader 挂掉、卡住或者同步太慢,Leader 会把这个 Follower 从 “in sync replicas”(ISR)列表中删除,重新创建一个 Follower。

2.10、Offset

消息在 Topic 的 Partition 中的位置,同一个 Partition 中的消息随着消息的写入,其对应的 Offset 也自增。结构图如下:

2.11、Replica

  • 副本的意思

  • Topic 的 Partition 含有 N 个 Replica,N 为副本因子。

  • 副本的类型有Leader和Follower

    • Leader:只有一个,处理 Partition 的所有读写请求

    • Follower :除了Leader之外的所有副本,Follower 会定期去同步 Leader 上的数据

2.12、Message

通讯的基本单位,即消息。

2.13、ZooKeeper

  • 存放 Kafka 集群相关元数据的组件。
  • 在 ZK 集群中会保存 Topic 的状态消息:例如
    • 分区的个数
    • 分区的组成
    • 分区的分布情况等
  • 保存 Broker 的状态消息
  • 保存消费者的消息等

3、Kafka架构

3.1、拓扑结构

  • Kafka 集群由若干个 Broker 组成,Topic 由若干个 Partition 组成,每个 Partition 里面的消息通过 Offset 来获取。
  • 生产者:将消息发送给某个 Topic,每个Topic对应一个消息队列(Queue)
  • 消费者:订阅某个Topic的消息。

3.2、消息发送简易流程

一个典型的 Kafka 集群组成

  • 若干个 Producer
    • 使用 Push 模式将消息发布到 Broker 上
  • 若干个 Broker
    • Kafka 集群支持水平扩展,一般 Broker 数量越多,整个 Kafka 集群的吞吐率也就越高
  • 若干个 Consumer Group
    • Consumer 使用 Pull 模式从 Broker 上订阅并消费消息
  • 一个 ZooKeeper 集群。
    • Kafka 通过 ZooKeeper 管理集群配置。

http://www.jsqmd.com/news/752489/

相关文章:

  • HS2-HF Patch终极指南:200+插件一键解锁《Honey Select 2》完整游戏体验
  • 9大网盘直链解析工具:LinkSwift网盘直链下载助手完全指南
  • 从RTOS源码看门道:FreeRTOS、RT-Thread和uC/OS对SVC与PendSV的三种不同‘安排’
  • 2026 兰州宝宝照、百天照拍摄测评:本地四家门店综合分析对比 - 生活测评君
  • 抖音视频怎么去水印?2026最新实测去水印工具教程,手机电脑方法全整理 - 爱上科技热点
  • YOLO11涨点优化:特征融合改进 | 结合CARAFE轻量级上采样算子,相较于最近邻插值获得更大感受野和细腻特征
  • JoyCon-Driver 终极指南:在PC上无线使用Switch手柄的完整解决方案
  • 企业级智能体平台MaxKB部署实战:一站式配置与优化指南
  • 仅限首批200名开发者获取:.NET 9低代码企业合规套件(GDPR/等保2.0预置模板+审计日志链式签名模块)
  • 并发量就算只有2,该上锁还得上呀
  • DSGE模型终极指南:40+宏观经济模型快速上手与实战应用
  • 短视频去水印用什么工具?2026最新免费去水印方法实测,手机电脑都能用 - 爱上科技热点
  • AUTOSAR Dem模块深度配置指南:手把手教你用ETAS工具设置DTC的确认阈值与老化策略
  • 视频去水印免费工具推荐:2026最新年实测好用的去水印软件有哪些? - 爱上科技热点
  • 终极解决方案:EldenRingSaveCopier快速掌握艾尔登法环存档迁移与数据备份
  • 豆包视频怎么去水印?豆包视频去水印方法全解析,2026最新亲测有效 - 爱上科技热点
  • 【C++27文件系统权威实测报告】:对比GCC 14/Clang 18/MSVC 19.41,这4个扩展接口在Windows/Linux/macOS行为差异首次公开
  • 抖音视频怎么保存到相册?抖音视频保存到相册的方法2026最新实测整理 - 爱上科技热点
  • 如何用 Python 快速接入 Taotoken 并调用 ChatGPT 兼容模型
  • 别再让跨网访问拖慢速度!用FortiGate策略路由,把电信联通的流量精准分流
  • 抖音视频怎么去水印保存?抖音视频去水印官方方法+2026最新实测去水印保存方法全整理 - 爱上科技热点
  • 抖音保存图片怎么去水印?2026最新最新方法实测,手机电脑都能轻松搞定 - 爱上科技热点
  • 保姆级教程:用微信小程序+OneNet MQTT协议,5分钟搞定温湿度数据实时显示
  • Windows 上使用 Claude Desktop 和 CodeX Desktop
  • 在工厂学习CNC数控编程和在培训班学习CNC数控编程有什么区别?
  • 通过 Taotoken 账单追溯功能清晰掌握团队 AI 开支明细
  • 抖音视频怎么去水印保存到本地?2026最新年抖音去水印最新方法全盘点 - 爱上科技热点
  • 如何快速掌握磁力链接聚合搜索:面向新手的终极指南
  • 面向政府业务的数据架构技术栈:设计原则、核心组件与实施路径
  • 视频去水印方法汇总:视频去水印工具推荐及2026最新实测有效教程 - 爱上科技热点