Kafka

KAFKA

kafka集群

  • broker

    • kafka集群运行后,每台服务器上的kafka称为一个broker节点

    • 处理消费者和生成者的请求

      • 生产者需要保存数据到kafka,就需要请求broker
      • 消费者需要从kafka中获取数据,也需要请求broker
    • 多个broker会选取产生一个控制器, 类似zk中 leader角色

      • 管理broker,监控broker的变化
      • 参与分区副本的领导者选举
      • 处理消费者和生成者的请求
      • 有zk从broker中选举出控制器
        • 本质哪台服务器先启动了kafka,生成了broker节点,该节点就作为控制器
  • 主题 Topic

    • kakfa是对消息数据的处理
    • 消息数据会有不同的分类 用户数据 商品数据 订单数据
    • 使用主题对消息数据进行分类,然后分别存储
    • 主题创建成功后,会将主题信息写入zk中,所有的broker就可以从zk获取有哪些主题
    • 生产者写入数据是可以指定写入的主题,人为对数据按照主题分类
    • 消费者读取数据是也要指定主题,从对应的主题下获取数据
    • 操作kafka必须现有主题
  • 分区(分片) Partition

    • 分区是kafka存储数据的最小单元,消息数据最终是存储在分区上的
    • 一个主题在存储时可以指定多个分区
    • 当有多个分区时,分区被分配到不同broker上
    • 分区所存储的数据是在系统的磁盘上进行存储。每个分区会创建不同目录,然后将数据写入该目录下的文件中
    • 文件中存储的数据是有有效期,默认的有效期是168小时,也就是一周,超过有效期后,会删除数据
  • 副本 Replication

    • 为了保证分区数据的安全性,避免分区数据丢失,kafka采用副本机制将分区数据存储多份
    • 默认在创建主题时,如果没有指定副本,那么副本的数量为1,也就是只有一个分区只有一份数据
    • 在创建主题时,可以指定多个副本,一般指定副本数量是2-3个
    • 副本数据不会保存在同一台服务器上,会将副本保存在多台服务器,通过轮循broker节点,创建副本
    • 多副本的角色划分
      • 领导者副本
        • broker控制器会选举产生一个领导者副本
        • 领导者副本负责处理所有请求(写入和读取)
        • 生产者写入数据是,会将数据给到领导者副本,领导者副本写完后,会将数据同步给追随者副本
      • 追随者副本
        • 追随者副本 请求领导者本副本获取最新数据,如果领导者副本有新数据产生,会将新数据同步给追随者副本
        • 追随者副本不处理数据的写入和读取请求
  • 偏移量(offset)

    • 分区数据在存储的时候会有一个偏移量,记录了数据在分区中的位置。
    • 保证在同一个分区内的数据是有序存储的,可以保证数据的顺序性,消费在读取数据进行处理就是按照偏移量位置顺序读取数据处理

相关推荐

  1. kafka

    2024-01-16 23:10:01       58 阅读
  2. <span style='color:red;'>kafka</span>

    kafka

    2024-01-16 23:10:01      49 阅读
  3. Kafka

    2024-01-16 23:10:01       65 阅读
  4. Kafka

    2024-01-16 23:10:01       50 阅读
  5. <span style='color:red;'>KAFKA</span>

    KAFKA

    2024-01-16 23:10:01      70 阅读
  6. <span style='color:red;'>Kafka</span>

    Kafka

    2024-01-16 23:10:01      50 阅读
  7. <span style='color:red;'>Kafka</span>

    Kafka

    2024-01-16 23:10:01      56 阅读
  8. Kafka

    2024-01-16 23:10:01       55 阅读
  9. <span style='color:red;'>Kafka</span>

    Kafka

    2024-01-16 23:10:01      40 阅读
  10. kafka

    2024-01-16 23:10:01       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-16 23:10:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-16 23:10:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-16 23:10:01       82 阅读
  4. Python语言-面向对象

    2024-01-16 23:10:01       91 阅读

热门阅读

  1. 大模型学习第五课

    2024-01-16 23:10:01       58 阅读
  2. Vue生成图片并下载

    2024-01-16 23:10:01       54 阅读
  3. 2、合并两张图像

    2024-01-16 23:10:01       53 阅读
  4. vuex是什么?怎么使用?哪种功能场景使用它?

    2024-01-16 23:10:01       55 阅读
  5. 【ASP.NET Core 基础知识】--中间件--什么是中间件

    2024-01-16 23:10:01       50 阅读
  6. 51单片机内部的主要寄存器

    2024-01-16 23:10:01       47 阅读
  7. GO自研微服务框架-中间件

    2024-01-16 23:10:01       43 阅读
  8. HTTPS是什么意思

    2024-01-16 23:10:01       56 阅读