Kafka合集(三):Kafka相关概念

概述


定义

分布式 发布/订阅 主动拉取模式消息队列(Message Queue)

源码语言

Scala+Java

应用场景

大数据实时处理 – 常见spark + kafka / flume + kafka

作用

  • 消息传递
  • 存储
  • 流处理

关键术语

Producer
  • 概念
    • 生产者 – 发布消息的服务
Kafka Cluster
  • 概念
    • kafka集群 – 没啥说的
Broker
  • 概念
    • 集群的一个节点 – 一个Cluster里有多个Broker
Topic
  • 概念

    • 主题 – 对消息进行分类 一个Cluster的全量消息可分为多个Topic
  • 作用

    • 如果没有Topic对消息进行分类 每个消费者只能接收全量的消息 ; 分类后 可订阅自己需要的消息类别
Partition
  • 概念

    • Topic的分区 – 一个topic可分布在多个Broker上 每个Broker上存放这部分topic的物理单位是Partition
  • 作用

    • 一个topic有多个Partition Partition数量不受节点数限制 消息来了 可使一个topic负载均衡 ;
    • 更小数据单位 查询速度更快 ;
    • 一个Producer/Customer 能连多个Broker中的Partition 提高生产消费并发
  • 存储分布 :

    • 每个partition为一个文件目录 存储在kafka目录/logs/下 1个topic的3个partiton目录命名为 topic名称0 topic名称1 topic名称2 (0 1 2 代表分区)
    • 特别的 高版本的kafka的offset数据存储在kafka的特定topic"__consumer_offsets"中 默认50个分区 在kafka目录/logs/下能找到分区文件 __consumer_offsets-1 __consumer_offsets-2 … __consumer_offsets-50
  • 有序 : Partition内部数据是有序的 每个partition只需要支持顺序读写 方便快速寻址

Replica
  • 概念

    Partition的副本 – 没啥说的

Leader
  • 概念

    Partition的备份的主 – 每个Partition可做数据备份 主备在不同broker上 备份数量自定义

  • 作用

    高可靠 Leader活着只找Leader Leader死了选举一个Follower作为Leader

Customer Group(CG)
  • 概念

    消费者组 – 一个消费单位 独立而整体 提高消费并发

  • 作用

    • 独立在于 组与组互不干扰 ;

    • 整体在于 一个Customer Group的目标是 消费某个(当然可以多个)topic 对于一个topic Group要派不同的Customer去消费这个topic的不同的分区

      (分工明确 节省时间 干的快 提高并发 提高消费能力)
      一个Partition 每个订阅了它的Customer Group中只有一个Customer能来消费

      所以 最高效的配置是 当一个Customer Group订阅了一个Topic 这个Group的Customer数=这个Topic的Partition数 --> 具体应用???

      (如果Partition数多于Customer数 消费的时间会久 会慢 ; 如果Customer数多于Partition数 启动服务后 多余的Customer在空跑 浪费资源还不干活)

Segment
  • 概念

    • 消息的实际存储 – partition是一个文件夹 消息实际存储在多个segment数据文件中
  • 消息量不等 : 每个segment file中的消息数量不一定相等 可方便old segment file快速被删除

  • segment file命名规则 : partition的全局第一个segment从0开始 下一个segment file名为上一个segment file最后一条消息的offset值(数值最大为64位long大小 19位数字字符长度 没有数字用0填充)

  • segment file的组成 : segment索引文件xx.index(存储大量元数据:消息的offset) + segment数据文件xxx.log(存储大量消息) 一一对应 成对出现

Offset
  • 概念

    • 消息的序列号/ID 在一个partition中唯一标识一条消息
Customer
  • 概念

    • 消费者 – 消费消息的服务 一个Customer Group由多个Customer组成
Zookeeper
  • 概念

    • 资源调度器 – kafka0.9版本之前 存储kafka集群信息 存储消费数据位置信息(偏移量offset)
  • 作用

    • 存储kafka集群的什么信息 ???
    • 存储消费数据位置信息(偏移量offset) : 消费者服务器内存 和 zookeeper中都存一份消费偏移量信息 . 平时用从内存中取offset 速度快 ; 如果服务器跪了 等起来之后从zookeeper中取offset 可以继续消费 不必从头开始重新消费

    0.9版本及之后 offset存储在kafka集群中 由系统创建的一个topic里

    (zookeeper主要起到一个润滑剂作用 消费者服务器挂了 就要去总请求zookeeper 拿offset 耦合度太高了 也慢)


2.架构图

在这里插入图片描述



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cheese海盐芝士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值