美团一面:Spring Cloud 远程调用为啥要采用 HTTP,而不是 RPC?
作者:简简单单神经蛙来源:blog.csdn.net/m0_61878423/article/details/124607067
关于SpringCloud远程调用采用HTTP而非RPC。
1、首先SpringCloud开启Web服务依赖于内部封装的Tomcat容器,而今信息飞速发展,顺应大流量的微服务,采用Tomcat处置惩罚HTTP请求,开发者编写Json作为资源传输,服务器做出相应的响应,可以更加的灵活处置惩罚业务数据,而HTTP协议是跨平台的,符合微服务B/C数据交互的方式,可以的一套服务器对应移动H5、App、小步伐提供服务。
2、RPC基于TCP协议,客服端与服务端需要进行三次握手完成可靠连接,第四步进行数据传输。因为TCP是数据传输层,传输协议需要服务器同一编写,进行二进制传输,依赖序列化和反序列化规则,对于大部分应用需要灵活变更数据则不实用,RPC常用于Socket连接或一些根本不变更的传输格式数据,减少数据变更带来的开发本钱
创建Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket ,套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
一个简单HTTP请求处置惩罚
在Web应用中,浏览器请求一个URL,服务器就把生成的HTML网页发送给浏览器,而浏览器和服务器之间的传输协议是HTTP,那么接下来我们看下如何用Java来实现一个简单的HTTP服务器。
https://img2024.cnblogs.com/other/1218593/202409/1218593-20240903142731159-138654453.webp
RPC
RPC(Remote Procedure Call:远程过程调用):是一种历程间通信方式,是一种技能的思想,而不是规范。它允许步伐调用另一个地址空间(通常是共享网络的另一台呆板上)的过程或函数,而不用步伐员显式编码这个远程调用的细节。即步伐员无论是调用当地的还是远程的函数,本质上编写的调用代码根本相同。
普通的说法就是:比如说如今有两台服务器A和B,一个应用摆设在A服务器上,另一个应用摆设在B服务器上,如果A应用想要调用B应用提供的方法,由于他们不在一台呆板下,也就是说它们不在一个JVM内存空间中,是无法直接调用的,需要通过网络进行调用,那这个调用过程就叫做RPC。
https://img2024.cnblogs.com/other/1218593/202409/1218593-20240903142731366-1436402961.webp
https://img2024.cnblogs.com/other/1218593/202409/1218593-20240903142731587-2087562124.webp
RPC两个焦点模块:通讯,序列化。
注意:无论是何种类型的数据,最终都需要序列化转换成二进制流在网络上进行传输,数据的发送方需要将对象序列化转换为二进制流,而数据的吸收方则需要把二进制流反序列化为对象。
Restful(HTTP)
Restful 指的是一组架构约束条件和原则。" 如果一个架构符合 Restful 的约束条件和原则,就称它为 Restful 架构。隐藏在 Restful 背后的理念就是使用 Web的现有特性和能力,更好地使用现有 Web 标准中的一些准则和约束。
虽然 Restful 本身受 Web技能的影响很深, 但是理论上 Restful 架构风格并不是绑定在 HTTP 上,只不过目前 HTTP 是唯一与 Restful 相关的实例。所以我们这里形貌的 Restful 也是通过 HTTP 实现的 Restful。
RPC和HTTP的区别
首先,两者十分相似,有请求有响应。
不同:
[*]RPC需要满足像调用当地服务一样调用远程服务,也就是对调用过程在API层面进行封装。
[*]Http协议没有如许的要求,因此请求、响应等细节需要我们自己去实现。
优点
[*]RPC更加透明,对用户方便。
[*]HTTP方式更加灵活,没有规定API和语言,跨语言,跨平台。
缺点
[*]RPC需要在API层面进行封装,限制了开发的语言情况。
选择
[*]速度方面:RPC速度比HTTP快,底层都是TCP,HTTP消息往往比较痴肥,但是可以采用gzip压缩。
[*]难度方面:RPC实现有点儿复杂,HTTP相对比较简单。
[*]灵活性方面:HTTP更灵活,不需要关系实现的细节,可以跨平台,跨语言。
将来发展方向
[*]微服务,夸大独立,自治,灵活。RPC限制较多,因此微服务框架中,一样平常都会采用基于HTTP的rest风格服务。
更多文章推荐:
1.Spring Boot 3.x 教程,太全了!
2.2,000+ 道 Java口试题及答案整理(2024最新版)
3.免费获取 IDEA 激活码的 7 种方式(2024最新版)
觉得不错,别忘了顺手点赞+转发哦!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]