kafka元语实现

如何确保非极端环境下,Kafka 不丢数据,以及 Kafka 集群尽可能稳定呢?
  1. Producer 端设置 ack 为 all(或者说尽可能越多越好,但实际生产里集群实例过多,这样设置会影响性能,因此根据具体情况来定),即 确保所有 replication 都拿到数据的时候,send 方法才得以返回,以此来判断数据是否发送成功,那么理论上来说,此时发送成功的数据都不会丢失;
  2. unclean.leader.election.enable 设置为 false(默认参数为 true),意思是,当存有你最新一条记录的 replication 宕机的时候,Kafka 自己会选举出一个主节点,如果默认允许还未同步你最新数据的 replication 所在的节点被选举为主节点的话,你的数据将会丢失,因此这里应该按需将参数调控为 false;
  3. auto.offset.reset 参数设置为 earliest 避免出现 offset 丢失的时候,跳过需要消费的数据的情况,准确来说这里并非丢失,即使因为参数配置的问题出现跳过的情况,也可以通过前置 offset 找回历史消息;
  4. 数据持久化的时间需要设置业务足够接受的程度,我自己业务上使用就是能保证我的数据持久化时间为8个小时,超过8个小时的数据将被清空。
每一个框架被设计的时候,都有考虑特定的使用场景的,比如Kafka就比较适合高吞吐量并且允许少量数据丢失的场景,所以一定要根据应用业务和使用场景来做技术选型。Kafka默认实现是至少一次消费数据。如果设置生产者为异步发送数据,或者设置ack为0或1会加快速度就变成了最多一次的元语了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值