RPC是Remote Procedure Calling即远程过程调用。 客户端通过参数传递的方式调用服务器上的一个函数或方法并得到返回的结果。 1. 客户端和服务端分别维护一个(ID——>方法)的对应表,ID在所有进程中都是唯一确定的,客户端请求调用时附上ID,服务端通过查表来确定客户端需要调用的服务。 2. 客户端和服务端进行交互时将参数或结果转化为字节流在网络中传输(即序列化和反序列化) 3. 多数RPC框架选择TCP作为传输协议,也有部分选择HTTP。TCP更加高效,HTTP应用灵活,各有利弊。 RESTFUL并不是一种协议,可以说是一种架构风格,提供设计原则和约束条件。 对资源的操作(获取、创建、修改、删除)的操作和HTTP协议提供的GET/POST/PUT/DELETE对应。 特点是: 1. 基于HTTP/HTTPS,跟语言无关。java写的接口,c++也可以调用,ios也可以调用,能够统一接口 2. 和RPC相比,当RPC的server更新时,那么客户的jar包也需要更新。 两者比较: 都是网络交互的协议规范,通常用于多个微服务之间的通信协议。 HTTP相对更规范,标准,通用,各种语言都支持HTTP协议,所以对于对外开放的API为了适用于编程语言的多样性都包含了RESTful风格。 RPC大大降低了架构微服务化的成本,提供调用方与服务方的研发效率,屏蔽跨进程调用服务的各类复杂细节,像调用本地服务一样。