RPC与Restful的区别

RPC(Remote Procedure Call)和RESTful是两种服务交互方式。RPC更侧重于动作,传输效率高,但实现复杂;RESTful面向资源,调用简单,通用性强。RPC适合公司内部服务调用,如长链接、注册发布机制和微服务,而RESTful常用于对外接口。RPC传值可以按值或引用,按引用传递需处理复杂的数据结构转换。

RPC与Restful的区别

面对对象不同:

RPC 更侧重于动作。
REST 的主体是资源。
RESTful 是面向资源的设计架构,但在系统中有很多对象不能抽象成资源,比如登录,修改密码等而 RPC 可以通过动作去操作资源。所以在操作的全面性上 RPC 大于 RESTful。

传输效率:

RPC 效率更高。RPC,使用自定义的协议,对传输的数据进行二进制压缩,可以让请求报文体积更小,或者使用 HTTP2 协议,也可以很好的减少报文的体积,提高传输效率。
复杂度:

RPC 实现复杂,流程繁琐。
REST 调用及测试都很方便。
RPC 实现需要实现编码,序列化,网络传输等。而 RESTful 不要关注这些,RESTful 实现更简单。

灵活性:

HTTP 相对更规范,更标准,更通用,无论哪种语言都支持 HTTP 协议。
RPC 可以实现跨语言调用,但整体灵活性不如 RESTful。
总结

RPC 主要用于公司内部的服务调用,性能消耗低,传输效率高,实现复杂。

HTTP 主要用于对外的异构环境,浏览器接口调用,App 接口调用,第三方接口调用等。

RPC 使用场景(大型的网站,内部子系统较多、接口非常多的情况下适合使用 RPC):

长链接。不必每次通信都要像 HTTP 一样去 3 次握手,减少了网络开销。
注册发布机制。RPC 框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。
安全性,没有暴露资源操作。
微服务支持。就是最近流行的服务化架构、服务化治理,RPC 框架是一个强力的支撑。

参考链接:面试问题:REST与RPC区别?

RPC传值与传引用的区别

参数传递有两种形式:一种是按值传递,另外一种是按引用传递。按值传递参数的情况相对比较简单,我们只需要把值复制到网络消息中即可;按引用传递的情况就变得复杂的多,单纯的传递引用的地址空间毫无意义,因为在远程系统当中,这一地址空间指向的可能是另外一个完全不同的事物。因此,要做到支持传递引用参数,我们需要向网络中来发送参数的副本,把它们存放在远程系统的内存中,并向他们传递一个指向远程系统调用函数的指针,然后向客户端返回该对象并复制其引用。如若需要在远程系统调用中传递复杂的数据结构,比方说树结构或者是链表结构,那么我们就需要首先把这个复杂的结构转化成为一种无指针形式的数据表示,例如说扁平树的结构,然后通过网络传输,在远程系统端重构数据。

参考链接:远程过程调用RPC(一) - 云+社区 - 腾讯云

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值