我一直在研究 Apache Thrift、ProtoBuf 和 Flatbuffers。我在链接中找到了将 gRPC 与 protobuf 一起使用的教程,但我没有找到任何文档将 gRPC 与 Flatbuffers 一起使用。有人可以指出我的相关文件吗?我在 Google 和 Stackoverflow 上检查了它。任何帮助,将不胜感激。
3 回答
自从第一次提出这个问题以来,已经取得了进展 a) 使 GRPC 代码生成独立于 protobuf(参见https://github.com/grpc/grpc/pull/6130),然后将该代码生成器集成到 flatbuffers 编译器中flatc
:https ://github.com/google/flatbuffers/commit/48f37f9e0a04f2b60046dda7fef20a8b0ebc1a70
这是一个非常基本的首次实现,欢迎反馈。
gRPC 协议与有效负载无关,但代码生成不是。由于还没有为 FlatBuffers 生成代码,因此您需要手动执行一些操作。
细节因语言而异,但基本部分是相似的。例如,在 Go 中,您需要实现Codec并准备Invoke、NewClientStream和RegisterService所需的描述符。在 Java 中,您需要实现Marshaller并准备newCall和addService所需的描述符。如果您遇到问题,可以考虑在与 Protobuf 一起使用时查看为 gRPC 生成的代码。
自2017 年 8 月 17 日以来, gRPC 对flatbuffers 提供了开箱即用的支持,如他们的博客https://grpc.io/blog/grpc-flatbuffers/#use-flatbuffers-as-an-idl中所述
最近发布的 Flatbuffers 1.7 版引入了对 gRPC 开箱即用的真正零拷贝支持。
链接文章中的示例命令
flatc --cpp --grpc example.fbs