一文了解消息队列MQ(超详细+干货满满)

本文介绍了消息队列MQ的概念,与RPC的差异,包括它们的工作原理、特点、应用场景,如解耦、流量削峰等,并列举了ActiveMQ、RabbitMQ、Kafka、RocketMQ和ZeroMQ等常见消息队列的特性。

原文章链接:消息队列MQ快速入门(概念、RPC、MQ实质思路、队列介绍、队列对比、应用场景)_zmq rpc-优快云博客

基本定义:MQ是一种进程间通信或同一进程的不同线程间的通信方式,队列就是一个消息容器,在具体应用中,我们将消息队列称之为中间件,消息队列不存储消息内容本身,只是消息的搬运工

要理解MQ,就需知RPC通信模型,RPC(全程Remote Procedure Call,远程过程调用),是一个可以像调用本地服务一样调用远程服务的计算机通信协议.

从本质上看,RPC一般对于客户端来说是一种同步的远程服务调用技术,而一般来说MQ是异步的远程调用

实体对象:
服务提供者(provider):提供具体的调用方法的系统,根据上图也就是服务端,服务端才是方法真正的提供者
服务消费者(consumer):调用服务的系统,根据模型图,也就是客户端
序列化(Serialization):将对象转换为便于进行网络传输的二进制或文本数据的过程
反序列化(Deserialization):二进制或文本数据再还原为对象的过程

RPC调用步骤:
1.建立通信:消费者要想调用提供者的方法,首先要和提供者建立通信连接,主要是通过客户端和服务器之间建立TCP连接实现的
2.服务寻址:寻址实现的是确定提供者的IP、端口号以及方法的名称
3.网络传输:消费者发起一个RPC调用时,将调用方法和参数的数据进行序列化传输给提供者,再通过网络传输将二进制数据发送回给消费者
4.服务调用:提供者进行本地调用后得到了返回值,提供者将返回值进行序列化操作后,再通过网络传输将二进制数据发送回给消费者
1.MQ的特点:面向数据、生产者与消费者、有缓冲节点、异步、系统级/模块级通信
2.MQ适用场景:
1、消息的发送者和消费者需要解耦(发送者和消费者都不再直接交互,而是通过中间件间接交互,实现了解耦)
2、发送者并不明确谁是消费者(也是因为发送者和消费者不进行直接交互)
3、发送者并不关心谁来消费信息(理由同上)
4、各个消费者可以从不同的角度入手处理消息
5、消费者的处理结果也不返回给发送者
6、消息的发送和处理是异步的
7、消息的关注者不止一个
3.MQ使用总结,也就是计算结果不要求立即返回给消息的发送者时,应该使用MQ,例如日志服务、业务监控服务


1.RPC特点:面向动作、请求响应模式、同步、对象级/函数级通信
2.RPC适用场景
1、客户端必须明确要调用哪个服务器
2、调用需要立即得到返回结果
3、架构简单
3.RPC使用总结,如果服务的调用需要在短期内返回结果时,并且同一个请求的关注者只有一个,这个时候就应该使用RPC

消息队列实质思路一发一存一消费

原始模型的两个关键词:消息和队列
消息:需要传输的数据,可以是最简单的文本字符串,也可以是自定义的复杂格式
队列:一种先进先出的数据结构,在这里是存放消息的容器,入队即发消息的过程,出队即收消息的过程
过程:生产者将消息投递到一个叫做队列的容器中,然后再从容器中取出消息,最后转发给消费者

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GeekInk失控

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值