Kafka学习笔记十:kafka优化

1.如何防止消息丢失

  • 发送方:使用同步发送,ack是1或者-1/all可以防止消息丢失,并且设置同步的分区数>=2(如果要做到99.9999%,ack设置成all,把min.insync.replicas配置成分区备份数)
  • 消费方:把自动提交改为手动提交

2.如何防止消息重复消费

在消费者端解决消费的幂等性问题

  • 在mysql表中创建一个联合主键
  • 使用分布式锁 redisson.lock()

3.如何做到顺序消费

  • 发送方:将ack不能设置为0,关闭重试,使用同步发送,等到发送成功再发送下一条,确保消息是顺序发送的
  • 消费方:只能设置一个分区,消费组中只能有一个消费者

顺序消费会牺牲掉性能,RocketMQ可以实现顺序消费功能

4.如何解决消息积压问题

  • 在这个消费者中,使用多线程,充分利用机器的性能进行消费消息
  • 通过业务架构的设计,提升业务层面消费消息的性能
  • 创建多个消费组,多个消费者,部署到其它机器上,一起消费,提高消费者的消费速度
  • 创建一个消费者,该消费者在kafka另建一个主题,配上多个分区,多个分区再配上多个消费者,该消费者将poll下来的消息,不进行消费,直接转发到新建的主题上,此时,新的主图的多个分区的多个消费者就一起消费了

5.延迟队列

应用场景:订单创建后,超过30分钟没有支付,则需要取消订单

  • kafka中创建相应的主题,消费者消费该主题的消息(轮询),消费者消费消息时判断消息的创建时间是否超过30分钟(前提时订单未支付)
  • 如果是:去数据库中修改订单状态为已取消
  • 如果否:记录当前消息的offset,并不再继续消费之后的消息,等待一定时间后,再次向kafka拉取该offset之后的消息,继续进行判断,以此反复

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只不秃头的小菜鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值