gRPC 客户端 - 到 - 其他局域网网络之间的客户端通信

问题描述

我有一个关于 gRPC 通信的问题。

我知道 gRPC 有 4 种通信模型:unay、服务器流、客户端流和双向。 “客户端”和“服务器”这两个术语非常灵活,因为它确实是点对点通信。

我想知道“如果两个或多个客户端位于不同的 LAN 网络中,gRPC 能否支持客户端到客户端的通信”?如下图:

enter image description here

例如,在 MQTT 协议中,位于不同 LAN 网络中的两个客户端可以通过 MQTT broker 中的主题进行通信。

如果纯 gRPC 不能支持这种模式,我可以添加其他成分让 gRPC 支持这种通信吗?

解决方法

您绘制的图表应该可以正常工作。两个客户端都使用双向流连接到同一台服务器,服务器将来自 CLIENT(1) 的消息转发给 CLIENT(2),反之亦然。

这适用于简单的情况。如果您需要添加容错功能(例如多台服务器),您需要在系统中增加更多的复杂性,例如一个数据库来存储尚未收到的消息。

请注意,您的比较并不完全有效,因为 MQTT 位于堆栈的应用程序层,而 gRPC 是传输层的一部分。 (注意 https://en.wikipedia.org/wiki/MQTT. 右侧的表格)