当前位置:首页 > 科技  > 软件

解密gRPC:Protocol Buffer

来源: 责编: 时间:2023-10-25 15:48:17 220观看
导读在之前的文章中,我们全面介绍了gRPC,在这一部分中,我们将涵盖Protocol Buffer,也称为Protobuf。Protobuf标志“Protocol Buffers”这个名字有着独特的起源。在早期,它指的是一个名为“ProtocolBuffer”的类,充当了单个方法

在之前的文章中,我们全面介绍了gRPC,在这一部分中,我们将涵盖Protocol Buffer,也称为Protobuf。IWn28资讯网——每日最新资讯28at.com

IWn28资讯网——每日最新资讯28at.com

Protobuf标志IWn28资讯网——每日最新资讯28at.com

“Protocol Buffers”这个名字有着独特的起源。IWn28资讯网——每日最新资讯28at.com

在早期,它指的是一个名为“ProtocolBuffer”的类,充当了单个方法调用的缓冲区。用户可以向此缓冲区添加标签/值对,原始字节会存储在其中,直到构建消息后被写出。尽管名称中的“buffers”部分失去了原始含义,但它一直存在。今天,我们通常使用“协议消息”来指代抽象意义上的消息,“协议缓冲区”来指代序列化消息,以及“协议消息对象”来指代解析后的内存表示。IWn28资讯网——每日最新资讯28at.com

什么是Protocol Buffers?

Protocol Buffers是一种简单的语言中立和平台中立的接口定义语言(IDL),用于定义数据结构模式和编程接口。它支持二进制和文本线路格式,并可以与不同平台上的许多不同线路协议一起工作。例如,看看这个简单的proto文件(person.proto),定义了一个名为'Person'的消息。这个消息描述了一个人的属性,包括名字,ID和可选的电子邮件地址。message Person { required string name = 1; required int32 id = 2; optional string email = 3; } 这个person.proto文件用作服务器和客户端之间的契约。如果您想要更改这个“Person”实体的结构,或者更改请求和响应的外观,您需要修改proto文件。Protobuf编译器protoc由Google维护,尽管也有可选的实现。生成的代码经过优化,以实现数据的快速序列化和反序列化。IWn28资讯网——每日最新资讯28at.com

IWn28资讯网——每日最新资讯28at.com

为什么选择Protocol Buffers(Protobuf)而不是JSON?

IWn28资讯网——每日最新资讯28at.com

Proto vs JSONIWn28资讯网——每日最新资讯28at.com

你可能会想,既然已经有广泛使用的序列化格式JSON,为什么要选择Protocol Buffers(Protobuf)呢?IWn28资讯网——每日最新资讯28at.com

让我们深入探讨Protobuf为什么是一个出色的选择,以及它在解决常见数据序列化挑战方面与JSON相比的情况:IWn28资讯网——每日最新资讯28at.com

IWn28资讯网——每日最新资讯28at.com

在总结一下,Protobuf和JSON各有各自的独特优势,Protobuf在需要效率、跨平台兼容性和结构化数据至关重要的情况下表现出色。IWn28资讯网——每日最新资讯28at.com

另一方面,当您需要可读性强的数据或轻量级格式的简单性更合适时,JSON仍然是一个很好的选择。IWn28资讯网——每日最新资讯28at.com

Protobuf语法

这个快速介绍为您提供了Protobuf的语法和核心概念的味道。如果您想进一步探索,我鼓励您查看官方Protocol Buffers文档。IWn28资讯网——每日最新资讯28at.com

1.消息:数据蓝图

将Protobuf消息视为数据结构的蓝图。它们告诉您数据应该如何组织。IWn28资讯网——每日最新资讯28at.com

message Recipe {string dish_name = 1;repeated string ingredients = 2;double preparation_time_minutes = 3;}

在这个例子中,我们创建了一个名为Recipe的消息,其中包含三个字段:dish_name表示菜名,ingredients表示配料列表(可以有多个),preparation_time_minutes表示制作这道菜所需的时间。每个字段都有一个唯一的编号(例如,1,2,3),用于组织。IWn28资讯网——每日最新资讯28at.com

2.字段类型

Protobuf支持各种字段类型,如字符串、整数、浮点数、枚举等等。您甚至可以嵌套消息以创建复杂的数据结构。这些字段类型确保数据结构良好,类型正确。IWn28资讯网——每日最新资讯28at.com

3.字段标签

消息中的字段可以具有标签,确定它们是required、optional还是repeated(用于列表):IWn28资讯网——每日最新资讯28at.com

  • Required字段:这些字段必须始终出现在此类型的消息中。如果在序列化消息时缺少一个必需字段,将导致错误。
  • Optional字段:它们可以包含在消息中,但不是必需的。如果在序列化消息时省略了可选字段,它将被视为具有默认值。
  • Repeated字段:重复字段允许在单个字段中具有相同类型的多个值。它们用于数据的列表或数组。

4.枚举

枚举允许您定义一组命名的常量值。当您有一个字段具有预定义选项集,例如一周的日期或产品类别时,它非常有用。IWn28资讯网——每日最新资讯28at.com

enum DayOfWeek {MONDAY = 1;TUESDAY = 2;// ...}

5.注释

您可以在Protobuf定义中包含注释,以更好地解释您的消息和字段。注释可以以//开始,也可以包装在/* ... */中。IWn28资讯网——每日最新资讯28at.com

6.语法版本:规则和特性

Protobuf提供不同的语法版本,其中proto2和`proto3`是最常见的。这些版本定义了您可以在Protobuf定义中使用的规则和特性。IWn28资讯网——每日最新资讯28at.com

注意:建议gRPC API使用Protocol Buffers版本3(proto3)来定义APIIWn28资讯网——每日最新资讯28at.com

IWn28资讯网——每日最新资讯28at.com

7.导入其他文件:保持组织

对于更大的项目,您可以将Protobuf定义分成多个文件,并使用import语句将它们组合在一起。IWn28资讯网——每日最新资讯28at.com

序列化和反序列化

Protobuf的线路格式是二进制编码,因此处理起来更快。它使用一些巧妙的技巧来最小化用于表示消息的字节数。不需要了解二进制编码格式的知识来使用Protobuf。IWn28资讯网——每日最新资讯28at.com

为了真正理解Protocol Buffers(Protobuf)的威力,让我们通过一个示例,演示数据是如何序列化和编码,以及随后如何解码回来的。IWn28资讯网——每日最新资讯28at.com

考虑以下数据:IWn28资讯网——每日最新资讯28at.com

(我们使用前面定义的person.proto)IWn28资讯网——每日最新资讯28at.com

{"name": "Ankit","id": 21,"email": "username@gmail.com"}

1.序列化和编码

Protobuf将此JSON数据转换为一个既高效又节省空间的二进制格式。在这种情况下,Protobuf编码如下:IWn28资讯网——每日最新资讯28at.com

0a 05 41 6e 6b 69 74 10 15 1a 12 75 73 65 72 6e 61 6d 65 40 67 6d 61 69 6c 2e 63 6f 6dIWn28资讯网——每日最新资讯28at.com

2.解码

现在,让我们颠倒这个过程,将这个Protobuf数据解码回其原始形式:IWn28资讯网——每日最新资讯28at.com

IWn28资讯网——每日最新资讯28at.com

这个解码过程使Protobuf如此高效和强大。它确保数据保持一致和结构化,即使在编码和解码后,这使得它成为各种场景中数据传输的首选选择。IWn28资讯网——每日最新资讯28at.com

这只是一个简单的示例,如果您有兴趣,可以在Protocol Buffers网站上了解更多信息。IWn28资讯网——每日最新资讯28at.com

gRPC中的Protocol Buffers

Protocol Buffers(Protobuf)在gRPC中至关重要,为客户端和服务器之间提供了高效和一致的通信。以下是它们至关重要的原因:IWn28资讯网——每日最新资讯28at.com

  • API契约定义:Protobuf为gRPC定义了消息结构,确保了高效和无错误的数据传输。
  • 高效的序列化:Protobuf的二进制格式加速了数据序列化和反序列化,提高了gRPC的性能。
  • 语言中立性:Protobuf的语言不可知性使其能够无缝集成到各种编程语言中。
  • 高效性:Protobuf的二进制格式减少了网络使用,使数据传输更快。
  • 互操作性:Protobuf充当通用翻译器,使gRPC服务能够在不同语言和平台之间轻松通信。
  • 向后兼容性:Protobuf的版本支持允许API演进而不破坏现有客户端。
  • 代码生成:Protobuf简化了消息结构代码生成,简化了开发流程。
  • 性能:Protobuf的高效序列化和反序列化增强了gRPC服务的整体性能。

让我们包括一个使用Protocol Buffers(Protobuf)定义的gRPC服务的示例。假设我们正在构建一个带有用户身份验证的聊天应用程序。IWn28资讯网——每日最新资讯28at.com

这是我们服务的Protobuf定义:IWn28资讯网——每日最新资讯28at.com

syntax = "proto3";message User {string id = 1;string username = 2;}message Message {string id = 1;string text = 2;User sender = 3;}service ChatService {rpc SendMessage(Message) returns (Message);rpc GetMessages(User) returns (stream Message);}

在这个示例中,我们定义了两种消息类型,User和Message,以及一个允许发送和接收消息的ChatService。使用Protobuf,这个服务定义清晰、简洁,并且可以轻松地生成成各种编程语言的代码。IWn28资讯网——每日最新资讯28at.com

总之,Protocol Buffers(Protobuf)已经彻底改变了数据序列化、传输和在不同系统中的理解方式。它们的效率、跨平台兼容性和结构化数据处理使它们成为现代应用程序的强大选择。IWn28资讯网——每日最新资讯28at.com

通过了解Protobuf的语法、核心概念以及它在gRPC中的作用,您可以充分利用它的功能。在探索Protobuf的世界时,请记住官方Protocol Buffers文档是深入了解这项技术的综合指南。IWn28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-14809-0.html解密gRPC:Protocol Buffer

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: DISC-FinLLM:复旦大学团队发布中文智慧金融系统,采用多专家微调框架

下一篇: Java项目:垃圾回收操作频繁导致系统性能下降

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • JavaScript学习 -AES加密算法

    JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • 微博大门常打开,迎接海外画师漂洋东渡

    微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事“起猛了,我能看得懂日语了”。“为什么日本人说话我能听懂?”“中文不像中文,日语不像日语,但是我竟然看懂了”…&hell
  • 疑似小米14外观设计图曝光:后置相机模组变化不大

    疑似小米14外观设计图曝光:后置相机模组变化不大

    下半年的大幕已经开启,而谁将成为下半年手机圈的主角就成为了大家关注的焦点,其中被传有望拿下新一代骁龙8 Gen3旗舰芯片的小米14系列更是备受大家瞩
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • “买真退假” 这种“羊毛”不能薅

    “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
Top