0
我有一个由一个中央服务器,许多移动客户端和许多工作服务器组成的系统。每个工作服务器都有自己的数据库,可能位于客户基础设施上(当他购买本地安装时)。如何将持久性事件从中央服务器推送给其他人?
在我目前的设计中,移动客户端向中央服务器发送更新,中央服务器更新其数据库。工作人员服务器定期拉取中心以获取更新的信息。这种“拉动模式”创造了很多要求,但仍然不够完善,因为员工经常使用过时的信息。
我想要一个“推式模型”,中央服务器可以将更新“发布”到“某处”,这会保留最新版本的数据。然后工作人员可以“订阅”这个“某处”并始终保持最新状态。
的主要问题是:
- 一名工人服务器可能处于脱机状态时更新发生。当它恢复在线时,它应该收到它丢失的更新。
- 可能会创建一个新的工作服务器,并且需要获取更新的数据,即使是存在之前发布的数据。
奖金点:
- 不需要管理该 “的地方” 自己。我的应用程序部署在AWS,所以如果有任何我可以用来实现的服务组合,那就太棒了。我发现的一切都有限的时间数据保留。
我并没有考虑直接推送,而是在中介的帮助下更像pub/sub。所以中央需要只发送一次每个更新。工作人员会立即收到更新,但也可以收到在离线或尚未存在时发布的所有内容。但后来我需要一个带有永久保存的消息的pub/sub或类似的东西。它看起来更具扩展性。你怎么看? –
这不是纯粹的pub/sub模型,因为脱机客户端需要检索不同的消息。例如,Amazon SNS将发送消息(如果需要,将重试几次),但对于脱机客户端来说还不够。它可以将消息推送到队列中供以后检索,但客户端需要轮询队列。所以,很难混合“推送”和“离线”功能。拉/投票肯定是一个更简单的解决方案。但是,也许其他StackOverflovians有另一种提供? –