Protobuf 是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,用于描述一种轻便高效的结构化数据存储格式,并于2008年对外开源。Protobuf可以用于结构化数据串行化,或者说序列化。它的设计非常适用于在网络通讯中的数据载体,很适合做数据存储或 RPC 数据交换格式,它序列化出来的数据量少再加上以 K-V 的方式来存储数据,对消息的版本兼容性非常强,可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。开发者可以通过Protobuf附带的工具生成代码并实现将结构化数据序列化的功能。一起和野生菌来看看吧~
protobuf 实际是一套类似Json或者XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用。通信时所传递的信息是通过Protobuf定义的message数据结构进行打包,然后编译成二进制的码流再进行传输或者存储。
具体实现方式为:
*.proto* –protoc, protoc-gen-go-> *.pb.go* :
protoc –go_out=output_directory input_directory/file.proto
( protoc –go_out=plugins=grpc:. ./hi.proto )
protoc是protobuf文件(.proto)的编译器,借助它可以把.proto文件转译成各种编程语言对应的源码。
protoc-gen-go插件可以产生go相关代码, 除上述序列化和反序列化代码之外, 还增加了一些通信公共库。它是protobuf编译插件系列中的Go版本
gRPC: 高性能,开源通用RPC框架。所谓RPC(remote procedure call 远程过程调用)框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。