基于测试角度理解kakfa

一、kafka相关名词

1、kafka架构

2、相关名词解释

1.producer:
  消息生产者,发布消息到 kafka 集群的终端或服务。
2.broker:
  kafka 集群中包含的服务器。
3.topic:
  每条发布到 kafka 集群的消息属于的类别,即 kafka 是面向 topic 的。
4.partition:
  partition 是物理上的概念,每个 topic 包含一个或多个 partition。kafka 分配的单位是 partition。
5.consumer:
  从 kafka 集群中消费消息的终端或服务。
6.Consumer group:
  high-level consumer API 中,每个 consumer 都属于一个 consumer group,每条消息只能被 consumer group 中的一个 Consumer 消费,但可以被多个 consumer group 消费。
7.replica:
  partition 的副本,保障 partition 的高可用。
8.leader:
  replica 中的一个角色, producer 和 consumer 只跟 leader 交互。
9.follower:
  replica 中的一个角色,从 leader 中复制数据。
10.controller:
  kafka 集群中的其中一个服务器,用来进行 leader election 以及 各种 failover。
12.zookeeper:
  kafka 通过 zookeeper 来存储集群的 meta 信息。

3、kafka zookeeper节点存储架构图

4、producer发布消息

  1. 写入方式:producer采用push模式将消息发送到broker(kafka集群中的服务器),每条消息都被append到partition中,属于顺序写磁盘
  2. 消息路由:生产者发送消息时,会根据分区算法选择将其存储到哪一个partition中,其路由机制为:
    1. 指定partition则直接使用
    2. 未指定partition但指定key,通过key和value进行hash,选出一个partition
    3. partition和key均未指定,使用轮询选出一个partition

5、写入流程

1. producer 先从 zookeeper 的 "/brokers/.../state" 节点找到该 partition 的 leader
2. producer 将消息发送给该 leader
3. leader 将消息写入本地 log
4. followers 从 leader pull 消息,写入本地 log 后 leader 发送 ACK
5. leader 收到所有 ISR 中的 replica 的 ACK 后,增加 HW(high watermark,最后 commit 的 offset) 并向 producer 发送 ACK

6、数据发送保证机制

  1. At most once 消息可能会丢,但绝对不会重复传输
  2. At least one 消息绝不会丢,但可能会重复传输
  3. Exactly once 每条消息肯定会被传输一次且仅传输一次

7、broker保存消息

  1. 将topic分成多个partition存储,无论消息是否被消费,kafka都会保留所有消息,有两种策略可以删除旧数据,基于时间:log.retention.hours,基于大小:log.retention.bytes

8、kafka HA

  1. 同一个partition可能会有多个replica,没有replica的情况下,一旦broker宕机,其上所有的partition数据都不可被消费,同时生产者producer 也不能再将数据存于其上的 patition。引入replication 之后,同一个 partition 可能会有多个 replica,而这时需要在这些 replica 之间选出一个 leader,producer 和 consumer 只与这个 leader 交互,其它 replica 作为 follower 从 leader 中复制数据。
  2. Kafka 分配 Replica 的算法如下:
    1. 将所有 broker(假设共 n 个 broker)和待分配的 partition 排序
    2.  将第 i 个 partition 分配到第(i mod n)个 broker 上
    3. 将第 i 个 partition 的第 j 个 replica 分配到第((i + j) mode n)个 broker上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值