我已经构建了一个 TCP 服务器来处理来自客户端的 RPC(请求/回复)类型的请求,但它也允许服务在临时时间下推事件。
如果我将来需要扩展,RPC 的东西很容易,比如 Web 基础设施,我只需添加更多节点和负载平衡。
为了扩展推送消息,我需要所有服务器进行协调,因为订阅事件的客户端可以在任何服务器上。
我的选择是:
- 使用 UDP 多播/广播(例如 emcaster)将事件广播到所有服务器
- 使用 TCP 将服务器完全互连
- 发送所有事件的中央服务器,所有工作服务器都连接到该服务器
- [3] 但用几层来形成一棵树
我倾向于选择 [1],因为它很简单,并且可能适用于多达 20-30 个节点。对于不同范围的 N(其中 N 是节点数)的最佳策略是什么,是否达成共识?