首页 > 其他分享 >大名鼎鼎的RPC和MQ到底有啥区别和联系

大名鼎鼎的RPC和MQ到底有啥区别和联系

时间:2022-10-04 22:39:43浏览次数:40  
标签:调用 通信 RPC MQ 大名鼎鼎 服务器 序列化

RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。

RPC框架

知名度较高的有Thrift(FB的)、dubbo(阿里的)。

 

RPC的一般需要经历4个步骤:

1、建立通信

首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接,主要是通过在客户端和服务器之间建立TCP连接。

2、服务寻址

要解决寻址的问题,A服务器上如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称是什么。

 

3、网络传输

1)序列化

当A服务器上的应用发起一个RPC调用时,调用方法和参数数据都需要先进行序列化。

2)反序列化

当B服务器接收到A服务器的请求之后,又需要对接收到的参数等信息进行反序列化操作。

4、服务调用

B服务器进行本地调用(通过代理Proxy)之后得到了返回值,此时还需要再把返回值发送回A服务器,同样也需要经过序列化操作,然后再经过网络传输将二进制数据发送回A服务器。

通常,一次完整的PRC调用需要经历如上4个步骤。

MQ(消息队列)

消息队列(MQ)是一种能实现生产者到消费者单向通信的通信模型,一般来说是指实现这个模型的中间件。

典型的MQ中间件:

RabbitMQ、ActiveMQ、Kafka等

典型的特点:

1、解耦

2、可靠投递

3、广播

4、最终一致性

5、流量削峰

6、消息投递保证

7、异步通信(支持同步)

8、提高系统吞吐、健壮性

典型的使用场景:秒杀业务中利用MQ来实现流量削峰,以及应用解耦使用。

RPC和MQ的区别和关联

1.在架构上,RPC和MQ的差异点是,Message有一个中间结点Message Queue,可以把消息存储。

 

2.同步调用:对于要立即等待返回处理结果的场景,RPC是首选。

3.MQ 的使用,一方面是基于性能的考虑,比如服务端不能快速的响应客户端(或客户端也不要求实时响应),需要在队列里缓存。

另外一方面,它更侧重数据的传输,因此方式更加多样化,除了点对点外,还有订阅发布等功能。

4.而且随着业务增长,有的处理端处理量会成为瓶颈,会进行同步调用改造为异步调用,这个时候可以考虑使用MQ。


 



标签:调用,通信,RPC,MQ,大名鼎鼎,服务器,序列化
From: https://blog.51cto.com/u_15707676/5731952

相关文章

  • RabbitMQ-工作模式
    1.Hello_wordl!代码实现consumerpackagecn.pickle.consumer;importcom.rabbitmq.client.*;importjava.io.IOException;importjava.util.concurrent.Timeou......
  • Canal + RabbitMQ 实现监听 MySQL 数据库
    第一步:开启Mysql Biglog日志,Mysql8.0以上默认开启日志(window路径:C:\ProgramData\MySQL\MySQLServer8.0\mysql.ini)1.添加配置[mysqld]log-bin=mysql-bin#开启bi......
  • rabbitmq安装
    rabbitmq简介AMQP,即advancemessagequeuingprotocol(高级消息队列协议),是一个网络协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中......
  • linux grpc测试基于ghz工具
    1.测试前提,参考先熟悉grpc测试demo:参考官网:python实现grpcclient以及service:​​https://grpc.io/docs/quickstart/python/​​java实现client和service:https://grpc......
  • 智慧农业系统 - 可视化大屏(Echarts)&管理系统(HTTP(S)协议)&物联网平台(MQTT协议)
    一、平台功能特点农业数据实时监控,实时视频监控,历史数据分析;支持电子地图,设备地理位置精确定位;支持多级组织结构管理,满足集团大客户需求;可视化大屏展示,数据指标一目了然,彰显......
  • rocketmq 架构图
     因为相信,所以看见.......
  • RocketMQ学习
    1介绍RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。1.1RocketMQ特点支持发布/订阅(Pub/Sub)和点......
  • RabbitMQ(三)持久化
    如何保障当RabbitMQ服务停掉以后消息生产者发送过来的消息不丢失。默认情况下RabbitMQ退出或由于某种原因崩溃时,它忽视队列和消息,除非告知它不要这样做。确保消息不会丢......
  • docker启动rabbitmq
    运行dockersystemctlstartdocker查看进程ps-ef|grepdocker#运行rabbitdockerrun-d--hostnamemy-rabbit--namerabbit-p15672:15672-p5672:5672r......
  • jmeter测试rpc接口-使用dubbo框架调用
    1.下载用于测试dubbo的springboot项目参考文章:http://t.zoukankan.com/111testing-p-11297038.htmlhttps://zhuanlan.zhihu.com/p/539190478dubbo介绍:https://www.cn......