kafka消息流处理流程。

流程说明:

1、首先命令产看topic的详细信息:

这个topic的partition-0的 leader是副本1号(0,1两个副本),

partition-1的 leader是副本0号

partition-2的 leader是副本1号

2、producer 先从 zookeeper 的 "ls /brokers/topics/one_broker_topicsss/partitions/1/state" 节点找到该 partition 的 leader

3、prodcer将信息发送给leader

4、leader将信息写入到log里面,并且记录index位置信息。

5、follower从leader上面去pull数据,在完成的时候,follower会个leader发送ACK信息,

6、leader在收到来自ISR中的replica的ack信息,最后向producer发送ack信息。

ISR指的是:比如有三个副本 ,编号是① ② ③ ,其中② 是Leader ① ③是Follower。假设
在数据同步过程中,①跟上Leader,但是③出现故障或没有及时同步,则① ②是一个ISR,而
③不是ISR成员。后期在Leader选举时,会用到ISR机制。会优先从ISR中选择Leader
kafka的HA机制:

同一个partition将会有多个副本的,

如果是只有一个partition的话,当broker宕机的话,则partition则不能再提供读写服务了。

在引入副本replica机制之后,则在partition之间需要选出一份leader来进行和producer、consumer之间交互,而其他的replica则是从这个leader中去复制数据的。

leader Failover机制:

当leader宕机之后,默认是从follower中选举出leader,在新选举的leader满足的基本条件是:新的leader必须具有之前旧的leader commit的所有信息。

由写入流程可知 ISR 里面的所有 replica 都跟上了 leader,只有 ISR 里面的成员才能选为 leader。
对于 f+1 个 replica,一个 partition 可以在容忍 f 个 replica 失效的情况下保证消息不丢失
比如 一个分区 有5个副本,挂了4个,剩一个副本,依然可以工作。
注意:kafka的选举不同于zookeeper,用的不是过半选举。

当所有 replica 都不工作时,有两种可行的方案:
1. 等待 ISR 中的任一个 replica 活过来,并选它作为 leader。可保障数据不丢失,但时间可能相对
较长。
2. 选择第一个活过来的 replica(不一定是 ISR 成员)作为 leader。无法保障数据不丢失,但相对不
可用时间较短。
kafka 0.8.* 使用第二种方式。此外, kafka 通过 Controller 来选举 leader。
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值