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重复发消息很正常, 一般只保证不丢, 不保证重发,

浙公网安备 33010602011771号