Kafka

Kafka

1.kafka的架构图

在这里插入图片描述

2.重要概念

  • broker
    • 一个kafka集群中可以有多个broker服务器进程,实现kafka集群的负载均衡,容错
  • producer
    • 生产者
  • consumer
    • 消费者
  • topic
    • 一个topic是某一类数据
    • 一个broker可以有多个topic,一个topic可以有多个partition分区
  • partition
    • Kafka集群的分布式就是由分区来实现的,一个topic中的消息可以分布在不同的分区上
  • replica
    • 副本,实现kafka集群的容错,一个topic至少应该包含大于1 个副本
  • consumer group
    • 消费者组,每一个消费者组都有一个唯一的group.id,同一个消费者组中的消费者可以消费同一个topic中分区的数据
  • offset
    • 偏移量,对于消费者来说,可以根据offset来找到数据在partition中的位置,进而拉取数据

3.幂等性

  • 生产者消息重复问题

    • 生产者发送一条消息到kafka,kafka会把消息保存到partition中,并返回一个响应的ack,表示已经保存成功。但是如果响应过程中出现了问题,那么生产者就会重新发送一条一模一样的消息,那么分区中就会保存一个重复的消息
  • kafka中可以开启幂等性

    • 当kafka中的生产者生产消息时会增加一个pid(生产者的唯一编号)和sequence number(针对消息的递增序列)
    • 发送消息是会把这两个信息同时保存在分区中
    • 如果后来发送的消息的sequence number<=前一个消息的sequence number 那么就不会保存这条消息

4.生产者的分区写入策略

  • 轮询
  • key.hash()%分区的数量
  • 随机
  • 自定义

乱序问题

  • Kafka在使用生产者写入策略写入消息时,如果topic有多个分区,就会将数据散列在各个分区上
  • 如果只有一个分区,那么消息是有序的

5.消费者分区分配策略

  • range范围分配策略

    • kafka默认的消费者分配策略

在这里插入图片描述

  • RoundRobin轮询策略

在这里插入图片描述

  • Stricky粘性分配策略
    • 分区分配尽可能的均匀
    • 当发生rebalance再均衡的时候,分区分配尽可能的与上一次保持一致
    • 没发生rebalance的时候和RoundRobin相似
      在这里插入图片描述

6.leader和follower

  • kafka中的leader和follower是相对分区有意义的,不是相对broker
  • leader负责读写,follower只负责同步数据,如果leader挂了,会从follower中选举新的leader
  • kafka在创建topic的时候会尽量让leader在不同的broker中,也就是负载均衡
  • kafka中的leader和follower与zookeeper的不一样
    • kafka中的follower只是负责同步数据,不能读写,相当于一个消费者
      的leader和follower与zookeeper的不一样
    • kafka中的follower只是负责同步数据,不能读写,相当于一个消费者
    • zookeeper中的leader可读写,follower可读
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值