MQ实际问题笔记

为什么用MQ:

系统解耦合, 异步化, 消除高峰,

 

缺点: 1系统可用性降低, mq一旦不好用, 系统整个不好用, 要等mq修复

    2 复杂性, 重发, 漏发

    3 一致性问题, 触发计算A ,计算B 需要一起成功, 结果B未成功,  

各mq优缺点:

active rabbitMQ RocketMQ  
万级 万级 十万级  
功能成熟 有管理界面 topic数量级大  
官方维护减少, 社区活跃度低 erlang开发, 速度快, 不好定制 java开发  
  非分布式, 可集群 分布式扩展方便  

 

 



 

 

 

 

 

 

 

 

 

消息队列怎么保证高可用:  

RabbitMQ: 单机模式, 生产环境不太可能

      普通集群模式, A机器上的queue,  B, C上持有这台机器的元数据, 如果消费者连接到BC机器上, 会去A的Q拉数据

            缺点, 集群内的大量数据传输, 不高可用

      镜像集群模式: : 每个节点上都有完整镜像, 包含Q的全部数据, 高可用: 任何节点宕机, 其他的节点仍然可以publish, 控制台创建集群模式策略, 

              非分布式, 

Kafaka:   分布式MQ, 生产者写的数据, 可以分别存在partion1, 2,3 ,   高可用实现: 副本机制, 每个partition都有副本

 

如何处理消息重复:

消费者消费了offset100, 还没有发送offset给mq, 就重启了,   mq会再把offset100再发一遍

MQ重复发消息很正常, 一般只保证不丢, 不保证重发, 

 

posted @ 2021-07-07 10:18  hippoppower  阅读(81)  评论(0)    收藏  举报