Kafka如何保证不丢数据?

可靠性而言,基本没有任何东西可以保证做到百分之百的可靠。只能是通过一些策略来最大程度的保证可靠性。

1.增大副本数。副本数越多,越能够保证数据的可靠性。但是副本数越多也会引起磁盘,网络带宽的浪费,还有性能的下降。

所以,一般设置为3即可满足大多数的场景对可靠性的要求,部分银行之类的可能会设置成5.

2.生产端对于一些由于网络故障等造成发送失败的可重试异常,可以通过设置重试次数(retries)来增加可靠性。

3.生产者设置ack机制,为-1.但是也可能出现某个分区的数据的follower同步速度太慢都被踢出了ISR集合,那么设置成-1和设置成1的效果其实一样了,因为这种情况只有Leader收到数据就可以,没有其他保证性了。可以通过min.issync.replicas参数来进行配置,表示ISR集合中的最小副本数,也就是说,必须保证ISR>1的时候,ack机制才会更可靠。默认是1.

4.正常情况下,通过sender线程写入到页缓存后,会有操作系统进行刷盘任务,当然kafka也可以配置同步刷盘的策略。

5.消费端尽量保证手动处理偏移量。保证数据能成功消费,不会造成数据丢失的情况。

6.kafka producer .send(message,Callback) 可以通过回调函数,来处理发送失败的数据。

7.设置 unclean.leader.election.enable = false。这是 Broker 端的参数,它控制的是哪些 Broker 有资格竞选分区的 Leader。如果一个 Broker 落后原先的 Leader 太多,那么它一旦成为新的 Leader,必然会造成消息的丢失。故一般都要将该参数设置成 false,即不允许这种情况的发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值