消息队列理论知识学习

1.什么是消息队列

        消息队列一般简称为MQ(Messges Queue)消息队列本质上是一个队列,而队列中存放的是一个个消息.利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成,是在消息的传输过程中保存消息的容器.

        什么是队列:队列是一种数据结构,具有先进先出的特点.而消息队列就是将消息放到队列里,用队列做存储消息的介质.消息的发送方称为生产者,消息的接收方称为消费者.

        消息队列的组成:Broker(消息服务器,核心),Producer(消息生产者),Consumer(消息消费者),Topic(主题),Queue(队列)和Message(消息体).

2.消息队列的作用:解耦,削峰,异步.

  •         应用解耦:当一个主模块的完成需要多个模块共同完成时,主模块发送一条MQ,然后再由其他多个模块消费MQ,即可实现业务,降低模块之间的耦合.                                                                     
  •         流量削峰:主要用于高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪.
  •         异步通信:主业务执行结束后从属业务通过MQ,异步直行,减低业务的响应时间,提高用户体验.

3.消息队列的传输模式

        1).点对点模式:用于消息生产者和消息消费者之间点到点的通信

消息生产者将消息发送到Queue(队列)中,然后消息消费者从Queue(队列)找取出消息,当消息被消费之后就从Queue(队列)中删除,消息只能被一个消息消费者使用.

        2).发布/订阅模式:消息生产者向一个特定的Topic(主题)生产消息,0或多个订阅了该Topic(主题)的消息消费者,接收Topic(主题)的消息,在这种情况下发布者和订阅者彼此不知道.

消息生产者和消息消费者只有简历了订阅关系才能收到消息.Topic(主题)实现了发布和订阅,当消息生产者发布一个消息,所有订阅这个Topic(主题)的服务都能得到这个消息.

订阅有两种类型:       

  •         持久订阅:订阅关系建立后,消息就不会消失,不管订阅者是否都在线.
  •         非持久订阅:订阅者为了接受消息,必须一直在线,当只有一个订阅者时约等于点对点模式.

4.常用的消息队列

        1).ActiveMQ

                优点:单机吞吐量每秒万级,时效性毫秒级,可用性高,基于主从架构实现高可用,消息可靠性较低的概率丢失数据,支持多种语言,支持spring2.0的特性,支持多种传送协议,支持通过JDBC和journal提供高速的消息持久化.

                 缺点:官方维护少,社区活跃度不高.

        2).Kafka:是一个分布式消息发布订阅系统,为大数据而生的消息中间件.

                优点:单机吞吐量每秒百万级,时效性毫秒级,不会吊事数据,不会导致不可用.

                缺点:支持消息顺序,但是一台代理宕机后,会产生消息乱序,消费失败不支持重试,社区更新慢.

        3).RocketMQ:阿里系下开源的一款分布式,队列模型的消息中间件,3.0版本名称改为RocketMQ,是阿里参照kafka设计思想使用Java实现的一套消息队列.

                优点:单机吞吐量十万级,时效性毫秒级,消息可以做到0丢失,支持10亿级别的消息堆积.

                缺点:支持的客户端语言不多,目前是Java及C++,社区活跃一般.

        4).RabbitMQ:是使用Erlang编写的一个开源的消息队列.

                优点:单机吞吐量万级,时效性微秒级,支持多种语言.

参考:消息队列详解_悦.L的博客-CSDN博客_消息队列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值