中间件——消息队列 MQ (Messges Queue)

1.是什么

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

队列是一个数据结构,具有先进先出的特点。而消息队列就是将消息放到队列里,用队列做存储消息的介质。

消息的发送称为生产者,消息的接收方称为消费者

2.消息队列组成 

Broker(消息服务器,核心部分):代理,

Producer(消息生产者)

Consumer(消息消费者)

Topic(主题)

Queue(队列)

Message(消息体)

多线程 每次加一个需调用一个接口还要重新发布系统

3.在什么场景用到了消息队列特点、作用)?

异步通信主业务执行结束后从属业务通过MQ,异步执行,减低业务的响应时间,提高用户体验。

流量削峰主要用于在高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪

应用解耦主要用于当一个业务需要多个模块共同实现,或者一条消息有多个系统需要对应处理时,只需要主业务完成以后,发送一条MQ,其余模块消费MQ消息,即可实现业务,降低模块之间的耦合

系统复杂性重复消费、消息丢失、消息的顺序消费

数据一致性分布式事务

可用性:

4.消息队列的的传输模式

点对点模式

发布/订阅模式

5.常用的消息队列

4.1 ActiveMQ:是Apache下的一个子项目

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

缺点:官方社区现在的维护越来越少;社区活跃度不高。

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

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

4.3 Kafka:是一个分布式消息发布订阅系统。为大数据而生的消息中间件,大数据的杀手锏

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

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

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

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

缺点:支持的客户端语言不多,目前是 java 及 c++;社区活跃度一般;

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值