REST和RPC架构之间的差异
文章插图
本文的目的是对gRPC有一个高级的了解 。它还将解释gRPC与Web应用程序通信遵循的现有协议和体系结构之间的异同 。
什么是gRPC?gRPC是一个开源的远程过程调用框架,用于在服务之间进行高性能的通信 。这是将以不同语言编写的服务与可插拔支持(用于负载平衡,跟踪,运行状况检查和身份验证)相连接的有效方法 。默认情况下,gRPC使用协议缓冲区来序列化结构化数据 。通常,对于微服务体系结构,gRPC被认为是REST协议的更好替代方案 。gRPC中的" g"可以归因于最初开发该技术的google 。
在详细介绍gRPC之前,让我们看一下微服务架构 。
微服务与Monoliths整体架构是设计应用程序的传统方式 。它包含一个不可分割的代码库,用于服务于客户端用户界面,服务器端应用程序和数据库 。在项目中工作的所有开发人员都将代码贡献到同一存储库中 。我最喜欢的与整体建筑相关的类比之一是将其视为一室公寓 。单个房间将根据需要分为各种空间 。
整体架构的优势在于,由于只有一个单元,因此可以轻松完成日志记录,性能监控和缓存等操作 。而且,它很容易开发,测试,调试和部署 。
但是随着应用程序的增长,它变得难以维护,扩展甚至理解 。而且,它可能变得如此复杂,以至于代码的少量更改会影响整个应用程序 。
整体结构的另一个重要缺点是,它是对单一技术的严格承诺 。采用新的框架或语言可能需要对整个系统进行重写 。
进入微服务架构!
如果单片式架构是一室公寓,则微服务架构可以视为具有许多房间的房屋 。这意味着整个应用程序将细分为多个较小的应用程序或服务 。
这使开发团队可以灵活地选择最适合其需求的技术,并使他们能够独立扩展服务 。微服务应用程序中的任何故障仅影响特定服务,而不影响整个应用程序 。
这些服务可以独立开发,维护和部署,它们通过称为API(应用程序编程接口)的已定义方法相互通信 。
通过HTTP的微服务之间的通信可以通过多种方式完成 。使用最广泛的方法是遵循REST协议 。gRPC是执行此通信的另一种方法 。它旨在克服REST在微服务通信中的局限性 。
REST架构REST是使用HTTP协议的Web架构 。它被广泛用于Web应用程序的开发 。简而言之,REST是一种客户端-服务器关系,其中后端数据通过诸如JSON / XML的简单表示形式提供给客户端 。如Roy Fielding所述,REST代表代表状态转移 。REST是一种协议,它不强制执行任何有关如何在较低级别实施的规则 。它为高级体系结构实施提供了指导 。
为了使任何应用程序真正实现RESTful,必须遵循六个体系结构约束:
· 统一接口:意味着必须向Web应用程序中的API使用者提供API接口 。
· 客户端服务器:客户端和服务器必须彼此独立,并且客户端应仅知道资源的URI 。
· 无状态:服务器不得存储与客户端请求相关的任何内容 。客户端负责维护应用程序的状态 。
· 可缓存的:资源必须可缓存 。
· 分层系统:体系结构必须是分层的,这意味着体系结构的组件可以位于多个服务器中 。
· 按需代码:客户端必须能够获取可执行代码作为响应 。这是一个可选约束 。
基于REST的Web服务被称为RESTful Web服务 。在这些应用程序中,每个组件都是一种资源,可以使用HTTP标准方法通过公共接口访问这些资源 。以下四种HTTP方法通常用于基于REST的体系结构中:
· GET-对资源的只读访问 。
· POST —创建一个新资源 。
· DELETE—删除资源 。
· PUT-更新现有资源/创建新资源 。
RPC架构RPC代表远程过程调用 。顾名思义,其思想是我们可以在远程服务器上调用函数/方法 。RPC协议允许以相同的格式获取问题的结果,而不管它在何处执行 。它可以是本地的,也可以使用更好的资源在远程服务器中 。
RPC是比REST更旧的协议 。从1970年代的ARPANET时代起,它就已经用于执行网络操作 。RPC一词最早由布鲁斯·杰伊·尼尔森(Bruce Jay Nelson)于1981年提出 。但是,正如我们将要看到的,RPC仍然很重要,并以不同的方式在基于API的现代应用程序中实现 。
想法是一样的 。通过定义公共方法来构建API 。然后用参数调用方法 。RPC只是一堆函数,但是在HTTP API的上下文中,它需要将方法放在URL中,并将参数放在查询字符串或主体中 。
推荐阅读
- 新手淘宝店铺每天应该做些什么 淘宝开店必备的知识技能
- 怎么开网店新手入门 新手开网店之后怎么做
- 淘宝教程新手入门视频 淘宝大学免费课程视频教程
- UPS不间断电源的基本知识,介绍非常全面,建议收藏
- 九大凤凰单丛的茶叶知识
- 不干胶印刷设备知识大全
- Linux操作系统基础的网络管理知识
- 黑客入门必修课:端口扫描
- 钢琴入门年龄与常见问题
- 身为开发人员,这些数据库合知识不掌握不合适