可以使用哪些技术/工具来实现具有以下要求的分布式系统:
发布于 2015-05-24 03:59:08
动物园管理员将是一个很好的选择,同步行动。采用以下方法。有一个/sync znode,它是用当前时间戳更新的,或者每次同步需要触发一些新数据。基本上,主节点更新/sync节点的值以触发工作节点上的操作。
工作节点监视/sync znode的数据更改。因此,每次主节点更新/sync时,工作人员都会得到通知,并更新他们的本地缓存。
此外,工作节点在/workers znode下注册自己(通过在/workers下使用一些uuid创建临时znode )。这些节点将是短暂的,因此如果工作节点/进程死亡,相应的临时节点就会消失。工人们在/workers znode下为孩子们设置了一个手表,所以当新的工人出现或任何现有的工人消失时,他们会得到通知。此外,他们还在/workers下的所有临时节点上监视数据的变化。
现在每件事都是如何运作的:
母版使用当前时间戳更新/sync,以触发工作节点上的同步。所有工作人员都会收到关于/sync节点中数据更改的通知。它们为/sync节点获取修改过的数据。工作人员将缓存与数据库同步。工作人员在/workers节点下更新相应的znode。例如,id 4dc1efd2-01c8-11e5-bee1-08002791d032的工作人员更新znode /workers/4dc1efd2-01c8-11e5-bee1-08002791d032.。在特定于员工的znode上放置的数据是"synced_at_timestamp“(例如,synced_at_1432451046000),每当任何工作人员更新其znode时,都会通知所有其他工作人员。所有工作人员都在/workers下检查所有znode上的当前数据。当/workers下的所有工作节点都具有相同的数据synced_at_timestamp时,它们切换到空闲状态。
可能还有许多其他可能的办法。如果您熟悉memcache、redis、hazelcast等,您也可以使用它们来实现这样的系统。
发布于 2015-05-23 00:55:35
这可以通过RabbitMQ来完成,并为不同的消息指定传递收据选项。sync消息应该传递给所有节点,而compute消息应该由第一个节点来确认。
https://stackoverflow.com/questions/30407788
复制相似问题