美文网首页
kafka优缺点

kafka优缺点

作者: 小怪兽狂殴奥特曼 | 来源:发表于2021-03-18 10:06 被阅读0次

三大优点:
1.架构解耦
2.流量控制
3.异步处理

缺点:
1.消息丢失
2.消息重复
3.消息乱序
4.消息堆积

kafka如何解决这些问题
1.消息丢失。
日志场景,偶尔某条消息丢失也没关系。要求消息一定不丢失,从三个方面设置:
a.生产者端,必须等消息的成功确认。kafka端有ack=all选项。
b.broker端,消息落盘再回复成功。而且replica数一定要大于1,保证每个分区有多个副本.
c.消费者端,必须要等消息处理完毕再提交。

2.消息重复
消息重复的问题是由于生产者端可能由于某种原因没有收到broker端的成功确认,然后重复发送消息导致的。
如果生产者端不要求消息不丢失,那么只发送不管发送结果,就不会产生消息重复问题。
要保证消息不丢失,broker端必定会产生消息重复问题。
要避免这个问题,只能从消费者端解决。简而言之,就是保证消费端消费的幂等性。
保证消费端的消费幂等性,有如下几个方法:
1.每个消息给一个全局id,消费端消费后将id写到redis。每次消费时需要先去redis查一遍全局消息id
2.mysql插入数据,先查一下主键。有就update。
3.数据库设置唯一键。

3.消息乱序
kafka多分区之间数据可能是不是有序的。只有单个分区内的数据可以保证唯一性。
要保证唯一数据有序,唯一的办法只能是单topic单分区。生产端发送数据的时候指定key,这样数据就会被发送到同一个分区。
消费者端分两个步骤:消费+处理。一般处理比较耗时。我们可以采用一个线程专门消费,然后对clientId进行哈希,将消息分别哈希到N个内存消息队列,每个内存消息队列再用一个线程去处理。4C32G的机器,一般可以达到1000的qps。


20190110180112167.png

4.消息挤压
消息挤压的原因无非是消费能力与生产能力不匹配。
先从业务逻辑上优化,能批量执行的,则先批量执行。优化后还是没法提高,只能水平扩容。
假如没消费完,mq快爆炸了,那么可以先用一个服务将消息快速消费后存放到一个临时的mq,然后再慢慢消费。

相关文章

  • kafka优缺点

    三大优点:1.架构解耦2.流量控制3.异步处理 缺点:1.消息丢失2.消息重复3.消息乱序4.消息堆积 kafka...

  • 架构经验

    异步模式: 优缺点:提高客户线程处理吞吐量,解耦;延迟大 代表例子:zk写入,kafka客户端写入 客户线程写入消...

  • MQ-面试题

    1.mq优缺点 优点:解耦,削峰,异步缺点:系统复杂度高(考虑一致性,重复消费,消息丢失) 2. kafka,ac...

  • 消息队列的优缺点?Kafka、ActiveMQ、RabbitMQ

    一、概述 一个产品的出现,通常都有其优缺点,辩证看待,方可明白其适合的应用场景。 二、消息队列的优缺点 消息队列的...

  • Kafka详细的设计和生态系统

    Kafka详细的设计和生态系统 Kafka生态系统 - Kafka核心,Kafka流,Kafka连接,Kafka ...

  • kafka全面认知

    什么是Kafka[#---kafka] Kafka的应用场景[#kafka-----] Kafka的架构[#kaf...

  • Kafka & NSQ

    Kafka & NSQ Kafka kafka struct kafka & consumer group 2ka...

  • kafka学习系列

    Kafka学习总结(一)——Kafka简介 Kafka学习总结(二)——Kafka设计原理 Kafka学习总结(三...

  • Kafka Producer源码

    Kafka Producer Kafka Producer 是 kafka 提供的与 Kafka Broker 连...

  • Kafka 详解一 简介

    目录 Kafka 是什么 Kafka 核心组 Kafka 整体架构以及解析 Kafka数据处理步骤 Kafka名词...

网友评论

      本文标题:kafka优缺点

      本文链接:https://www.haomeiwen.com/subject/fqqucltx.html