RPC(Remote Procedure Call):远程过程调用,即像调用本地方法一样去调用远端服务器的方法。
RPC主要解决的问题:
- 分布式系统中,服务之间的调用问题
- 远程调用时,能够像本地调用一样方便
PRC核心点:
- 通讯问题:客户端和服务器端建立TCP连接
- 寻址问题:通常可以提供服务器(主机名/IP地址)以及特定的端口。分布式下,需要考虑负载均衡问题。
- 序列化和反序列化问题:网络协议是二进制的,因此需要在传输前序列化参数,接收后反序列化。
RPC主要组件和调用过程
RPC响应
- 同步
- 异步
PRC优缺点
-
优点
- 调用简单,清晰,透明,不用像 rest 一样复杂,就像调用本地方法一样简单
- 高效低延迟,性能高
- 自定义协议(让传输报文提及更小)
- 性能消耗低,高效的序列化协议可以支持高效的二进制传输
- 负载均衡
-
缺点
- 耦合性强
- 无法跨语言
Restful
- 面向资源。方法命令一般是名次, xxx/order=xxx
- 采用http协议
- 耦合性低,兼容性好,提高开发效率
- 不用关心接口实现细节,相对更规范,更标准,更通用,跨语言支持
- 性能不如 RPC 高
RPC 适用于内网服务调用,对外提供服务一般用 REST。