2
如何通过AWS IoT为作业队列设置主要和故障转移MQTT订阅者?
我有一个系统,客户机(我们称其为ClientA)可以将请求发布到特定的MQTT主题。代理(如果需要的话)是Amazon Web Services。然后,我有另一个客户端(我们称其为MainSubscriber),该客户端始终订阅相同的主题,以便它可以接收来自ClientA的请求并进行某些工作,最后将其转换为数据库操作。如果需要的话,数据库是DynamoDB。 由于MainSubscriber可能不总是可访问/在线的,因此希望有一个故障转移订户作为主订户的故障转移备份。这样的想法是,如果主用户未及时处理请求,则故障转移用户将加入并进行等效的工作/数据库操作。挑战在于,主订户和故障转移订户都不能复制“工作”和所得的“数据库操作”。 这是此系统的逻辑系统架构图。 -----> MainSubscriber ---- / \ ClientA --> Broker ---> Database \ / ---> FailoverSubscriber -- 显然,这种系统存在一些挑战: 主订户如何向故障转移订户指示它正在处理请求? 故障转移订户如何检测到主订户尚未接听请求并需要开始处理该请求? 如果故障转移订阅者突然回到联机状态并接收请求,那么该如何转移主订阅者呢? 如何处理主订户与故障转移订户之间的同步性问题? 如果这样的方案已经存在一个解决方案,我宁愿不必重新发明轮子。所以,我的第一个问题是是否已经有东西了? 如果不是,那么我正在考虑使用具有强烈一致性读取的DynamoDB作为Main和Failover订户之间的中介。所以,我的第二个问题是,是否有完善的方案来做到这一点?