Я занимаюсь разработкой распределенного приложения и хотел бы посоветоваться с ним по наилучшему пути.Рекомендации по созданию распределенного приложения?
Моя система будет состоять из центрального веб-приложения управления, в котором будут определены задачи, и ряда задач, которые будут установлены на разных машинах для обработки этих задач.
Что мне нужно для разработки, как распределить задачи клиентам? Должен ли я просто создавать очередь задач, а участники задач постоянно проверяют очередь, чтобы узнать, готова ли новая задача? Каким будет лучший способ обеспечить выполнение задачи только одним бегуном? Как я мог также обеспечить равномерное распределение задач между участниками задач, чтобы один бегун задания не заканчивал обработку нагрузок, а другие обрабатывали только несколько штук?
Единственный другой подход, о котором я мог подумать, заключается в том, что каждый бегун задачи делает TCP-соединение с сервером и регистрирует его интерес, а затем, когда новая задача готова, веб-приложение выбирает задачу и запускает задачу до это задача для обработки?
У кого-нибудь есть другие идеи? указатели? или комментариев?
Большое спасибо
Matt
Похоже, у меня есть чтение, чтобы сделать =) –
Если бы я сказал, что клиентские машины будут добровольцами, это потребует чего-то другого? т.е. я хочу, чтобы люди подписались и загрузили клиентское программное обеспечение, тем более простым, тем лучше –
@Matt: Не совсем, если эти клиенты находятся в одной общей области/сети. Если вы пытаетесь создать свою собственную широко распространенную систему Folding @ Home, и у вас есть тысячи клиентов, которые являются ненадежными/ненадежными, то это может быть немного слишком упрощенным, но вопрос о том, что * величина не та, что я может ответить в течение нескольких минут или даже часов. – Aaronaught