文章目录
- 什么是Protobuf?
- 如何使用Protobuf ?
- 什么是 RPC应用程序之间的通信?
- Protobuf 和JSON 格式之间的区别是什么?
- Protobuf 的三个选项是什么?
- 例子分别计算Pb和Json大小
- 结语
什么是Protobuf?
你可能听说过 JSON 、XML 和其他网络开发缩略语和流行语。但是,Protobuf 呢?有可能,你在你的网络开发旅行中遇到过这个词,但不太清楚它是什么意思。Protobuf 是指Protocol Buffers。
Protocol Buffers ( )是一种由谷歌开发的数据序列化格式。它以二进制形式有效而紧凑地存储结构化数据,允许在网络连接上更快地传输。支持广泛的所选编程语言,并且是平台独立的,这意味着使用它编写的程序可以很容易地移植到其他平台。
此外,它是创建结构化数据的一种有效而强大的方式,可用于各种应用,如网络服务、数据库。 RPC系统和文件格式。它支持许多数据类型,包括字符串、整数、浮点、布尔、枚举(枚举)、地图(关联数组)等等。独立于语言的语法使使用不同的编程语言编写的程序能够可靠地相互通信。
此外,Protobuf 格式比其他格式,如XML或JSON ,具有若干优势。由于结构化数据以二进制格式存储,它比基于文本的格式,如XML或JSON 格式要小得多,使其在网络上的传输速度加快。此外,Protobuf 被设计为易于扩展,使其成为处理快速变化的数据结构和新功能的理想选择。最后,从Protobuf 特别 生成的源代码 可以进行速度优化,从而使应用程序使用更少的内存。
这些优势使Protocol Buffers ,成为高效数据存储和系统间通信的理想选择。随着企业越来越依赖分布式系统、网络服务和移动应用程序,它在开发者中越来越受欢迎。Protocol Buffers ,像谷歌、Twitter和Dropbox ,以及希望从其灵活性和性能中获益的小型创业公司都在使用。
Protobuf 与其他格式相比,"Language "可能相对陌生,但它正在快速普及,许多开发者开始认识到它的潜力。凭借其强大的功能和易用性(结构化数据),不难看出为什么 正在成为开发者的热门选择。
如何使用Protobuf ?
Protocol Buffers ( )是一种语言中立、平台中立、可扩展的结构化数据序列化机制,用于通信协议、数据存储等。它是一个由谷歌开发的开源项目,为应用程序之间的信息交换提供了一个有效和可靠的手段。你可以决定一个专门生成的源代码如何读取数据。
Protobuf 可以用来创建高效的 API,可以作为系统之间的数据流使用。协议缓冲区是使数据交换更有效的好方法,因为它需要更少的带宽,并且比标准的XML或 方案具有更小的消息尺寸。
它还可以以有组织的方式存储结构化数据。它允许开发者定义数据结构,然后将其序列化为二进制格式,使数据可以跨系统移植。这使得在数据库或其他分布式系统中存储数据变得容易。当数据结构发生变化时,它还能确保向后兼容。
此外,它可以被用于 RPC应用程序之间的通信。例如,你可以使用Protobuf 格式来定义两个应用程序之间发送的消息。这使得应用程序之间很容易进行有效的通信,因为他们可以简单地使用相同的消息结构来序列化和反序列化数据。
什么是 RPC应用程序之间的通信?
RPC (远程程序调用)是一种通信类型,允许应用程序通过网络相互通信。它使一个应用程序的功能或程序可以从另一个应用程序中调用,允许分布式计算和更大的可扩展性。
RPC 呼叫的工作原理是,从调用的应用程序(也称为客户端)向另一个应用程序(称为服务器)发送请求,并收到一个响应。请求通常以数据包的形式发送,其中包含需要执行的程序的信息,如参数和返回值。
一旦服务器收到数据包,它就会对其进行处理,并返回一个带有任何相关数据或结果的响应。
Protobuf 这也使开发人员能够创建客户/服务器应用程序,使其能够相互交互,而不必担心不同通信协议的细微差别。它使编写跨平台的应用程序变得容易,这些应用程序可以使用相同的消息格式相互通信。
Protobuf 和JSON 格式之间的区别是什么?
Protobuf 和JSON 的主要区别是数据的编码方式。Protobuf 以二进制格式编码数据,而JSON 使用人类可读的纯文本格式。这使得Protobuf 在网络上传输数据时明显更快、更有效,因为它在传输相同数量的信息时需要的带宽比JSON 要少。
JSON 在基于网络的环境中,由于JavaScript和HTML都可以很容易地阅读它,所以更容易使用。此外, JSON的优点是可以被人类阅读,使调试和故障排除比 。
Protobuf由于它的速度明显快于JSON ,因此在网络上所需的处理能力较低。这使得它成为需要数据流或设备间实时通信的应用的理想选择。此外,由于Protobuf 将数据编码为二进制格式,安全性得到提高,因为恶意行为者更难改变数据而不被发现。
因此,你可以把Protobuf 和JSON 之间的差异分解为四个主要方面:速度、大小、数据类型和平台兼容性。
速度:在序列化和反序列化数据方面,Protobuf 比JSON 快得多。由于格式是二进制的,在Protobuf 中读写结构化数据所需的时间比在JSON 中要短。
大小:Protobuf 比JSON 小得多,在网络带宽有限的情况下,这可能是令人难以置信的有用。由于二进制数据流的紧凑性,存储和传输Protobuf 信息所占用的空间比JSON 信息要少。
数据类型。虽然两种格式都支持基本的数据类型,如字符串、数字和布尔,但Protobuf 支持更复杂的数据类型,如枚举和地图,这在JSON 。这使得开发人员能够创建更复杂的应用程序,需要更丰富的数据结构。
平台兼容性。由于Protobuf 是一种开源格式,它比JSON 有更好的平台兼容性。由于它是语言和平台独立的,它可以在多个平台上使用而没有困难或兼容性问题。
Protobuf 是需要速度、大小效率和复杂数据类型的应用程序的首选数据格式。它是开发分布式系统或网络带宽有限的移动应用的绝佳选择。相比之下,JSON由于许多语言和平台都支持它,所以它更简单,更被广泛接受。因此,它可以在需要兼容性和简单性而不是性能的情况下使用。最终,使用哪种取决于你的应用程序的具体需求。
总之,Protobuf 和JSON 都有其优点和缺点,这取决于你在建立一个应用程序时最优先考虑的功能。如果你需要更快的读/写速度,更小的文件大小,以及复杂的数据类型,那么Protobuf 是更好的选择。然而,如果简单性和平台兼容性对你来说更重要,JSON 可能更好。最终,决定将取决于你的应用程序的具体要求。
Protobuf 的三个选项是什么?
Protobuf 的三个选项是:1)proto2,2)proto3,和3) gRPC 。
- Proto2是用于编码结构化数据的原始协议缓冲语言。它支持生成多种语言的代码,如Java、C++和 Python。
- Proto3是最新版本的Protobuf ,它是proto2的进化版。它增加了一些功能,并简化了Protobuf 在特定情况下的使用。
- 最后,gRPC 是一个基于Protobuf 的高性能RPC (远程过程调用)框架,使服务之间的连接和互操作变得容易。它支持多种语言,如Java、Python、C++和Node.js。
这三个选项有助于用Protobuf 编码结构化数据,但许多人更喜欢gRPC ,因为它比其他两个选项有性能优势。
例子分别计算Pb和Json大小
重复出现的主要是字段名(group/key/value)和 JSON 的结构符号({ } : , ")。
字段值(比如 “a”、“k1”、“hello”)当然也每条都会出现,这个不算“浪费”,因为那是你真正要传的数据。
结语
总之,Protocol Buffers 是一种高效且可扩展的结构化数据编码机制。它们是类型安全的,语言中立的,并且比JSON 或XML等替代方案需要更少的带宽。如果你需要开发一个通过网络与其他应用程序有效通信或存储数据的应用程序,请考虑使用Protocol Buffers 。
?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_96,text_5rqQ5Luj56CB4oCi5a64,size_16,color_FFFFFF,t_70)
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!