zoukankan      html  css  js  c++  java
  • 消息队列问题汇总

    1. kafka/rabbitMQ/rocketMQ的优缺点

      kafka

     优点: 高吞吐量属于顶级 10w/s

        高可用集群

        性能高

        通过配置可以消息0丢失

     缺点:

        功能比较单一 只有推和拉 不适用复杂的业务场景

      rabbitMQ

      优点: 可以保证数据不丢失 

        高可用

        高级功能,死信队列 消息重试等

      劣势:

        吞吐量低 一秒几万

        维护比较困难,需要线性扩展比较麻烦

        erlang写的不好个性优化

      rocketMQ

      优点: 一秒十万的qps

        高可用大规模部署

        通过配置可以保证数据绝对不丢失

        高级功能比较多,比如 延迟消费 事务消息 

      缺点: 要有能力自己维护rocketmq

    2. mq的作用

      异步

      削峰

      解耦

    3. 使用mq会随之而来产生的问题?

      1. 可用性降低

      2. 复杂性增加

      3. 一致性受影响

    4. 如何保证消息队列的高可用

      rabbitmq

        普通集群模式没有高可用可言 只有一个节点有一份数据

        镜像集群模式  每个节点都有queue镜像数据 

      kafka

        主从替换 读主写主

    5. 消费到重复的数据?

      rocketmq/kafka 都是offset更新问题导致重复消费

      消费者pull 得不到回复会重新pull

      如何保证接口的幂等性?

      先查再插入

      数据库设置唯一索引

      状态机

    6. 消息保证顺序

      rabbitmq保证消息发送到同一个queue中由一个consumer消费

      rocketmq 维护一个唯一标识 传到同一个队列中 consumer根据id值hash到不同的内存队列中,然后用一个线程消费队列中的消息

    7. 数据积压怎么办?

      开启一个新的topic 拥有30个partition 旧的消费者把消息转发到新的topic中 等积压消息消费完 再转回旧的topic处理

      开启了过期时间?

      建议不开启,从数据源头从新导入

      积压导致mq磁盘空间都快慢了?

      消费者不消费转发消息到临时的mq中/或者直接消费不处理业务,后期重新补偿丢掉的数据

      

  • 相关阅读:
    数据挖掘专业术语
    Python 随机数用法
    精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团
    建模前的数据清洗/ETL(python)
    [分类算法] :朴素贝叶斯 NaiveBayes
    DSP, SSP, DMP
    laravel路由
    Laravel 5 中的配置
    Jquery的each遍历数据组成JSON
    JS上传图片预览及图片限制
  • 原文地址:https://www.cnblogs.com/isnotnull/p/14860602.html
Copyright © 2011-2022 走看看