首页 > 解决方案 > 为 GRPC 使用替代连接通道/传输

问题描述

我目前有一个原始的 RPC 设置,依赖于通过安全套接字传输的 JSON,但我想切换到 gRPC。不幸的是,我还需要访问 Windows 上的 AF_UNIX(微软最近开始支持,但 gRPC 尚未实现)。

由于我有一个现有的工作连接(由不同的库管理),我的偏好是将它与 GRPC 结合使用来发送/接收命令来代替我的 JSON 解析,但我正在努力寻找最好的方法那。

我已经看到将自定义传输插入 gRPC但这个问题在以下方面有所不同(以及我希望获得更新的答案)

  1. 我想避免对 gRPC 的核心进行更改。如果可能的话,我希望从我的库中扩展它,但这里的答案意味着向 gRPC 添加一个新的传输。如果我确实需要在传输级别执行此操作,是否有一种机制可以在核心之后向 gRPC 注册它已经建成?
  2. 我不确定是否需要将其定义为完整的自定义传输,因为我已经建立并准备好了现有连接。我看到了一些暗示我可以简单地扩展 Channel 的东西,但我可能错了。
  3. 我需要能够支持 Windows,或者至少支持它的现代版本(这意味着 gRPC 提供的 from_fd 选项不可用,因为它们目前仅针对 POSIX 实现)

有没有人用 gRPC 解决过类似的问题?

标签: windowsgrpcrpc

解决方案


我可能已经想出了自己的答案。当 Protobuf 的服务定义组件不依赖于它时,我似乎过度关注 gRPC。

我如何使用 ZeroMQ 为协议缓冲区编写自己的 RPC 实现与我的用例非常相似,https://developers.google.com/protocol-buffers/docs/proto#services似乎解决了我的问题(这也是解释了为什么我似乎一直在混淆所涉及的不同类型的“渠道”

我欢迎任何改进/建议,并希望有同样困惑的人在未来的搜索中可以找到这一点。


推荐阅读