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

解密gRPC:Protocol Buffer

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

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

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

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

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

在早期,它指的是一个名为“ProtocolBuffer”的类,充当了单个方法调用的缓冲区。用户可以向此缓冲区添加标签/值对,原始字节会存储在其中,直到构建消息后被写出。尽管名称中的“buffers”部分失去了原始含义,但它一直存在。今天,我们通常使用“协议消息”来指代抽象意义上的消息,“协议缓冲区”来指代序列化消息,以及“协议消息对象”来指代解析后的内存表示。Pg928资讯网——每日最新资讯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维护,尽管也有可选的实现。生成的代码经过优化,以实现数据的快速序列化和反序列化。Pg928资讯网——每日最新资讯28at.com

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

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

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

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

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

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

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

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

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

Protobuf语法

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

1.消息:数据蓝图

将Protobuf消息视为数据结构的蓝图。它们告诉您数据应该如何组织。Pg928资讯网——每日最新资讯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),用于组织。Pg928资讯网——每日最新资讯28at.com

2.字段类型

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

3.字段标签

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

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

4.枚举

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

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

5.注释

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

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

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

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

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

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

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

序列化和反序列化

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

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

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

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

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

1.序列化和编码

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

2.解码

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

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

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

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

gRPC中的Protocol Buffers

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

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

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

这是我们服务的Protobuf定义:Pg928资讯网——每日最新资讯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,这个服务定义清晰、简洁,并且可以轻松地生成成各种编程语言的代码。Pg928资讯网——每日最新资讯28at.com

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

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

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

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

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

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

标签:
  • 热门焦点
  • Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • 28个SpringBoot项目中常用注解,日常开发、求职面试不再懵圈

    前言在使用SpringBoot开发中或者在求职面试中都会使用到很多注解或者问到注解相关的知识。本文主要对一些常用的注解进行了总结,同时也会举出具体例子,供大家学习和参考。注解
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 消费结构调整丨巨头低价博弈,拼多多还卷得动吗?

    来源:征探财经作者:陈香羽随着流量红利的退潮,电商的存量博弈越来越明显。曾经主攻中高端与品质的淘宝天猫、京东重拾“低价”口号。而过去与他们错位竞争的拼多多,靠
  • 大厂卷向扁平化

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

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 消息称小米汽车开始筛选交付中心:需至少120个车位

    IT之家 7 月 7 日消息,日前,有微博简介为“汽车行业从业者、长三角一体化拥护者”的微博用户 @长三角行健者 发文表示,据经销商集团反馈,小米汽车目前
  • 中关村论坛11月25日开幕,15位诺奖级大咖将发表演讲

    11月18日,记者从2022中关村论坛新闻发布会上获悉,中关村论坛将于11月25至30日在京举行。本届中关村论坛由科学技术部、国家发展改革委、工业和信息化部、国务
Top