我正在尝试在我的特定应用程序中获得有关服务“名单”的建议的一些反馈。我有一个服务器应用程序,维护与客户端的持久套接字连接。我想进一步开发服务器以支持分布式实例。服务器“A”需要能够将数据广播到其他在线服务器实例。所有其他活动实例也是如此。
我正在尝试研究的选项:
以下是我的担忧:
我意识到我也在谈论消息传递,但它与我使用的解决方案密切相关。 顺便说一句,我的服务器是用Go编写的。有关保持可扩展性的最佳推荐方法的任何想法?
*目标编辑
我真正想问的是,在分布式服务器实例之间实现广播数据的最佳方法是:
*更新了问题摘要*
如果您有多个服务器/多个端点需要彼此发布/发送,那么它们之间建议的通信方式是什么?一个或多个消息代理将消息重新发布到已发现服务器的名单中?直接来自每个服务器的可靠多播? 如何在分布式系统中连接多个端点,同时保持低延迟,高速和交付可靠?
答案 0 :(得分:2)
假设所有面向客户端的端点都在同一个LAN上(它们可以用于扩展中的第一个合理步骤),可靠的UDP多播将允许您将发布的消息直接从发布端点发送到任何端点谁有客户订阅了频道。这也比通过持久存储层代理数据更好地满足低延迟要求。
多播组
可靠的UDP多播
您可能只想实施PGM。
持久存储空间
如果您最终长期存储数据,存储服务可以像端点一样加入多播组...但是将消息存储在数据库中而不是将它们发送给客户端。