RPC:
定义:全称是Remote procedure Call是一种进程间的通信方式,允许程序调用另一个地址空间的过程或函数,而不用程序员编码整个远程调用的细节,表现就是,无论程序员是调用本地的还是远程的函数,本质上编写的调用代码基本相同。远程方法调用,就是像调用本地方法一样调用远程方法。
特性
- 概念定义:简单,便于建立分布式
- 高效:过程调用起来十分简单而且高效
- 单机计算机中,往往是不同算法部分间的最重要通信机制
REST
REST是一种架构风格,指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。REST规范把所有内容都视为资源,网络上一切皆资源。
REST并没有创造新的技术,组件或服务,只是使用Web的现有特征和能力。 可以完全通过HTTP协议实现,使用 HTTP 协议处理数据通信。REST架构对资源的操作包括获取、创建、修改和删除资源的操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
区别:
REST(基于http协议)和RPC(一般基于tcp协议)都常用于微服务架构中。
1、HTTP相对更规范,更标准,更通用,无论哪种语言都支持http协议。如果你是对外开放API,例如开放平台,外部的编程语言多种多样,你无法拒绝对每种语言的支持,现在开源中间件,基本最先支持的几个协议都包含RESTful。
2、 RPC 框架作为架构微服务化的基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节。让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务。
REST调用及测试都很方便,RPC就显得有点繁琐,但是RPC的效率是毋庸置疑的,所以建议在多系统之间的内部调用采用RPC。对外提供的服务,Rest更加合适