【发布时间】:2021-09-04 17:35:02
【问题描述】:
假设我有一个简单的 2 台服务器 NATS 集群,其中包含服务器 A 和 B。
如果服务器 A 上的客户端向服务器 B 上没有订阅者的主题发布消息,该消息是否仍会从服务器 A 发送到服务器 B?
【问题讨论】:
-
能否补充一些细节?
标签: nats.io
假设我有一个简单的 2 台服务器 NATS 集群,其中包含服务器 A 和 B。
如果服务器 A 上的客户端向服务器 B 上没有订阅者的主题发布消息,该消息是否仍会从服务器 A 发送到服务器 B?
【问题讨论】:
标签: nats.io
不确定这里的目标是什么,但更多细节可以帮助澄清上下文。如果您特别询问节点是否可以将发布在另一台服务器上的消息传递给订阅的客户端,是的..它会保留多长时间?根据定义的过期时间。如果服务器在与网格共享之前出现故障怎么办,这几乎是不可能的,但有可能发生。
此外,尽管您可能只是举例说明,但通常不建议在集群中使用偶数,以避免无法找到真实来源(在这种情况下为种子服务器)的脑裂情况。..
【讨论】:
是的。 NATS 集群服务器会将它从客户端接收到的消息转发到它具有路由的紧邻的 nats-server 实例。从路由接收到的消息只会分发给本地客户端。网格中没有订阅者检查。
【讨论】:
这不是一个非黑即白的答案,因为 NATS 支持许多部署架构,包括服务器到客户端通信、服务器到服务器集群通信以及通过网关形成超级集群的集群到集群通信。例如,网关优化兴趣图传播(即仅在有兴趣时将数据发送到其他集群)Super-cluster with gateways documentation
【讨论】: