我正在尝试为物联网设备设计一个软件工具,该工具基本上应该执行分布式事务。它将有一个主服务器,部署在云基础架构上,由于专门安装了代理软件,该主服务器可以连接到设备。尽管代理(和其他相关工具)的结构和功能非常简单,但是我发现代理对某些要求充满挑战
我假设使用以下组件是可行的解决方案:
API服务器负责客户端身份验证,水平功能和api公开。负载平衡器后面的每个实例都与一个知名的Job executor(JE)种子连接,接收JE副本列表,并要求一个领导者,该领导者将由大多数答案投票。
领导者Job Executor收到交易请求,并将广播命令应用于所有设备,然后开始收集响应。它为每个发送错误响应或根本没有响应的设备重试(显然,它应该知道设备何时物理连接到ping / pong机制)。领导者将失败设备的列表发送到所有其他节点,这样,如果失败,则将选举新的领导者,并且可以继续尝试在先前发生故障的设备上执行命令
我真的需要这个吗?还是我可以简单地假设所有副本都可以共享数据库中的全局状态?在这种情况下,我仍然需要被动节点还是可以进行主动复制?既然这似乎是一个非常普遍的问题,您能建议我一个框架/工具(例如Zookeeper吗?)来实现我的目标?
预先感谢