什么是RPC?与REST的区别

近期在复习面试,就整理一下一些知识点,希望能帮到你。

1、什么是RPC,RPC与REST的区别:

RPC(Remote Procedure Call)和REST(Representational State Transfer)是两种不同的分布式系统通信和编程范式,它们在设计理念、通信协议、数据传输方式、序列化协议等方面存在显著差异:

        设计理念。RPC是一种面向过程的编程范式,它允许客户端像调用本地方法一样调用远程服务器的方法;REST是一种面向资源的编程范式,它强调的是资源的获取和操作,而不是具体的操作过程。

       通信协议。RPC可以使用多种传输协议进行通信,如TCP、UDP和HTTP;REST通常基于HTTP协议。

       数据传输方式。RPC基于请求/响应模式,客户端发送请求到服务器,服务器返回响应;REST基于持续的客户端-服务器交互,客户端发送HTTP请求来获取或修改资源。

       序列化协议。RPC使用的序列化协议通常包括JSON、XML、Hessian、Protobuf等;REST通常使用JSON或XML。

总结来说,RPC更关注远程过程调用,而REST更侧重于资源的表示和传输。

2、RPC的调用过程:

RPC 是一种技术思想而非一种规范或协议,通常的调用过程为:把函数序列化,远端收到后,再把函数反序列化,完成函数调用。就是像调用本地方法一样调用远程方法,通信协议大多采用二进制方式,长链接,效率更高。

RPC架构里包含如下4个组件:

        客户端(Client):服务调用方

        客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数打包成网络消息,再通过网络发送给服务方

        服务端存根(Server Stub):接受客户端发送过来的消息并解包,再调用本地服务

        服务端(Server):真正的服务提供者。

3、Rpc具体实现步骤:

        1、服务调用方(client)(客户端)以本地调用方式调用服务;

        2、client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;在Java里就是序列化的过程

        3、client stub找到服务地址,并将消息通过网络发送到服务端;

        4、server stub收到消息后进行解码,在Java里就是反序列化的过程;

        5、server stub根据解码结果调用本地的服务;

        6、本地服务执行处理逻辑;

        7、本地服务将结果返回给server stub;

        8、server stub将返回结果打包成消息,Java里的序列化;

        9、server stub将打包后的消息通过网络并发送至消费方

        10、client stub接收到消息,并进行解码, Java里的反序列化;

        11、服务调用方(client)得到最终结果。

RPC框架的目标就是把2-10步封装起来,把调用、编码/解码的过程封装起来,让用户像调用本地服务一样的调用远程服务。

                        

作者:李明燮
链接:【笔记】RPC和REST的区别 - 简书

4、rest 和 rpc 的优缺点:

REST:想对服务器里面的资源进行操作,下载服务器端的当前状态,修改之后将最终用户所期待的状态发送给服务器,服务器按照客户的期待进行修改。修改代码在客户端,所以REST风格客户端逻辑相比客户端更复杂。自由度更大一些,但因此造成失误的可能性也大一些。传输层基于HTTP,相比于TCP,多了一层协议。但基于HTTP传输,可以穿越防火墙,适合组织内向组织外提供服务,此外rest的接口的安全性相比rpc更高。

RPC:想对服务器里面的资源进行修改,首先需要了解服务器中各个接口都是干啥的,然后把相关参数传给服务器提供的接口,让服务器自己去执行修改。修改代码在服务端,所以RPC服务端逻辑更复杂些,服务器会有很大的工作量,但分工明确,不容易造成失误。可以基于TCP或HTTP,如果基于TCP,将少一层协议。

5、例子:

如果想对服务端数据库里面的一个数进行 加1、减1 这两种操作。两种不同的实现方式如下:

REST中:服务端只要留一个接口就可以了,作用是更改数据库里面的数(不管它是加了还是减了),然后客户端有两个函数,分别进行加操作和减操作,但客户端操作完都提交给同一个服务端函数,然后更改数据库。

RPC中:服务端应该留两个接口函数,分别对应加1和减1操作,当客户端需要进行修改时,先要弄明白哪个做加1操作、哪个做减1操作,然后入参调用,让服务端进行加1,减1操作后更改数据库。

                        

原文链接:rest和rpc的区别-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值