标签: protocol-buffers

protobuf vs gRPC

我尝试了解protobuf和gRPC以及如何使用它们.你能帮我理解一下:

  • 考虑到OSI模型是什么,例如Protobuf在第4层?
  • 通过消息传递思考如何"流动"gRPC做什么是protobuf错过的?
  • 如果发件人使用protobuf,服务器可以使用gRPC还是gRPC添加只有gRPC客户端可以提供的内容?
  • 如果gRPC可以进行同步和异步通信,Protobuf只是用于编组,因此与状态无关 - 真或假?
  • 我可以在前端应用程序中使用gRPC而不是REST或GraphQL吗?

我已经知道 - 或者假设我这样做 - 那:

的Protobuf

  • 用于数据交换的二进制协议
  • 由谷歌设计
  • 使用生成的"结构"类似客户端和服务器上的描述来取消 - / - 马歇尔消息

GRPC

  • 使用protobuf(v3)
  • 再次来自谷歌
  • RPC调用的框架
  • 也使用HTTP/2
  • 可以进行同步和异步通信

对于已经使用该技术的人,我再次认为这是一个简单的问题.我仍然会感谢你对我有耐心并帮助我.我也非常感谢网络深入研究这些技术.

networking protocol-buffers grpc

57
推荐指数
3
解决办法
1万
查看次数

高性能序列化:Java与Google Protocol Buffers vs ...?

对于一些缓存,我正在考虑为即将到来的项目做的事情,我一直在考虑Java序列化.即,是否应该使用?

现在我已经在过去几年中出于各种原因编写了自定义序列化和反序列化(Externalizable).目前互操作性已成为一个问题,我可以预见需要与.Net应用程序进行交互,因此我想到了使用独立于平台的解决方案.

有没有人有过使用GPB的高性能经验?它在速度和效率方面与Java的本机序列化相比如何?或者,还有其他值得考虑的方案吗?

java serialization caching protocol-buffers

52
推荐指数
5
解决办法
6万
查看次数

用协议缓冲区做多态的正确方法是什么?

我正在尝试长期序列化一堆与java中强类层次结构相关的对象,并且由于它们的简单性,性能和易于升级,我想使用协议缓冲区来实现它.但是,它们并没有为多态性提供太多支持.现在,我正在处理它的方式是通过"一条消息来统治它们"的解决方案,它有一个必需的字符串uri字段,允许我通过反射实例化正确的类型,然后是一堆可选字段,用于所有我可以序列化的其他可能的类,只使用其中一个(基于uri字段的值).有没有更好的方法来处理多态,或者这是否会像我将得到的那样好?

protocol-buffers

52
推荐指数
4
解决办法
4万
查看次数

无法构建protobuf去端点

使用protobuf版本2.6.1(我通过自制软件安装)

我想跑

$ protoc --go_out=../cloud/ *.proto
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误.

$ protoc-gen-go: program not found or is not executable
$ --go_out: protoc-gen-go: Plugin failed with status code 1.
Run Code Online (Sandbox Code Playgroud)

我在我的去路上安装了protoc-gen-go.其他人有这个问题吗?

go protocol-buffers

51
推荐指数
5
解决办法
4万
查看次数

如何让Eclipse解析使用Maven 2生成的类?

我正在使用Google Protocol Buffers为我的项目生成一些Java类.使用Maven 2及其"antrun"插件,这些类在编译之前新生成,输出到目标/生成源并在构建期间放入类路径.因此,从POM构建项目是没有问题的.

但是,Eclipse不知道如何解析生成的类,因为它所在的文件夹在开发过程中似乎不在IDE的类路径中.我正在使用m2eclipse并让它为我管理依赖项,所以我原本期望Maven能够处理这个问题.

如何为生成的代码获得IDE支持(代码完成等)?

eclipse maven-2 code-generation protocol-buffers

49
推荐指数
6
解决办法
6万
查看次数

与Protobuf一起使用的日期和时间类型

我正在考虑使用Protocol Buffers在Linux和基于Windows的系统之间进行数据交换.

什么是推荐的发送日期/时间(时间戳)值的格式?序列化时该字段应该很小.

protocol-buffers

48
推荐指数
3
解决办法
5万
查看次数

生成Protobuf文档?

有没有人知道使用.proto源文件生成Google Protobuf文档的好工具?

documentation protocols documentation-generation protocol-buffers

48
推荐指数
6
解决办法
2万
查看次数

有没有关于如何生成包含经过训练的TensorFlow图的protobuf文件的示例

我正在研究Google关于如何在Android上部署和使用预先训练的Tensorflow图(模型)的示例.此示例使用以下.pb文件:

https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip

这是指向自动下载的文件的链接.

该示例显示了如何将.pb文件加载到Tensorflow会话并使用它来执行分类,但是.pb在训练图形之后(例如,在Python中)似乎没有提到如何生成这样的文件.

有没有关于如何做到这一点的例子?

protocol-buffers tensorflow

45
推荐指数
3
解决办法
2万
查看次数

Thrift vs Protocol缓冲区

我已经使用PB很长一段时间了,但是,Thrift一直在我的脑海里.

正如我所看到的那样,节俭的主要优点是:

  1. 本地集合(即向量,集等)与PB重复提供类似但不完全相似的功能(除非你深入研究文档声明"在大多数情况下不需要"的RepeatedField),否则没有迭代器.
  2. 提供了一个不错的RPC实现,而不是只是挂钩插入自己的.
  3. 更多官方支持的语言(PB为Java,C++,Python提供"官方"支持)

Thrift的缺点:

  1. RPC实现意味着我无法在顶部插入我自己的(例如)加密/认证层.
  2. Windows支持看起来不是很好.
  3. PB肯定似乎有更容易获得的文档,如果不是更好的话.

中性:

  • Windows(Thrift)上.lib/.dll的未知大小.
  • Windows上大尺寸的.lib(PB,但确实提供了明显更小的-lite).
  • 速度明智,他们似乎都很相似.

我还没有准备好冒险尝试切换到Thrift,有人可以给我更多的优点/缺点,或者有理由去某种方式吗?

谢谢!

c++ windows thrift protocol-buffers

43
推荐指数
4
解决办法
1万
查看次数

将协议缓冲区集成到Maven2构建中

我正在现有的,相当普通的Maven 2项目中试验Protocol Buffers.目前,每次我需要更新生成的源时,都会调用shell脚本.这显然是一个麻烦,因为我希望在每次构建之前自动生成源.希望不要诉诸可耻的hackery.

所以,我的问题是双重的:

  1. 远射:是否有Maven 2的"Protocol Buffers插件"可以以自动方式实现上述目标?谷歌代码上有一个分支,其作者似乎已经开始实施这样的插件.不幸的是,它没有通过代码审查或合并到protobuf主干.因此,该插件的状态是未知的.

  2. 可能更现实:缺少一个实际的插件,我怎么可能protoc从我的Maven 2版本调用?我想我可以将现有的shell脚本连接到antrun调用或类似的东西.

个人经历非常感谢.

maven-2 protocol-buffers

42
推荐指数
4
解决办法
3万
查看次数