揭秘gRPC:释放闪电般的通信能力

2023-10-08 09:52

本文主要是介绍揭秘gRPC:释放闪电般的通信能力,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

c513dfa8bb4beb3ccc94a5f019578443.jpeg

在我们深入讨论gRPC的细节之前,澄清远程通信领域各种术语之间的关系非常重要,这有时可能令人困惑。

RPC — 远程过程调用

7c8bf42943d6139f4908e57267d9020b.png

根据维基百科的定义,“在分布式计算中,远程过程调用(RPC)是指计算机程序导致在不同地址空间中执行过程(子程序),通常在共享网络上的另一台计算机上,就好像它是一个正常的(本地)过程调用,程序员没有明确编写远程交互的详细信息。”

简而言之,这是一种让一个计算机程序请求另一个程序执行某项任务的方式,即使它们位于不同的计算机上也可以。这有点像在您的程序中调用一个函数,尽管它是在不同的机器上执行的。这是一种过程调用,就好像它在同一台机器上一样,但实际上不在同一台机器上,RPC库/框架负责抽象化所有这些复杂性。

RPC流程

RPC框架负责屏蔽底层的传输方法(TCP或UDP)、序列化方法(XML/JSON/二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程服务提供者,而不必关心底层通信。这涉及到调用的细节和过程。

REST

94dc49eb83d17418912bf2f906050dd5.png

REST代表表述性状态传输,是一种用于设计网络应用程序的成熟架构风格。RESTful API使用HTTP请求执行CRUD(创建、读取、更新、删除)操作,通常表示为URL。REST API以其简单性和使用GET、POST、PUT和DELETE等标准HTTP方法而闻名。

HTTP

bb0d545319a8de822327c585a823dc78.jpeg

HTTP(超文本传输协议)是互联网上的数据通信基础。它定义了消息的格式和传输方式,以及Web服务器和浏览器如何响应各种命令。HTTP随着时间的推移发生了演变,不同版本提供了各种功能和改进:

1.HTTP/1.0: HTTP的第一个版本非常简单,缺少许多现代功能。在HTTP/1.0中,每个请求都需要一个新的TCP连接,导致效率低下。2.HTTP/1.1: 通过引入保持活动连接的机制,HTTP/1.1改进了HTTP/1.0,允许多个请求和响应在单个TCP连接上发送,从而减少了延迟。然而,它仍然存在一些限制,比如“头部阻塞”问题,其中一个慢速请求可以阻止同一连接中的后续请求,导致“瀑布”效应。3.HTTP/2: HTTP/2引入了二进制帧机制,允许多路复用、请求优先级和头部压缩。这些增强显著提高了网络通信的效率和速度。它通过允许在单个连接内有多个并发流来消除“头部阻塞”问题。4.HTTP/3: 最新版本HTTP/3通过使用QUIC传输协议进一步提高性能。它侧重于减少延迟,特别是在存在高丢包率或不可靠网络的情况下。HTTP/3设计得比其前身更具弹性和高效性。

所以现在我们了解了这些术语。让我们开始吧!

什么是gRPC?

gRPC(这里的“g”代表什么?)是一种进程间通信技术,允许您连接、调用、操作和调试分布式异构应用程序,就像进行本地函数调用一样简单。

当您开发gRPC应用程序时,首先要做的是定义一个服务接口。服务接口定义包含有关如何消费服务的信息,允许消费者调用哪些远程方法,调用这些方法时要使用什么方法参数和消息格式,等等。我们在服务定义中指定的语言称为接口定义语言(IDL)。

gRPC使用协议缓冲区作为定义服务接口的IDL。协议缓冲区是一种与语言无关、平台中立、可扩展的机制,用于序列化结构化数据。

de431863f6bd2baa36fde5ad42fedd26.png

gRPC架构

是什么让gRPC拥有闪电般的性能?以下是内部情况:

1.HTTP/2: 2015年,HTTP/2取代了HTTP/1.1,提供

了多路复用功能,允许多个请求和响应共享单个连接,提高了效率。

1.请求/响应多路复用: 由于HTTP/2的二进制帧,gRPC可以在单个连接内处理多个请求和响应,彻底改变了通信效率。2.头部压缩: HTTP/2的HPack策略压缩头部,减小了有效负载大小。再加上gRPC的高效编码,这使性能非常出色。

Protobuf:秘密武器

54b56f6d4d872296857262805f3b56bf.png

gRPC效率游戏中的关键因素之一是协议缓冲区,简称Protobuf。Protobuf定义数据结构和函数合同。客户端和服务器都需要使用相同的Protobuf语言,这是它们如何相互理解的方式。协议缓冲区(ProtoBuf)在gRPC框架内发挥三个主要作用:定义数据结构、指定服务接口,并通过序列化和反序列化增强传输效率。

gRPC的优势有哪些

除了有一个非常可爱的吉祥物外。采用gRPC的原因在于其独特的优势:

1.进程间通信的效率: 与JSON或XML不同,gRPC使用基于协议缓冲区的二进制协议进行通信,提高了速度。它建立在HTTP/2之上,使其成为最高效的进程间通信技术之一。2.明确定义的服务接口和模式: gRPC鼓励优先进行合同定义,优先考虑服务接口定义,而不是深入研究实现细节。这种简单性、一致性、可靠性和可扩展性定义了应用程序开发体验。3.强类型和多语言支持: gRPC使用协议缓冲区来定义服务,清晰地指定了应用程序之间通信的数据类型。这有助于提高稳定性,并减少运行时和互操作性错误。此外,gRPC可以与各种编程语言无缝集成,为开发人员提供了选择其首选语言的灵活性。4.双向流和内置功能: gRPC本地支持客户端和服务器端的流式处理,简化了流式服务和客户端的开发。它还内置了对关键功能的支持,如身份验证、加密、弹性(包括截止日期和超时)、元数据交换、压缩、负载均衡和服务发现。5.云原生集成和成熟性: 作为Cloud Native Computing Foundation(CNCF)的一部分,gRPC与现代框架和技术无缝集成,成为通信的首选选择。CNCF中的项目,如Envoy,支持gRPC,并且许多监控工具,包括Prometheus,与gRPC应用程序有效地配合使用。此外,gRPC在Google进行了广泛测试,并被广泛采用。

  15caa390f28f759c25e18da487b40d99.jpeg8995ce11b4b62f4c94ddd94f9ee1f74d.jpeg

这篇关于揭秘gRPC:释放闪电般的通信能力的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/164462

相关文章

RabbitMQ工作模式中的RPC通信模式详解

《RabbitMQ工作模式中的RPC通信模式详解》在RabbitMQ中,RPC模式通过消息队列实现远程调用功能,这篇文章给大家介绍RabbitMQ工作模式之RPC通信模式,感兴趣的朋友一起看看吧... 目录RPC通信模式概述工作流程代码案例引入依赖常量类编写客户端代码编写服务端代码RPC通信模式概述在R

在Spring Boot中实现HTTPS加密通信及常见问题排查

《在SpringBoot中实现HTTPS加密通信及常见问题排查》HTTPS是HTTP的安全版本,通过SSL/TLS协议为通讯提供加密、身份验证和数据完整性保护,下面通过本文给大家介绍在SpringB... 目录一、HTTPS核心原理1.加密流程概述2.加密技术组合二、证书体系详解1、证书类型对比2. 证书获

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

基于C#实现MQTT通信实战

《基于C#实现MQTT通信实战》MQTT消息队列遥测传输,在物联网领域应用的很广泛,它是基于Publish/Subscribe模式,具有简单易用,支持QoS,传输效率高的特点,下面我们就来看看C#实现... 目录1、连接主机2、订阅消息3、发布消息MQTT(Message Queueing Telemetr

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和

三国地理揭秘:为何北伐之路如此艰难,为何诸葛亮无法攻克陇右小城?

俗话说:天时不如地利,不是随便说说,诸葛亮六出祁山,连关中陇右的几座小城都攻不下来,行军山高路险,无法携带和建造攻城器械,是最难的,所以在汉中,无论从哪一方进攻,防守方都是一夫当关,万夫莫开;再加上千里运粮,根本不需要打,司马懿只需要坚守城池拼消耗就能不战而屈人之兵。 另一边,洛阳的虎牢关,一旦突破,洛阳就无险可守,这样的进军路线,才是顺势而为的用兵之道。 读历史的时候我们常常看到某一方势

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识