先简单了解概念:

什么是REST

REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。

解释一波:

没什么新奇的地方,就是rest还是在http协议上面定义一种规则。比如下面我们添加一个用户,原来我们定义添加用户是用addUser这个动词,现在直接对http协议用post来告诉我们,这就是添加用户,不需要每次都定义一个动词告诉我们做什么。

GET /rest/api/addUser --> POST /rest/api/user  #这是区别

下图:http四个动词实际上就对应着增删改查四个操作

用resp连接 res tp_RPC

什么是RPC

远程方法调用,就是像调用本地方法一样调用远程方法。

解释一波:
我们有外网A服务器和内网B服务器,就是我们需要在A服务调用一个方法,这个方法在B服务器上,这时候怎么办呢?那RPC就起作用,他就封装复杂细节,实现调用A服务器调用这个方法,实际上调用是B服务器上面的真正方法。

具体原理:

1、服务端如何确定客户端要调用的函数;

在远程调用中,客户端和服务端分别维护一个【ID->函数】的对应表, ID在所有进程中都是唯一确定的。客户端在做远程过程调用时,附上这个ID,服务端通过查表,来确定客户端需要调用的函数,然后执行相应函数的代码。

2、如何进行序列化和反序列化;

客户端和服务端交互时将参数或结果转化为字节流在网络中传输,那么数据转化为字节流的或者将字节流转换成能读取的固定格式时就需要进行序列化和反序列化,序列化和反序列化的速度也会影响远程调用的效率。

3、如何进行网络传输(选择何种网络协议);

多数RPC框架选择TCP作为传输协议,也有部分选择HTTP。如gRPC使用HTTP2。不同的协议各有利弊。TCP更加高效,而HTTP在实际应用中更加的灵活。

一些补充:

REST调用及测试都很方便,RPC就显得有点繁琐,但是RPC的效率是毋庸置疑的,所以建议在多系统之间的内部调用采用RPC。对外提供的服务,Rest更加合适。