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

Kafka消息不丢失处理

        kafka作为消息中间件,吞吐量大(至于为啥吞吐量大,本文不做介绍),所以大家用的多。涉及到异构数据库更换,以及数据预处理后的迁移,基本想到的都是通过kafka。

概览图

        我先画个图

生产者到kafka

推荐用kafkla0.11后的版本,有幂等性,开启后,即使生产者因为网络抖动重发到Kafka中,kafka也会自动去重,保证消费者不会重复消费。

enable.idempotence = true

我们已经保证了生产者不会丢数据,也不会有重复数据。

kafka到消费者

一般我们用第二种,可以保证数据不丢失。

ps:如果消费者挂了(集群的第一个节点挂了),新的节点会重新拉去这个offset,会导致重复消费(重复消费很好解决,比如有多个指令插入数据库,第一个指令成功了,后面的失败了,我们可以加一个事务,保证一致性。这种就解决了数据库的重复,或者我们插入前先根据id查询,保证一致性。存在我就不插入。或者后面去重,在消费者端处理方法很多)

如果kakfa挂了

kafka是集群,如果一个broker挂了,其他的【有备份】,那没事,除非broker都挂了(集群都挂概率很小,尤其是多az--区域数据中心),否则数据不会丢的。只要已经commit(提交到kafka)了。

备份怎么做?这就涉及到ack确认机制了,给他为-1,就会提交到每个broker,只要有一个broker正常,也没事。

参考:

https://zhuanlan.zhihu.com/p/459610418

豆包(帮忙答疑不懂的)

http://www.xdnf.cn/news/345115.html

相关文章:

  • MATLAB界面——valueChangedFcn回调和valueChanging回调
  • 数值分析——条件数
  • 04-redis
  • 从零开始了解数据采集(二十四)——工业4.0讲解
  • 企业微信自建消息推送应用
  • 【JS逆向基础】爬虫核心模块:request模块与包的概念
  • MySQL创新应用:分布式数据库与AI融合的智能分析平台
  • 问鼎昇腾AI创新大赛金奖!aiXcoder如何重塑软件开发新范式?
  • 为什么强调 RESTful 的无状态性?-优雅草卓伊凡
  • Python实例题:Python获取喜马拉雅音频
  • 【AI入门】CherryStudio入门5:创建知识库,对接Obsidian 笔记
  • C++ 深入解析 数据结构中的 AVL树的插入 涉及的旋转规则
  • 手撕基于AMQP协议的简易消息队列-2(所用第三方库的介绍与简单使用)
  • C++:扫雷游戏
  • 解决正点原子IMX6U开发板Buildroot构建qt根文件系统解压后,没有库文件
  • MySQL数据库初级体验
  • 2025年道路运输安全员考试题库及答案
  • 物流无人机自动化装卸技术解析!
  • Python开发系统
  • 网络接入服务商查询
  • 解决:‘java‘ 不是内部或外部命令,也不是可运行的程序-Java环境变量配置(含JDK8、JDK21安装包一站式配置)
  • 手写Promise的静态方法
  • Memgraph 的安装教程
  • 从一城一云到AI CITY,智慧城市进入新阶段
  • Oracle数据库DBF文件收缩
  • 基于大型语言模型的高效时间序列预测模型选择
  • 语音合成之十二 TTS声学编解码器的演进
  • 探索 C++23 的 views::cartesian_product
  • 【AI】DeepWiki 页面转换成 Markdown 保存 - Chrome 扩展
  • 可视化图解算法35:在二叉树中找到两个节点的最近公共祖先(二叉树的最近公共祖先)