可以用grpc的双向流模式当普通的socket用吗?

因为需要双向通讯,用grpc的双向流比普通socket性能差多少啊

阅读 9.8k
2 个回答

gRPC 是基于 HTTP/2 的,HTTP/2 又是基于 TCP 的。而 socket 直接就是 TCP。

理论性能上肯定是直接用 socket 更快啊,少两层封装呢。

但 gRPC 还提供了完整的序列化/反序列方案(ProtoBuf)啊,还自带压缩传输,还是强类型。

你徒手写的 socket 还未必有人家性能高。

gRPC 双向流的优势在于,基于 HTTP2 的单条连接请求复用的协议实现,对于大型数据的传输,客户端可以多次发送请求,服务端可以做到边接收边处理边响应,避免等待所有数据接受完毕再处理从而增加耗时。并且 gRPC 双向流的传输对象是 protobuf 消息体,序列化和反序列化工作都已由内部实现。当然,这些均可以自己通过 socket 来实现,不过可能会增加不少额外的工作。

理论上讲,如果 gRPC 双向流非常切合业务需求,是可以用作双向通信的,但是要看题主对侧重点的把量,性能还是易实现性,并且现成的 socket 方案也不少,不要为了用 gRPC 而用 gRPC。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏