热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

postmanrpc本地调用_RPC和REST的优缺点、区别、如何选择

写在前面PRC是一种技术的代名词,HTTP是一种协议,RPC可以通过HTTP来实现,也可以通过Socket自己实现一套协议来实现。所以谈论为什么用RPC不用HTTP是

写在前面

PRC 是一种技术的代名词,HTTP 是一种协议, RPC 可以通过 HTTP 来实现,也可以通过 Socket 自己实现一套协议来实现。所以谈论为什么用 RPC 不用 HTTP 是无意义的。

所以为什么要用rpc调用?
因为良好的 rpc 调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用 http 调用则缺少了这些特性。

RPC

调用过程

原理:socket + 动态代理

adf2bc47-4d12-eb11-8da9-e4434bdf6706.png

优点

调用简单,清晰,透明,不用像 rest 一样复杂,就像调用本地方法一样简单

高效低延迟,性能高

自定义协议(让传输报文提及更小)

性能消耗低,高效的序列化协议可以支持高效的二进制传输

自带负载均衡

缺点

  1. 耦合性强

引用其他人的总结:

我们为每个微服务定义了各自的 service 抽象接口,并通过持续集成发布到私有仓库中,调用方应用对微服务提供的抽象接口存在强依赖关系,因此不论开发、测试、集成环境都需要严格的管理版本依赖,才不会出现服务方与调用方的不一致导致应用无法编译成功等一系列问题,以及这也会直接影响本地开发的环境要求,往往一个依赖很多服务的上层应用,每天都要更新很多代码并 install 之后才能进行后续的开发。若没有严格的版本管理制度或开发一些自动化工具,这样的依赖关系会成为开发团队的一大噩梦。
而 REST 接口相比 RPC 更为轻量化,服务提供方和调用方的依赖只是依靠一纸契约,不存在代码级别的强依赖,当然 REST 接口也有痛点,因为接口定义过轻,很容易导致定义文档与实际实现不一致导致服务集成时的问题,但是该问题很好解决,只需要通过每个服务整合swagger,让每个服务的代码与文档一体化,就能解决。所以在分布式环境下,REST 方式的服务依赖要比 RPC 方式的依赖更为灵活。

2. 无法跨语言,平台敏感

Java 写的 RPC 微服务无法给 Python 调用。需要再实现一层 REST 来对外提供服务

REST

这里就指 HTTP 调用了

优点

耦合性低,兼容性好,提高开发效率

不用关心接口实现细节,相对更规范,更标准,更通用,跨语言支持

缺点

性能不如 RPC 高

选择

RPC 适用于内网服务调用,对外提供服务请走 REST。

IO 密集的服务调用用 RPC,低频服务用 REST

服务调用过于密集与复杂,RPC 就比较适用



推荐阅读
author-avatar
小呀么小果冻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有