SpringCloud为啥要采用HTTP,不采用RPC

发布时间 2023-09-12 10:01:15作者: 开源遗迹

1、首先SpringCloud开启WEB服务依赖于Tomcat,Tomcat内部采用HTTP协议,开发者编写JSON作为资源传输和响应,可以更加能灵活处理业务数据。

2、RPC基于TCP协议,客户端和服务端需要三次握手,四次挥手进行数据传输。TCP是数据传输层,传输协议统一由服务端进行编写,进行二进制传输,依赖序列化和反序列化规则,
对于大部分需要灵活变动的数据则不适用,对于RPC常用于Socket连接(正经人谁用Socket),或一些基本不变动的传输格式数据,减少数据变动的开发成本。

建立Socke连接至少需要一对套接字,ClientSocket和ServiceSocket,连接步骤分三步:服务器监听,客户端请求,连接确认。

一个简单的HTTP请求

3、RPC:远程过程调用,是一种进程通信方式,是一种技术思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,

而不是程序员显示编码这个远程调用的细节。及程序员无论是调用本地还是远程函数,本质上编写的调用代码基本一样。


RPC两个核心模块:通讯,序列化。
无论是任何类型的数据,最终都需要序列化转成二进制流在网络上进行传输

4、Restful(HTTP)

Restful指的是一组框架约束条件和原则,符合这一规则的架构,就称之为Restful架构,背后的理念,不过是为了更好的使用现有的WEB准则和约束。

5、RPC和HTTP的区别

首先,二者相识,有请求有响应
不同:
RPC需要满足调用本地服务一样调用远程服务,也就是API的封装
Http协议没有这样的要求,因此请求、响应等细节需要我们自己去实现。
优点:
RPC更加透明,对用户方便
HTTP方式更加灵活,没有规定API和语言,跨平台,跨语言
选择:
速度方面:RPC速度比较快,底层都是TCP,HTTP消息往往比较臃肿,但是可以采用gzip压缩。
难度方面:RPC实现更为复杂,HTTP相对简单
灵活方面:HTTP更灵活,不需要关系实现的细节,可以跨平台,跨语言。
微服务强调,独立,自主,灵活,RPC限制太多,不适合微服务框架。一般采用HTTP(REST)风格服务。