我正在研究构建一个分布式应用程序,并希望获得关于它的最佳途径的一些建议。关于构建分布式应用程序的建议?
我的系统将包含一个中央管理Web应用程序,其中将定义任务以及将安装在不同机器上处理这些任务的许多任务执行器。
我需要解决的是如何将任务分配给客户端?我是否应该创建一个任务队列,并且任务运行人员不断轮询队列以查看新任务是否准备就绪?确保任务只能由一个任务运行者处理的最佳方法是什么?我怎样才能确保任务在任务跑步者之间均匀分配,这样一个任务跑步者不会最终处理负载,而其他人只能处理一个任务?
我能想到的唯一的另一种方法是每个任务运行器都与服务器建立TCP连接并注册它的兴趣,然后当新任务准备就绪时,Web应用程序选择一个任务运行器并将任务推送到那个任务跑步者要处理?
任何人有任何其他的想法?指针?或评论?
非常感谢
马特
看起来像我有一些阅读要做=) – 2010-04-10 15:00:12
如果我说客户端机器是志愿者,这将需要什么不同?即我希望人们注册并下载客户端软件,因此更简单,更好 – 2010-04-10 16:59:06
@Matt:不是,如果这些客户端位于同一个区域/网络中。如果你试图建立自己的大规模分布式Folding @ Home系统,并且你有成千上万的客户端不可靠/不可信,那么这可能有些过于简单化 - 但是*量的问题不是我可以在几分钟甚至几小时内回答。 – Aaronaught 2010-04-10 17:44:19