protobuf详细分析

Protocol Buffers(protobuf)是Google的一种语言中立、平台中立的序列化结构化数据的机制,用于跨语言的兼容性和在不更新代码的情况下更新数据结构。它提供了紧凑的数据存储、快速解析和多种编程语言支持,尤其适合需要序列化的结构化数据。protobuf通过.proto文件定义数据结构,生成相应语言的代码,允许向前和向后兼容地扩展消息字段。虽然protobuf不适合大型数据和非面向对象语言,但它广泛应用于谷歌和其他项目,如gRPC,并与XML、JSON、Thrift等技术相比具有性能优势。
摘要由CSDN通过智能技术生成

目录

 

概述

协议缓冲区解决了哪些问题?

使用协议缓冲区有什么好处?

跨语言兼容性

在不更新代码的情况下更新原型定义

什么时候协议缓冲区不适合?

谁使用协议缓冲区?

协议缓冲区如何工作?

简单例子的描述

和其他类似技术的比较

全对象图序列化程序

Protobuf 的优缺点

优点

缺点

Protobuf 的更多细节

简述

Google Protocol Buffer 的 Encoding

封解包的速度


 

概述

Protocol Buffers(又名protobuf)是Google的语言中立的, 用于序列化结构化数据的与平台无关的可扩展机制。

https://developers.google.com/protocol-buffers/

Tutorials | Protocol Buffers Documentation

GitHub - protocolbuffers/protobuf: Protocol Buffers - Google's data interchange format协议缓冲区是一种与语言无关、与平台无关的可扩展机制,用于序列化结构化数据。

协议缓冲区提供与语言无关、与平台无关、可扩展 用于在向前兼容和 向后兼容的方式。它就像JSON,除了它更小更快,而且它 生成本机语言绑定。定义数据的预期方式 结构化一次,那么您可以使用特殊生成的源代码轻松编写 并在各种数据流中读取您的结构化数据,并使用 多种语言。

协议缓冲区是定义语言(在文件中创建)的组合,定义语言是原型编译器生成用于与之交互的代码 数据、特定于语言的运行时库和数据序列化格式 写入文件(或通过网络连接发送)

协议缓冲区解决了哪些问题?

协议缓冲区为类型化、结构化的数据包提供序列化格式 最大为几兆字节的数据。

该格式适用于两者临时网络流量和长期数据存储。
协议缓冲区可以是使用新信息进行扩展,而不会使现有数据失效或要求要更新的代码。

协议缓冲区是 Google 最常用的数据格式。他们被使用 广泛用于服务器间通信以及存档存储 磁盘上的数据

因为协议缓冲区广泛用于各种服务方式 谷歌和其中的数据可能会持续一段时间,保持倒退 兼容性至关重要。

协议缓冲区允许无缝支持 更改,包括添加新字段和删除现有字段 字段,以不中断现有服务的情况下添加到任何协议缓冲区。

使用协议缓冲区有什么好处?

协议缓冲区非常适合需要序列化的任何情况 结构化的、类似记录的、中性语言、平台中立的类型化数据, 可扩展的方式。它们最常用于定义通信 协议(与 gRPC 一起)和数据存储。

使用协议缓冲区的一些优点包括:

  • 紧凑的数据存储
  • 快速解析
  • 支持多种编程语言
  • 通过自动生成的类优化功能

跨语言兼容性

相同的消息可以通过任何受支持的编程编写的代码读取 语言。您可以让一个平台上的 Java 程序从一个平台上捕获数据 软件系统,根据定义对其进行序列化,然后提取 来自单独 Python 应用程序中序列化数据的特定值 在另一个平台上运行

在不更新代码的情况下更新原型定义

软件产品向后兼容是标准,但规模较小 它们通常向前兼容。只要在更新定义时遵循一些简单的做法,旧代码就会读取新消息,而无需 问题,忽略任何新添加的字段。对于旧代码,字段是 已删除将具有其默认值,删除的重复字段将 空。有关什么是“重复”字段的信息,请参阅本主题后面的协议缓冲区定义语法。.proto

新代码也将透明地读取旧消息。新字段不会 存在于旧消息中;在这些情况下,协议缓冲区提供了合理的 默认值。

什么时候协议缓冲区不适合?

协议缓冲区不适合所有数据。特别:

  • 协议缓冲区倾向于假定可以将整个消息加载到 一次内
  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏马潜行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值