ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

kafka生产者消费者

2021-11-21 17:04:50  阅读:150  来源: 互联网

标签:消费者 生产者 分区 kafka follower leader once


生产者

生产者发送确认机制

  1. 半数follower响应
  2. 全部follower响应–>改进:ISR机制:in-sync-replica set【挑选进入isr的follower规则:1、同步的时间 2、和leader相差的条数(0.9版本中被去掉)】

注意:isr中的follower和正常的follower的概念问题

acks配置

0:发送完就返回。At most once

1:只等待leader写完就返回。

-1:leader和follower都写完返回,会有数据重复问题(当主leader挂了,follower同步完成,ack未返回的情况)。 At least once

Exactly once

At least once + 幂等性 = Exactly once

幂等性:1的多少次方都是1,无论发送方发送多少重复的数据,只会有一份数据持久化(类似于set机制)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x6FgYJpg-1637484715573)(/Users/tjc/Library/Application Support/typora-user-images/image-20211114162036081.png)]

消费一致性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RtepktvZ-1637484715575)(/Users/tjc/Library/Application Support/typora-user-images/image-20211114160617843.png)]

hw解决的是消费和存储一致性问题,并不能决定数据丢失和重复的问题(由ack决定)

消费者

消费者组的注意点

  1. 消费者组的消费者不能消费同一个分区

消费者组作用

提供的可扩展且具有容错性的消费者机制

理想情况下,Group中的Consumer实列的数量应该等于该Group订阅主题的总分区数。

分区分发策略

  1. 轮询(RoundRange):按消费者组划分 问题:消费者组中的消费者订阅不同主题,消费数据会有问题
  2. Range:range 策略主要是基于范围的思想。它将单个 topic 的所有分区 按照顺序排列,然后把这些分区划分成固定⼤⼩的分区段并依次分配给每个 consumer; 问题:消费者主消费不均衡问题

分区rebanlance触发条件

offset:

topic+partition+group

kafka高效写数据

  1. 顺序写磁盘
  2. 零拷贝技术
  3. 多个分区、并发读取

**关于partition的分配,还有leader的选举,总得有个执行者。在kafka中,这个执行者就叫controller。**kafka使用zk在broker中选出一个controller,用于partition分配和leader选举。

标签:消费者,生产者,分区,kafka,follower,leader,once
来源: https://blog.csdn.net/qq_33457548/article/details/121456093

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有