为什么使用RPC

简介: Remote Process Call 远程过程调用。你对rpc的理解是什么?客户端调用服务端时,就像调用本地函数一样,直接使用并得到结果。

rpc是什么?

Remote Process Call 远程过程调用。

你对rpc的理解是什么?客户端调用服务端时,就像调用本地函数一样,直接使用并得到结果。

function addNum(a, b){
   return a+b;
}

var sum = addNum(2,3);

如上,本地调用,那RPC如何让服务调用远程服务像调用本地函数一样呢?调用过程中会遇到哪些问题需要解决呢?

image-20210409230216905-1617980915750.png

如图所示:

service1:传入参数,经过rpc框架,得到结果

service2:收到参数,执行逻辑,返回结果

RPC的主要职责:

  • client端:序列化、反序列化、连接池管理、负载均衡、故障转移、队列管理,超时管理、异步管理等等
  • server端:服务端组件、服务端收发包队列、io线程、工作线程、序列化反序列化等

为什么要用RPC?

平时用的比较多的一种远程调用方案基于Http协议的远程调用方案。如Http+Restful规范+序列化与反序列化构成一个完整的远程调用方案。

优点:

  • 可读性好,且支持跨语言

缺点:

  • 基于http协议是在应用层,包含了大量的http头信息导致有用的信息占比少
  • 进程间的调用就需要对http协议层层封装,易导致效率低
  • 使用http协议调用,还需要封装各种参数名和参数值

而RPC,理解为一种框架,它包括了:接口规范、序列化和反序列化、通信协议。

优点:

  • 支持跨语言
  • 调用远程方法就像调用本地的方法一样,数据传输效率更高
  • 支持多种协议,且协议私密,安全性高

缺点:

  • 可读性差,因通过牺牲可读性,提高效率

RPC框架用于屏蔽RPC调用过程中的序列化,网络传输等技术细节。让调用方只专注于调用,服务方只专注于实现调用。

什么场景可考虑使用RPC

两者的优劣,其实更多还是要站在业务场景的角度去思考选择相应的技术。可读性和效率上的抉择和自己业务需要去选择

如果使用rpc,使用的场景的考虑

  • 实时通信聊天IM系统,通过rpc方式实现实时高效率消息传输
  • 电商系统,业务功能多,拆解很多业务服务,服务之间都相互调用,那么内部可使用rpc
  • 项目太大,需要解耦服务,扩展性强、部署灵活,这时就要用到 RPC
目录
相关文章
|
域名解析 关系型数据库 MySQL
怎样用自己电脑搭建网络服务器!不花一分钱
怎样用自己电脑搭建网络服务器!不花一分钱
1327 1
|
Linux 网络安全 开发工具
Git学习笔记(一):基础与应用
本文档详细介绍了如何将本地项目关联到Gitee上的空仓库并上传代码,以及如何验证本机与Git服务器的SSH连接。同时,还概述了Git的基本概念、安装步骤、初始配置、常见命令及如何配置多个SSH-Key,适用于初学者快速上手Git操作。
431 51
Git学习笔记(一):基础与应用
|
前端开发 API Docker
前端微服务
前端微服务
539 0
|
计算机视觉 Python
目标检测笔记(四):自适应缩放技术Letterbox完整代码和结果展示
自适应缩放技术Letterbox通过计算缩放比例并填充灰边像素,将图片调整为所需尺寸,保持原始比例不变,广泛应用于目标检测领域。
941 1
目标检测笔记(四):自适应缩放技术Letterbox完整代码和结果展示
|
人工智能 监控 数据安全/隐私保护
AI视频监控在大型商场的隐私保护技术
为保障隐私合规,商场采取数据加密与匿名化处理,防止敏感信息泄露;同时通过透明性声明和合法授权,确保顾客知情并同意监控措施。技术手段包括加密算法保护、去除身份识别细节,并在显眼位置张贴隐私政策,采用电子屏幕、语音提示或二维码获取顾客同意,确保监控行为合法合规。
485 0
|
缓存 网络安全 开发工具
全面掌握 Git 和 Gitee:从安装到上传的完整指南
本文档介绍了如何安装和配置Git,以及如何与Gitee进行连接。首先从官网下载Git并安装,接着配置用户名和邮箱,生成SSH密钥并将其添加到Gitee账户,完成无密码登录的设置。文档还提供了基本的命令使用指南,包括文件操作、Git命令和gitee代码上传流程,最后讲解了提交信息的规范格式和回滚操作的方法。
1557 1
|
JSON API 开发工具
|
Dubbo Java 应用服务中间件
为什么大厂用的都是RPC服务
在很久以前,笔者刚毕业开始工作那会儿,对于企业开发的模式一直以为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。
511 1
|
开发工具 git
|
SQL 存储 分布式计算
大数据Hive入门概述
大数据Hive入门概述
795 1