为什么使用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
目录
相关文章
|
网络协议 网络架构
01RPC - RPC介绍
01RPC - RPC介绍
56 0
|
网络协议
|
网络协议
|
2月前
|
负载均衡 Java API
什么是RPC
【9月更文挑战第8天】什么是RPC
74 3
|
6月前
关于RPC
关于RPC
|
Dubbo Java 应用服务中间件
为什么大厂用的都是RPC服务
在很久以前,笔者刚毕业开始工作那会儿,对于企业开发的模式一直以为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。
194 1
|
JSON 移动开发 网络协议