kafka生产与消费

本文详细介绍了Kafka的生产者与消费者的工作原理,包括ISR同步副本、生产者分区策略、消息幂等性、事务、HW与LEO概念。同时讨论了消费者分区策略、offset管理和数据一致性问题,强调了Kafka无法保证全局顺序性,但可通过单分区和业务处理实现局部顺序性。
摘要由CSDN通过智能技术生成

1. 生产者

生产者端关注最多的问题就是消息精准的被推送到集群。如何能做到这一点,就引出了ISR、生产者ACK、事务等。

1.1 ISR(in-sync replica set)同步副本

由于kafka是一个分布式系统,每一个分区都会有相应的副本来保证系统的高可用,即在leader副本挂掉后,follow副本能够重新选举成为leader对外提供服务。要实现这一个功能就必须要保证副本数据与leader数据保持一致。通常的做法是让全部的副本同步完成数据后再返回请求给生产者。 这样的实现能保证数据一致性,但是会导致效率低下,可用性低(因为只要一个节点发生故障就会导致无法返回ACK),所以kafka设置了一个ISR的概念。

每一个分区会设置至多N个ISR副本,要被选举为ISR副本需要数据同步的时间不超过replica.lag.time.max.ms指定的参数,而kafka在进行数据同步的时候只会考虑ISR中的副本同步情况
即:
1.当ACK设置为0的时候,不考虑落盘情况(这种情况是否有ISR效果一样)
2.当ACK设置为1的时候,只要考虑leader落盘成功则返回,不考虑副本同步情况(其实与是否有ISR也没有区别)
3.当ACK设置为-1(all)时候,需要等到ISR中的所有副本落盘成功后才返回ack(理论上有副本的情况下,kafka应该保证ISR中至少有包含leader在内2个及以上的副本)

1.2 生产者分区策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值