Кластерный подход для приложения C # - PullRequest
1 голос
/ 29 декабря 2010

в настоящее время я сталкиваюсь с проблемой разработки.Мне нужно эмулировать кластерную среду с помощью служб Windows C #.

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

Обе среды имеют следующую конфигурацию: веб-сервер - сервер приложений - сервер БД, и сервер БД 1 имеет репликацию слиянием через сервер БД 2.

Дело в том, что мне нужно гарантировать, что простоодна служба Windows (планировщик) запускается в настроенное время, но когда одна из них недоступна, другая должна быть готова к вызову веб-служб.

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

Ура.

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Я видел нечто подобное с использованием постоянной очереди.

  1. Служба запрашивает первый невостребованный элемент в очереди, если он есть
  2. Служба обрабатывает заявленный элемент
  3. Служба завершает элемент (удаляя его из очереди)

Очередь может быть представлена ​​таблицей в SQL Server.В качестве альтернативы вы можете использовать Enterprise Service Bus или просто очередь сообщений, например MSMQ .

Обе службы могут работать одновременно, но только одна из них будет обрабатыватьданный запрос.

1 голос
/ 29 декабря 2010

Обычно это выполняется с помощью кластеризации SQL Server. Это не легко, но это ваш лучший вариант. При использовании этого вам не нужно вносить какие-либо изменения в ваше приложение .NET 2.0 или более поздней версии. (Ранние версии .NET требовали ручной очистки пула соединений.)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...