我想创建一个分布式系统,可以支持大约10,000种不同类型的工作。一台机器只能托管500个此类作业,因为每个作业都需要将一些数据预加载到内存中,而这些数据无法保存在缓存中。每个作业必须具有冗余性才能实现可用性。
我曾经探索过诸如Zookeeper,hadoop之类的开源库,但没有一个能解决我的问题。 我能想到的最简单的解决方案是使用其托管的机器维护作业类型图。但是,我如何支持机队中工作类型的动态分配?如何处理机器故障,以确保每种作业类型在任何时间都至少在至少1台机器上可用。
答案 0 :(得分:0)
基于您在注释中提到的答案,我建议您采用基于MQ的(消息队列)体系结构。我在这个答案中建议的是:
这种方法的优点是非常实用。这意味着,如果将来您还有更多工作要处理,通过添加计算服务器并将其连接到MQ,您可以在服务器上处理更多请求,而无需对系统进行任何更改。此外,MQ中的一些不错的功能(例如基于优先级的排队)可帮助您确定请求的优先级并根据作业类型进行处理。
p.s。。您的Q没有提供有关系统类型和参数的任何详细信息。这是我可以提出的解决方案草案。如果您提供更多详细信息,也许社区可以为您提供更多帮助。