我是靠谱客的博主 淡定花瓣,最近开发中收集的这篇文章主要介绍【博学谷学习记录】超强总结,用心分享|架构师-消息中间件MQ一、消息队列作用二、消息队列种类三、持久化四、分布式五、通讯模式六、消息队列的优缺点七、消息队列选型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 一、消息队列作用
  • 二、消息队列种类
  • 三、持久化
  • 四、分布式
  • 五、通讯模式
  • 六、消息队列的优缺点
  • 七、消息队列选型

一、消息队列作用

消息队列的主要是解决什么问题?主要是解决异步消息、流量削峰、应用解耦。实现高性能、高可用,可伸缩和最终一致性架构。

二、消息队列种类

常用的有rabbitmq/kafka/rocketmq

三、持久化

mq消息存储到硬盘上,服务器挂了,消息不会丢

四、分布式

消费者/生产者都可以有多个
mq主要使用在分布式场景,如果是单机,尽量不要用mq

五、通讯模式

rabbitmq使用的点对点(消息只能被消费一次,消费之后消息消失)
kafka和rabbitmq都使用的集群模式

点对点,消息只能被一个消费者消费,且只能消费一次

集群模式,对点对点的简化,即可以有多个消费者集群(不同的分组)
一条消息会被A、B集群各消费一次(广播),集群B 中有多台机器,某一台挂了,还是可以消费某消息,且也只会消费一次,可用性高

集群模拟广播-安全性可用性较高
特殊场景:比如分组A 是短信业务,分组B 邮件业务,需要同时发送。采用这种架构,安全性/可用性都较高

六、消息队列的优缺点

优点是可以解决异步消息、流量削峰、应用解耦等问题。
缺点是1、系统可用性降低;2、系统复杂性提高;3、容易出现数据不一致性问题。

七、消息队列选型

ActiveMQ—太老旧了—不推荐使用
RabbitMQ-数据丢了就找不到
延时很低—使用的推模型(kafka使用的拉模型)
推模型:mq内部主动把消息推给消费者(快)
拉模型:消费者主动去拉(循环,延时有点)
mq消息队列只是kafka中的一个功能
kafka是大数据通信中的一个组件,支持消息队列功能(但没有rocketmq完善),还有其他功能
kafka不适用于业务开发,不如rocketmq完善,性能很高,但很多功能需要自己实现
在这里插入图片描述

消息重复:RabbitMQ可控制、kafka理论上有重复、rocketmq允许重复(自己解决)
kafka通过配置可以达到消息不丢失,但是性能会变得很低
kafka做不到严格有序,rocketmq可以做到严格有序
消息有序两个级别
1/消息有序;2/严格有序
严格有序需要考虑多线程下是否有序+消息重试(该消息是否已经被某线程消费)

总结:
如果只是计算/没有业务处理,使用kafka最好
rabbitMQ—对消息堆积不友好
rocketmq—中规中矩,性能稳定(不管堆积多少消息、有多少队列、并发量大小 稳定性最好)
kafka—topic支持太多,性能会下降(数据量不大时延时反而高—不适合在线业务场景)
activeMQ—不推荐

最后

以上就是淡定花瓣为你收集整理的【博学谷学习记录】超强总结,用心分享|架构师-消息中间件MQ一、消息队列作用二、消息队列种类三、持久化四、分布式五、通讯模式六、消息队列的优缺点七、消息队列选型的全部内容,希望文章能够帮你解决【博学谷学习记录】超强总结,用心分享|架构师-消息中间件MQ一、消息队列作用二、消息队列种类三、持久化四、分布式五、通讯模式六、消息队列的优缺点七、消息队列选型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部