Kafka基本知识

Kafka特点

1.高吞吐量,低延迟。

2.可拓展性:集群支持热拓展。

3.持久性:消息被存储在硬盘中,支持数据备份。

4.容错性:允许集群结点失败。

5.高并发:支持上千个客户端进行读写。

Kafka的组成

broker:kafka的节点(服务器)

topic:用于存储消息的逻辑概念,实际存储消息的是topic中的patition(分区),一个topic可以拥有多个partition

partition:用于存储消息的真正位置

replica(副本):每一个partition都会有一个或者多个replica,用于当broker出现问题时候kafka集群能够正常使用,一般每个partition的replica都会均匀的分布在broker中(在replica中有一个leader和多个follower,kafka只会向leader读写数据,然后同步给follower,这里follower不处理读写任务,只是用于数据的备份)

producer:用于创建、发送消息的客户端。发送者是针对topic进行发送,消息会根据hash运算均匀的分布在不同partition中。

consumer:用于消费消息的客户端,消费者是针对于topic进行消费(也可以指定对应的partition进行消费,不过有可能无法完全消费topic的所有消息)

consumerGroup:消费者组,一个消费者组只需要指定一个topic,然后消费者组中的消费者会顺序消费topic中对应顺序的partition。在这里插入图片描述

1.如果 partition > 消费者组员数
那么就会存在一个消费者消费多个partition
2. partition = 消费者组员数
那么每一个消费者就会顺序消费一个partition
3. partition < 消费者组员数
那么就会存在一个或者多个消费者无partition消费(即处于空闲状态)

所以这里我们可以看明白,在consumerGroup中,一个consumer可以消费一个或者多个partition,但一个partition只能被一个consumer所消费。

如果想让一个partition被多个consumer消费的话,那么则保证这两个consumer不在同一个consumerGroup中即可。

Kafka Broker Leader选举机制

Kafka依赖于zookeeper实现的,zookeeper为kafka提供了保存offset偏移量,节点信息,集群等。

当Kafka没有Leader的时候,此时所有的broker都会想zookeeper申请一个临时节点,当一个申请成功的broker则选举称为Broker leader,剩余的broker叫做Broker follower,leader会监听其他follower的所有信息,如果这个leader宕机了,那么其他的follower则会重新向zookeeper申请临时节点,申请成功则变为leader,如果其中一个follower宕机,则leader会读取该follower的ISR中所有partition follower,并且选取其对应的一个replica作为partition继续使用,如果ISA中所有的replica都宕机了,那么就选取一个存活的replica当leader,如果所有的replica都宕机了,则将leader = -1 等待机器的恢复。

ISR(in-sync replica)

partition的leader会维护一个与其基本保持同步的一个replica表(副本表),即ISR,每个partition都有一个ISR表,只不过由leader进行维护。

当leader维护中发现一些replica滞后太多,则会将该replica移出ISR表,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值