关于RPC与MQ异同的理解

最近看了一些资料,回顾过去项目的经验,梳理自己对两者异同的理解:

  • 相同:

1、都利于大型系统的解耦;

2、都提供子系统之间的交互,特别是异构子系统(如java\node等不同开发语言);

  • 不同:

1、RPC侧重功能调用,因此多半是同步的;

备注:也有基于MQ上实现RPC的,这样的话就是异步的,MQ本身,如rabbitMQ也有提供实现RPC的能力;

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

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

备注:之前在政府交换平台项目中,源数据库向目标库同步数据,底层用的就是MQ;

时间: 2024-07-30 20:05:12

关于RPC与MQ异同的理解的相关文章

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

RPC(Remote Procedure Call)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制. RPC框架 知名度较高的有Thrift(FB的).dubbo(阿里的). RPC的一般需要经历4个步骤: 1.建立通信 首先要解决通讯的问题:即A机器想要调用B机器,首先得建立起通信连接,主要是通过在客户端和服务器之间建立TCP连接. 2.服务寻址 要解决寻址的问题,A服务器上如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称是什么. 3.网络传输 1)序列化

MQ的理论理解

MQ(消息队列)简介 概念 : 消息队列(MQ)是一种应用程序对应用程序的通信方法. 应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们. 消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术. 排队指的是应用程序通过队列来通信.队列的使用除去了接收和发送应用程序同时执行的要求. 为什么会需要消息队列(MQ)? 主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,

自定义RPC的完整实现---深入理解rpc内部原理

倘若不使用RPC远端调用的情况下,代码如下: local.py # coding:utf-8 # 本地调用除法运算的形式 class InvalidOperation(Exception): def __init__(self, message = None): self.message = message or 'involid operation' def divide(num1, num2 = 1): if num2 == 0: raise InvalidOperation res = n

Hadoop2源码分析-YARN RPC 示例介绍

1.概述 之前在<Hadoop2源码分析-RPC探索实战>一文当中介绍了Hadoop的RPC机制,今天给大家分享关于YARN的RPC的机制.下面是今天的分享目录: YARN的RPC介绍 YARN的RPC示例 截图预览 下面开始今天的内容分享. 2.YARN的RPC介绍 我们知道在Hadoop的RPC当中,其主要由RPC,Client及Server这三个大类组成,分别实现对外提供编程接口.客户端实现及服务端实现.如下图所示: 图中是Hadoop的RPC的一个类的关系图,大家可以到<Hado

RPC学习

1. 你应该知道的 RPC 原理 2. Double原理解析 3. 分布式:ZK.一致性.redis.rpc.mq 4. redis教程 原文地址:https://www.cnblogs.com/syrup/p/9472689.html

徒手撸框架--实现 RPC 远程调用

微服务,已经是每个互联网开发者必须掌握的一项技术.而 RPC 框架,是构成微服务最重要的组成部分之一.趁最近有时间.又看了看 dubbo 的源码.dubbo 为了做到灵活和解耦,使用了大量的设计模式和 SPI机制,要看懂 dubbo 的代码也不太容易. 按照<徒手撸框架>系列文章的套路,我还是会极简的实现一个 RPC 框架.帮助大家理解 RPC 框架的原理. 广义的来讲一个完整的 RPC 包含了很多组件,包括服务发现,服务治理,远程调用,调用链分析,网关等等.我将会慢慢的实现这些功能,这篇文章

一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬

为什么写这篇文章? 博主有两位朋友分别是小A和小B: 小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑.再不然就是和运营聊聊天,写几个SQL,生成下报表.又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线.每天过的都是这种生活,技术零成长. 小B,工作于某国企,虽然能接触到一些中间件技术.然而,他只会订阅/发布消息.通俗点说,就是调调API.对为什么使用这些中间件啊?如何保证高可用啊?没有充分的认识. 庆幸的是两位朋友都很有上进心,于

当面试官要你介绍一下MQ时,该怎么回答?

一.为什么要使用MQ消息中间件? 一个用消息队列的人,不知道为啥用,有点尴尬.没有复习这点,很容易被问蒙,然后就开始胡扯了. 回答:这个问题,咱只答三个最主要的应用场景,不可否认还有其他的,但是只答三个主要的,即以下六个字: 解耦.异步.削峰 1.解耦 传统模式: 传统模式的缺点: 系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦! 中间件模式: 中间件模式的的优点: 将消息写入消息队列,需要消息的系统自己从消息队列中订

简单了解RPC

一.RPC是什么 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个地方(分布到各个服务器),调用者只想要函数运算的结果却不需要了解实现函数的具体细节.也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调