原文章链接:消息队列MQ快速入门(概念、RPC、MQ实质思路、队列介绍、队列对比、应用场景)_zmq rpc-CSDN博客
基本定义: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
消息队列实质思路:一发一存一消费
原始模型的两个关键词:消息和队列
消息:需要传输的数据,可以是最简单的文本字符串,也可以是自定义的复杂格式
队列:一种先进先出的数据结构,在这里是存放消息的容器,入队即发消息的过程,出队即收消息的过程
过程:生产者将消息投递到一个叫做队列的容器中,然后再从容器中取出消息,最后转发给消费者