百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

什么是gRPC?(什么是妇科白斑)

ccwgpt 2024-10-13 01:30 52 浏览 0 评论

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中,并将参数放在查询字符串或主体中。

RPC API将使用诸如{/ id:1}主体的POST / deleteResource之类的东西,而不是REST方法(即DELETE / resource / 1)。

RPC在物联网设备和其他需要针对低功率设备进行自定义合约通信的解决方案中非常受欢迎,因为许多计算操作可以转移到另一设备。 传统上,RPC可以实现为RPC-XML和RPC-JSON。

gRPC是要在RPC协议上创建的最新框架。 它利用其优势,并试图纠正传统RPC的问题。

什么是gRPC?

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

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

同样,gRPC建立在HTTP / 2之上,它支持双向通信以及传统的请求/响应。 gRPC允许服务器和客户端之间的松散耦合。 实际上,客户端会打开与gRPC服务器的长期连接,并且将为每个RPC调用打开一个新的HTTP / 2流。

REST与gRPC

与使用JSON(主要是JSON)的REST不同,gRPC使用协议缓冲区,这是编码数据的更好方法。 由于JSON是基于文本的格式,因此它比protobuf格式的压缩数据要重得多。

与传统REST相比,gRPC的另一个显着改进是它使用HTTP 2作为其传输协议。 主要由REST使用的HTTP 1.1基本上是一个请求-响应模型。 (REST也可以使用HTTP2来实现。)gRPC利用HTTP 2的双向通信功能以及传统的响应请求结构。 在HTTP 1.1中,当多个请求来自多个客户端时,它们将被一一处理。 这会降低系统速度。 HTTP 2允许多路复用,因此可以同时处理多个请求和响应。

我们可以得出结论,当用例涉及使用惯用API的多语言通信或大规模微服务通信时,gRPC是一个不错的选择。


(本文翻译自Arun Mathew Kurian的文章《Understanding gRPC》,参考:https://medium.com/better-programming/understanding-grpc-60737b23e79e)

相关推荐

VUE3前端开发入门系列教程二:使用iView框架辅助开发

1、安装iView新框架,支持VUE3npminstallview-ui-plus2、编辑src/main.js,添加以下内容,导入js和css到项目importViewUIPlusfrom...

万能前端框架uni app初探03:底部导航开发

前言本节我们使用uniapp的底部导航功能,点击不同tab会显示不同页面,这个功能在实际项目开发中几乎是必备的。一、基础知识1.tabBar如果应用是一个多tab应用,可以通过tabBar配...

Rust Web 开发框架,前端你可以选择哪个?

Rust构建一切。在如今流行的语言中,Rust可谓是将构建和高效作为自己优美的身姿在大众视野中脱颖而出。它是一门赋予每个人构建可靠且高效软件能力的语言。它有什么特性呢?高性能。Rust速度惊人且内...

连载:前端开发中纠结的Javascript框架(上)

如今,前端开发有着许许多多的框架和库。其中一些好用,一些却不尽人意。通常我们会习惯性运用某一概念,模块或句法。事实上,并没有什么万能工具。这篇文章是关于未来框架的发展趋势——那就是没有框架!我从以下几...

前端开发框架的演进架构:提升用户体验和开发效率

前端开发框架是现代Web应用开发的重要工具,它不仅可以帮助开发者构建复杂的用户界面,还能够提升用户体验和开发效率。随着Web技术的不断发展,前端开发框架也在不断演进,为开发者提供了更丰富、更高效的工具...

Google应用Mesh-TensorFlow框架,让CNN也能处理超高分辨率图像

为了要处理超高分辨率医疗图像数据,Google开发了一种空间数据分区(SpatialPartition)技术,在不牺牲图像分辨率的条件下,分析超高分辨率图像。Google使用Mesh-TensorF...

大模型安全挑战加剧:框架层漏洞成新靶心

近日,360数字安全集团发布了一份关于大模型安全漏洞的报告,揭示了当前大模型及围绕其构建的框架和应用中存在的严重安全问题。报告显示,360近期研究发现了近40个大模型相关的安全漏洞,其中既包括二进制内...

Keras 3.0正式发布:可用于TensorFlow、JAX和PyTorch

机器之心报道编辑:陈萍经过5个月的更新迭代,Keras3.0终于来了。「大新闻:我们刚刚发布了Keras3.0版本!」Keras之父FrancoisChollet在X上激动的...

TensorFlow和Keras入门必读教程(tensorflow与keras版本对应)

导读:本文对TensorFlow的框架和基本示例进行简要介绍。作者:本杰明·普朗什(BenjaminPlanche)艾略特·安德烈斯(EliotAndres)来源:华章科技01TensorFlo...

谷歌官方回应“TensorFlow遭弃”:还在投资开发,将与JAX并肩作战

鱼羊发自凹非寺量子位|公众号QbitAI终于,谷歌出面回应“TensorFlow遭弃”传闻:我们将继续致力于将TensorFlow打造为一流机器学习平台,与JAX并肩推动机器学习研究。这段时...

2025 年的PHP :现代 Web 开发的强大引擎

程序员还在吐槽PHP过时?2025年的PHP8.4直接封神了。看看最近更新的属性钩子、强类型系统,加上Laravel这些框架,老语言早就脱胎换骨。十年前说PHP弱类型容易崩代码的,现在脸疼不?联合类...

前端内卷终结者?htmx如何让开发者告别200行JS只做一个按钮

当你用React写一个点赞按钮需要引入3个状态管理库、编写80行JSX和120行钩子函数时,htmx只需要一行HTML:<buttonhx-post="/like"hx-sw...

NativePHP桌面版V1.0正式发布(元气桌面电脑版下载)

导读:各位小伙伴,使用PHP构建桌面级系统的利器,NativePHP来了。概述NativePHP是一个用于使用PHP构建桌面应用的框架。它允许PHP开发人员使用熟悉的工具和技术创建跨平台的原生应用...

PHP Laravel框架底层机制(php基本框架)

当然可以,Laravel是最受欢迎的PHP框架之一,以优雅的语法和丰富的生态而闻名。尽管开发体验非常“高端”,它的底层其实是由一系列结构清晰、职责分明的组件构成的。下面我从整体架构、核心流程、...

PHP框架之Laravel框架教程:2. 控制器、路由、视图简单介绍

2.控制器、路由、视图简单介绍我们先建立控制器,目录是:app/Http/Controllers,新建控制器Ding.php,代码如下:Ding.php:<?phpnamespaceA...

取消回复欢迎 发表评论: