当前位置: 首页 > article >正文

【kafka】消息队列

本文主要通过字节的团队的博客学习kafka,写的真不错:一键跳转

1.kafka的架构在这里插入图片描述
2.kafka的副本管理
在这里插入图片描述
3.日志同步管理
在这里插入图片描述
在这里插入图片描述
4.kafka快的原因?
批量处理、消息压缩、建立索引、分区、一致性、顺序写盘、页缓存、0拷贝
5.kafka怎么保证可靠?
从生产者的角度来说:使用确认机制,当发送消息后通过同步或者异步的方式直到成功接受才算发送成功,代替发后即忘的消息发送模式
从kafka来看:当消息被从leader同步到ISO集合的follower副本后再向生产者发送响应
从消费者的角度来看:为了防止代码异常对消费的影响取消自动应答,只有业务执行成功后再手动提交
6.讲讲延迟队列和死信队列
延迟队列:在kafka中创建一个消息队列,为队列设置延时时间,将消息推送到队列中打上时间戳,消息达到延时后自动被删除。面对一些有短暂延迟的场景和避免消息积压
死信队列:在kafka上创建消息队列,为队列设置过期时间,消息推送进队列打时间戳,消息超时或处理失败或者重试达到上限就加入死信队列
7.怎么保证消息消费的顺序?
乱序场景:①kafka一个topic,一个partition,一个consumer,但是consumer内部进行多线程消费,这样数据也会出现顺序错乱问题。②具有顺序的数据写入到了不同的partition里面,不同的消费者去消费,但是每个consumer的执行时间是不固定的,无法保证先读到消息的consumer一定先完成操作,这样就会出现消息并没有按照顺序执行,造成数据顺序错误。
解决:①确保同一个消息发送到同一个partition,一个topic,一个partition,一个consumer,内部单线程消费
②写N个内存queue,然后N个线程分别消费一个内存queue即可
8.怎么解决消息挤压的问题
提高消费者处理能力:增加分区数量、增加消费者数量、优化消费者逻辑:异步处理+批处理
修改消费者每次拉取的数量,减少消费者请求次数;
处理热点分区、扩展 Kafka 集群
控制消息生产速率
9.怎么解决消费重复的问题

  1. 启用幂等性后,生产者会分配一个唯一的 producerId,并对每条消息加上递增的 sequence number,Kafka 通过这两个信息检测并避免重复写入。
  2. Kafka 提供了事务支持,可以确保一组消息要么全部成功写入,要么全部失败回滚。这样可以保证消费者在读取时不会看到部分提交的数据,避免由于失败重试导致的重复消费问题。
  3. 消费者侧的去重通常通过外部存储(例如数据库或缓存系统)实现。常见的方法是为每条消息分配一个唯一的 key,在消费时记录已经处理过的消息 key,如果再次消费到相同 key 的消息,直接跳过处理
  4. 手动提交位移:在消费者成功处理消息之后,再手动提交位移,从而避免因故障重启导致的重复消费。
  5. 在消费者端实现幂等操作,即使重复消费同样的数据,也不会产生副作用。

http://www.kler.cn/a/304562.html

相关文章:

  • idea 弹窗 delete remote branch origin/develop-deploy
  • 深入探索:Scrapy深度爬取策略与实践
  • Oracle 单机及 RAC 环境 db_files 参数修改
  • 多进程/线程并发服务器
  • HTTP常见的状态码有哪些,都代表什么意思
  • Jetpack 之 Ink API初探
  • OpenHarmony鸿蒙( Beta5.0)摄像头实践开发详解
  • RK3588人工智能学习笔记-WSL中使用RKNN-ToolKit2
  • OpenAI全新发布o1模型:开启 AGI 的新时代
  • Kafka下载与安装教程(国产化生产环境无联网服务器部署实操)
  • Ubuntu 22.04 源码下载的几种方法
  • QT:音视频播放器
  • 使用Python自动抓取亚马逊网站商品信息
  • 1. 运动控制指令概要(omron 机器自动化控制器)
  • 【MySQL】数据库的操作【字符集和校验规则】【对数据库进行操作】【数据库备份与恢复】
  • Axure多人协调的方式
  • c++207 运算重载
  • 【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十八)
  • 【AWDP】 AWDP 赛制详解应对方法赛题实践 量大管饱
  • 2.大语言模型LLM的涌现能力和关键技术
  • 计算机网络 --- 【2】计算机网络的组成、功能
  • TDengine在设备管理系统中应用
  • 【拥抱AI】沉浸式体验SpaCy开源分词器
  • 摩托车加装车载手机充电usb方案/雅马哈USB充电方案开发
  • JVM基础:深入理解类加载器
  • Ubuntu22.04系统安装opencv步骤简述及问题解决方法