在本地群集中使用NATS时,我假设总是有一个首选服务器供客户端连接。
例如,将发布者连接到给定主题的服务器A。让我们假设一个客户端连接进行订阅,我认为在大多数情况下,如果它也连接到服务器A以防止多余的跃点,那将是有利的。
publisher -> server A [<-best]
|
server B
在更复杂的情况下,可能会有服务器A,B和C。如果发布者已订阅服务器A,并且另一个订户已连接到服务器B,则最好将来订阅同一主题的订户服务器B也可以。(不考虑服务器A。)
publisher -> server A
|
server B <- existing subscriber [<-best (ignoring A)]
|
server C
我收到大量邮件,并希望根据主题将客户端重定向到可能的最佳服务器(和群集)来优化网络负载。
在当前代码中有没有办法做到这一点?查看客户端协议https://nats.io/documentation/internals/nats-protocol/似乎没有。
NATS是否可以在内部确定哪个服务器(和群集)是首选服务器?我可以以某种方式利用这些信息来构建外部负载均衡器吗?
还有另一种方法可以达到相同目的吗?假设客户端发布了大量的1 MB消息。即使NATS可以很好地处理它,网络也会很快被阻塞,并使所有内容爬行,因为当客户端连接到任何服务器时,都会发生许多不必要的数据转移。如果所有客户端都连接到可能的最佳服务器,则负载会低得多。