消息中间件概述(转载)

转载:

https://blog.csdn.net/wqc19920906/article/details/82193316/

https://www.cnblogs.com/WUXIAOCHANG/archive/2019/05/22/10904987.html

一、简介

消息中间件是基于队列与消息传递技术,在网络环境中为应用系统提供同步或异步、可靠的消息传输的支撑性软件系统

它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。

 

二、消息中间件通用组成

 1. Broker(消息服务器)

,作为server提供消息核心服务

 2. Producer(消息生产者)

业务的发起方,负责生产消息传输给broker

 3. Consumer(消息消费者)

业务的处理方,负责从broker获取消息并进行业务逻辑处理

4. Topic(主题)

发布订阅模式下的消息统一汇集地,不同生产者向topic发送消息,由MQ服务器分发到不同的订阅者,实现消息的广播,相当于给每个消息打个标签,消费者只会消费特定标签的消息

5. Queue(队列)

PTP模式下,特定生产者向特定queue发送消息,消费者订阅特定的queue完成指定消息的接收

6. Message(消息体)

根据不同通信协议定义的固定格式进行编码的数据包,来封装业务数据,实现消息的传输

 

三、消息中间件应用场景

当你需要使用 消息队列 时,首先需要考虑它的必要性。可以使用消息队列的场景有很多,最常用的几种,是做 应用程序松耦合、异步处理模式、发布与订阅、最终一致性、错峰流控 和 日志缓冲 等。反之,如果需要 强一致性,关注业务逻辑的处理结果,则使用 RPC 显得更为合适。

1.支持横向扩展

部分场景如job定期更新数据,可以将一个任务拆成多个任务放入消息队列让其他服务器一起去执行任务,一台服务器作为生产者,多台服务器作为消费者,如果想提高消费能力就可以通过增加服务器来提升

2. 异步处理

有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。

3.应用耦合

交互系统之间没有直接的调用关系,只是通过消息传输,故系统侵入性不强,耦合度低。

如签到后发积分,将发积分流程放入消息队列中,发积分的成功与否并不会影响签到成功

4. 流量削峰和流控

当上下游系统 处理能力存在差距的时候,利用 消息队列 做一个通用的 “漏斗”,进行 限流控制。在下游有能力处理的时候,再进行分发。

如秒杀、通知推送场景

5. 日志处理

将消息队列用在 日志处理 中,比如 Kafka 的应用,解决 海量日志 传输和缓冲的问题。
应用案例
把日志进行集中收集,用于计算 PV、用户行为分析 等等。

6.顺序保证

在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理

7.消息通讯

消息队列一般都内置了 高效的通信机制,因此也可以用于单纯的 消息通讯,比如实现 点对点消息队列 或者 聊天室 等。

 

四、常见消息中间件MQ介绍

1. RocketMQ

阿里系下开源的一款分布式、队列模型的消息中间件,原名Metaq,3.0版本名称改为RocketMQ,是阿里参照kafka设计思想使用java实现的一套mq。同时将阿里系内部多款mq产品(Notify、metaq)进行整合,只维护核心功能,去除了所有其他运行时依赖,保证核心功能最简化,在此基础上配合阿里上述其他开源产品实现不同场景下mq的架构,目前主要多用于订单交易系统。

2.kafka

Apache下的一个子项目,使用scala实现的一个高性能分布式Publish/Subscribe消息队列系统,具有以下特性:

  • 快速持久化:通过磁盘顺序读写与零拷贝机制,可以在O(1)的系统开销下进行消息持久化;
  • 高吞吐:在一台普通的服务器上既可以达到10W/s的吞吐速率;
  • 高堆积:支持topic下消费者较长时间离线,消息堆积量大;
  • 完全的分布式系统:Broker、Producer、Consumer都原生自动支持分布式,依赖zookeeper自动实现复杂均衡;
  • 支持Hadoop数据并行加载:对于像Hadoop的一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值