理解gRPC,以及表现层状态转换与远程过程调用架构之间的区别

      最后更新:2020-04-06 11:47:20 手机定位技术交流文章

      全文由2925个单词组成,预计持续9分钟。

      在今天的文章中,肖鑫将为您带来对gRPC的高层次理解,并解释gRPC和网络应用通信所遵循的现有协议和体系结构之间的异同。

      你准备好了吗?

      什么是gRPC?

      GRPC是一个开源的远程过程调用框架,用于服务器之间的高效对接。通过可插拔接口,用不同语言编写的服务器可以有效地连接起来,以实现负载平衡、跟踪、健康检查和身份验证。默认情况下,gRPC通过轻量级和高效的结构化存储格式序列化数据。一般来说,在微服务架构中,gRPC被认为是REST协议的更好的替代方案。gRPC中的“G”来自谷歌,谷歌最初开发了这项技术。

      在研究gRPC的更多细节之前,让我们先看看微服务架构。

      微服务和单片

      单片架构是设计应用程序的传统方式。它包含一个不可分割的代码库,为客户端用户界面、服务器端应用程序和数据库提供服务。所有在项目中工作的开发人员都将代码存储在同一个代码库中。我最喜欢将整体建筑比喻为一个工作室公寓。一间单人房将根据需要分成不同的空房间。

      单片架构的优势在于,因为只有一个单元,所以可以轻松完成日志记录、性能监控和缓存等操作。此外,开发、测试、调试和部署也很简单。

      然而,随着应用程序的增长,单片架构变得难以维护、扩展甚至理解。此外,它会变得非常复杂,以至于代码中的一个小变化都会影响到整个应用程序。

      单片架构的另一个重要缺点是,它严格限于单一技术。使用新的框架或语言可能需要重写一个完整的系统。

      接下来,微服务架构!

      如果单一的结构是一个工作室公寓,微型服务大楼可以被认为是一个有许多房间的房子。这意味着整个应用程序将被细分成几个较小的应用程序或服务。

      这使得开发团队能够灵活地选择最适合他们需求的技术,并允许独立的服务扩展。微服务应用程序中的任何故障只影响特定的服务,而不是整个应用程序。

      这些服务可以独立开发、维护和部署,并通过应用编程接口(API)相互连接。

      基于HTTP协议的微服务之间的通信可以通过多种方式完成。最广泛使用的方法是遵循REST协议。GRPC是进行这种交流的另一种方式。它的建立是为了克服REST在微服务通信中的局限性。

      资料来源:Pexels

      uuuuuuu。

      REST架构

      REST是一种使用HTTP协议的网络体系结构。它被广泛用于开发网络应用。简而言之,REST是一种客户机-服务器关系,其中后端数据通过简单的表示(如JSON/XML)提供给客户机。正如罗伊·菲尔丁所描述的那样,REST代表代表状态转移。REST是一种协议,它不强制执行任何关于它应该如何在较低级别实现的规则。它为高级架构的实现提供了指导。

      为了让任何应用程序真正具有RESTful属性,必须遵循六个架构准则:

      1.统一接口:应用编程接口必须将网络应用程序中的资源呈现给应用编程接口用户。

      2.客户机/服务器:客户机和服务器必须相互独立。客户只需要知道链接。

      3.无状态此服务器无法存储任何与客户端请求相关的内容。客户端负责维护应用程序的状态。

      4.可缓存:资源必须是可缓存的。

      5.分层系统:体系结构必须是分层的,这意味着体系结构的组件可以存在于多个服务器中。

      6.按需编码:客户端必须能够获得可执行代码作为响应。这是一个可选的约束。

      基于REST的网络服务称为RESTful网络服务。在这些应用程序中,每个组件都是一个资源,这些资源可以通过基于HTTP标准方法的公共接口来访问。以下四种方法通常用于REST结构中:

      对资源的只读访问。

      创建新资源后。

      删除—删除资源。

      投入-更新现有资源/创建新资源。

      RPC架构

      远程过程调用。顾名思义,可以在远程服务器上调用函数/方法。RPC协议允许以相同的格式获得问题的结果,而不管它们在哪里执行。它可以是使用更好资源的本地服务器或远程服务器。

      RPC是比REST更早的协议。自20世纪70年代建立以来,ARPANET一直被用来进行网络操作。1981年,布鲁斯·杰伊·纳尔逊首次创造了“RPC”一词。但是正如我们将要看到的,在现代基于API的应用程序中,RPC仍然是相关的,并且以不同的方式实现。

      这个想法是肯定的。通过定义通用方法来构建应用程序编程接口。然后用参数调用这些方法。RPC只是一堆函数,但是对于HTTP API,它需要将方法放在URL中,将参数放在查询字符串或正文中。

      RPC API将使用一个类似POST /deleteResource的方法,其主体为{"id": 1},而不是REST方法,即DELETE /resource/1。

      RPC在物联网设备和其他需要为低功耗设备定制通信的解决方案中非常流行,因为许多计算操作可以转移到另一个设备。传统上,远程过程控制可以用于远程过程控制。

      GRPC是在RPC协议上创建的最新框架。它充分利用了传统活性粉末混凝土的优点,试图解决传统活性粉末混凝土存在的问题。

      什么是gRPC?

      到目前为止,我们所读到的可以重新定义gRPC。它是对传统RPC框架的改编。那么,它与现有的RPC框架有什么不同呢?

      最重要的区别是gRPC使用协议缓冲区作为序列化和通信的接口定义语言,而不是JSON/XML。协议缓冲器可以描述数据的结构,并且可以从描述中生成代码,以生成或解析表示结构化数据的字节流。这就是为什么gRPC更适合用多种语言编写的网络应用程序(用不同的技术实现)。二进制数据格式允许更轻松的通信。GRPC也可以与其他数据格式一起使用,但首选格式是协议缓冲区。

      此外,gRPC建立在HTTP/2之上,支持双向通信和传统的请求/响应。GRPC允许服务器和客户端之间的松散耦合。事实上,客户端与gRPC服务器建立了长期连接,并为每个RPC调用建立了一个新的HTTP/2流。

      资料来源:Pexels

      REST和gRPC

      与大多数使用JSON的REST不同,gRPC使用协议缓冲区,这是一种更好的数据编码方式。因为JSON是基于文本的格式,它将比protobuf格式的压缩数据占用更多的存储空间。

      gRPC相对于REST的另一个重要改进是它使用HTTP 2作为传输协议。REST使用的HTTP 1.1基本上是一个请求-响应模型。GRPC利用了HTTP 2的双向通信特性和传统的响应请求结构。在HTTP 1.1中,当多个请求来自多个客户端时,它们将按顺序提供服务。这将使系统变慢。HTTP 2允许多路复用,因此可以同时处理多个请求和响应。

      基于上述观点,可以得出结论,当用例涉及使用传统API的多语言通信或大规模微服务通信时,gRPC是一个很好的选择。

      评论、表扬和关注

      让我们分享人工智能学习和发展的干货。

      如果重印,请在后台留言并遵守重印规则。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/3651.html

          热门文章

          文章分类