刨根问底: Kafka 到底会不会丢数据?

e1f1b2ca4548727d3e9517d97581cc4e.png

若有收获,请记得分享和转发哦

大家好,今天我们来聊聊 Kafka 到底会不会丢数据呢?如果丢数据,究竟该怎么解决呢?

只有掌握了这些, 我们才能处理好 Kafka 生产级的一些故障,从而更稳定地服务业务。

认真读完这篇文章,我相信你会对Kafka 如何解决丢数据问题,有更加深刻的理解。

这篇文章干货很多,希望你可以耐心读完。

8e648d69faafaffc41580bacd84135f3.png

01 总体概述

越来越多的互联网公司使用消息队列来支撑自己的核心业务。由于是核心业务,一般都会要求消息传递过程中最大限度的做到不丢失,如果中间环节出现数据丢失,就会引来用户的投诉,年底绩效就要背锅了。

那么使用 Kafka 到底会不会丢数据呢?如果丢数据了该怎么解决呢?为了避免类似情况发生,除了要做好补偿措施,我们更应该在系统设计的时候充分考虑系统中的各种异常情况,从而设计出一个稳定可靠的消息系统。

大家都知道 Kafka 的整个架构非常简洁,是分布式的架构,主要由 Producer、Broker、Consumer 三部分组成,后面剖析丢失场景会从这三部分入手来剖析。

578e2faa80512f33adad6ae64b28929b.png

61094a0a8d0e7a6f6909e5f6daa8d1f0.png

2b986553de5d4c76164544c5719d1f97.png

1aedcdfebb91e0eab272ce20bbfb66e0.png

1691dbd5dacc3d1d398bed54c916e885.png

5ad9950cd1864f74ea350ebede362d46.png

efdd2425ec1616faefbf1e11c8787f7a.png

c584ca56da4cbb3dad41ed0637fee42a.png

在 Kafka Producer 端的 acks 默认配置为1, 默认级别是 at least once 语义, 并不能保证 exactly once 语义。

d6d7389655084d1e6ce9f6e46494ce2c.png

0bcea9fcd2866bba25e5800bf361a58e.png

a88deadddaada272914710010f488510.png

ec0f526634ba3ec5849c9bc4c91b78c1.png

f3a23d6bc5774220b8700d56c3921e9f.png

34108fb89e857da27602dddf57292070.png

aeebb28388b6ffb0301ca12bcb5d20bb.png

ca448c05861d23e810ded81311a8bb0b.png

3bcd14702cde0cceb16049ef3b2f934c.png

cdb5125917ba7d5d3410d6f9149313de.png

fdbee5a8f294c021d1d819dd3cd43288.png

4dde0651f82ab899f82a9429a5c8985d.png

0c3953a2d7602120e92e6535f425ddc5.png

539af57bc3e6dc4b4c45f3baa8ce9b86.png

380365752af8de703d1b5360b797190f.png

20b1664295c27f03396b06d0bf752c0c.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值