好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受.
目录
对于SpringCloud远程调用采用HTTP而非RPC,我之前在文章面试之 HTTP 和 RPC的区别到底是什么?-优快云博客
做过http和rpc的区别描述,今天再简单聊聊原因
一、背景介绍
SpringCloud 是一个基于 Spring Boot 的微服务框架,用于构建分布式系统。在微服务架构中,服务之间需要进行远程调用以实现功能交互。SpringCloud 选择 HTTP 协议作为远程调用的主要方式,而非传统的 RPC(Remote Procedure Call,远程过程调用)。这一选择有其特定的技术背景和优势。
二、HTTP 协议的优势
(一)跨平台与跨语言
-
跨平台:HTTP 协议是基于文本的协议,广泛应用于互联网,具有天然的跨平台特性。无论是 Windows、Linux 还是 macOS 等操作系统,都可以无缝支持 HTTP 协议。
-
跨语言:HTTP 协议的请求和响应格式简单,基于文本的 JSON 或 XML 格式可以被多种编程语言轻松解析和生成。这使得不同语言开发的服务之间能够轻松进行通信。
(二)灵活性
-
数据格式灵活:HTTP 协议支持多种数据格式,如 JSON、XML 等。开发者可以根据具体需求选择合适的数据格式,甚至可以在同一系统中混合使用多种数据格式。
-
扩展性强:HTTP 协议的灵活性使得系统在面对业务需求变化时,能够快速调整和扩展。例如,可以轻松添加新的服务接口,或者修改现有接口的返回数据格式,而无需对底层通信协议进行大规模修改。
(三)与现有 Web 技术无缝集成
-
Web 服务器支持:SpringCloud 依赖于内部封装的 Tomcat 容器,而 Tomcat 是一个成熟的 Web 服务器,能够高效处理 HTTP 请求。这使得 SpringCloud 可以充分利用现有的 Web 服务器技术,实现高性能的微服务架构。
-
与前端技术兼容:HTTP 协议是 Web 应用的标准协议,与前端技术(如 HTML、JavaScript、Vue.js 等)无缝集成。这意味着微服务可以方便地为前端应用提供 RESTful API 接口,实现前后端分离的开发模式。
三、RPC 的特点及限制
(一)RPC 的优势
-
性能优势:RPC 基于 TCP 协议,数据传输效率较高。由于其二进制传输方式,相比 HTTP 的文本格式,RPC 在数据传输速度上具有一定的优势。
-
透明性:RPC 提供了一种类似于调用本地方法的接口,使得开发者在调用远程服务时,代码编写方式与调用本地服务类似,降低了开发难度。
(二)RPC 的限制
-
语言和平台依赖:RPC 通常需要客户端和服务端使用同一种语言或框架,或者至少需要支持特定的序列化和反序列化规则。这在多语言、多平台的微服务架构中,可能会带来兼容性问题。
-
灵活性不足:RPC 的接口定义较为固定,一旦接口发生变化,客户端和服务端都需要同步更新。在业务需求频繁变化的微服务场景中,这种固定的接口定义方式可能会增加开发和维护成本。
-
序列化与反序列化复杂:RPC 需要对数据进行序列化和反序列化,这不仅增加了开发复杂度,还可能导致性能瓶颈。尤其是在数据结构复杂或数据量较大时,序列化和反序列化的开销会更加明显。
四、HTTP 与 RPC 的对比
特性 | HTTP | RPC |
---|---|---|
跨平台性 | 跨平台,支持多种操作系统和语言 | 依赖特定语言或框架,跨平台性较差 |
灵活性 | 灵活,支持多种数据格式,易于扩展 | 接口固定,灵活性较差,修改接口成本高 |
性能 | 数据传输效率相对较低,但可通过压缩优化 | 数据传输效率较高,但需要处理序列化开销 |
开发难度 | 相对简单,与 Web 技术无缝集成 | 开发复杂,需要处理序列化和反序列化问题 |
适用场景 | 适用于多语言、多平台的微服务架构,前后端分离 | 适用于对性能要求较高且接口相对固定的场景 |
五、SpringCloud 选择 HTTP 的最终原因
SpringCloud 选择 HTTP 而非 RPC 作为远程调用协议,主要是基于以下考虑:
-
微服务架构的特点:微服务强调独立、自治和灵活。HTTP 协议的跨平台、跨语言特性以及灵活性,能够更好地满足微服务架构的需求,支持快速迭代和业务扩展。
-
与现有技术的兼容性:SpringCloud 依赖于 Tomcat 容器,而 HTTP 是 Web 应用的标准协议。选择 HTTP 可以充分利用现有的 Web 技术栈,降低开发和运维成本。
-
开发与维护成本:HTTP 协议简单易用,与前端技术无缝集成,降低了开发难度。同时,其灵活的数据格式和接口定义方式,使得在面对业务需求变化时,能够快速调整和优化。
综上所述,SpringCloud 选择 HTTP 作为远程调用协议,是综合考虑了微服务架构的特点、技术兼容性以及开发与维护成本后的合理选择。
有句老话说的好:最适用你的,那才是最好的!不管是任何事,物,人都一样,不是最好的就一定好,也不是最坏的就一定坏,而是最适用你的才是最好的。
相知不迷路,来者皆是兄弟!
搜索微信公众号 :“codingba” or “码出精彩” 交朋友,有更多资源