Как лучше распределить несколько копий сервисов по серверам? - PullRequest
2 голосов
/ 22 сентября 2011

У нас есть несколько служб, которые выполняют тяжелую обработку данных, и мы хотели бы разместить несколько копий на нескольких серверах. По сути, идея такова:

  • Создание нескольких копий идентичных серверов с набором запущенных на них сервисов
  • отдельный сервер будет иметь исполняемую заглушку, которая будет запускаться для связи с одним из этих серверов (определяется произвольно из списка), чтобы начать обработку данных
  • Первый сервер, с которым нужно связаться, станет «главным» сервером и делегирует различные задачи обработки данных другим «подчиненным» серверам.

Мы потратили немало времени на то, чтобы понять, как это сконструировать, и я думаю, что дизайн должен работать достаточно хорошо, но я подумал, что у меня есть предложения по улучшению этого подхода.

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Решение состоит в том, чтобы использовать балансировщик нагрузки.

Я немного смещен - поскольку я из WSO2 - ESB с открытым исходным кодом WSO2 можно использовать в качестве балансировщика нагрузки - и он обладаетбалансировка нагрузки и маршрутизация на основе разных критериев.Также поддерживается балансировка нагрузки FO ...

Здесь несколько примеров, связанных с балансировкой нагрузки с помощью WSO2 ESB ...

Вы можете загрузить продукт с здесь ...

eBay использует ESB WSO2 для обработки более 1 миллиарда транзакций в день в своем основном потоке API-трафика ...

0 голосов
/ 23 сентября 2011

Первый сервер, с которым нужно связаться, станет «главным» сервером и делегировать различные задачи обработки данных другому «ведомому» серверы.

Это определенно не , как я бы это построил.

Я строю это с намерением использовать облачные вычисления (независимо от того, использует ли оно истинные облачные вычисления или нет). У меня будет служба, которая будет принимать запросы и сохранять эти запросы в очереди. Затем у меня будет несколько рабочих приложений, которые будут брать элемент из очереди, отмечать его в процессе и выполнять любые необходимые действия. По завершении элемент очереди обновляется как выполнено.

В этот момент я бы либо уведомил клиента о том, что работа выполнена, либо вы могли бы попросить клиента опросить сервер на предмет чтения состояния очереди.

...