Методы кластеризации серверов .Net

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

От клиента

  • Сервер шлюза получает сообщение
  • Сервер шлюза отправляет сообщение ACK (UDP)
  • Сообщение десериализуется из двоичного кода в объект через фабрику.
  • Затем сообщение направляется на вторичный сервер в кластере (на основе конфигурации) и отправляет объект на вторичный сервер через WCF.
  • Сообщение обрабатывается на вторичном сервере.

С сервера

  • Вторичный сервер создает сообщение и отправляет его на сервер шлюза.
  • Двоичный файл сервера шлюза сериализует сообщение
  • Сервер шлюза отправляет двоичный файл клиенту и ожидает сообщения ACK (UDP)

Серверы будут настроены через файлы .config для указания на службы либо локально в том же приложении (будет инициализирована WCF), либо в других системах.

Кто-нибудь работал над созданием подобной архитектуры, и если да, то с какими проблемами вы столкнулись?


РЕДАКТИРОВАТЬ
Система будет серверной частью уже существующего протокола, поэтому любой клиент-серверный протокол по существу неприкосновенен, но он включает управление состоянием (клиент отправляет сеанс с каждым вызовом), шифрование, маршрутизация сервера и защита пакетов.


Изменить
Может ли кто-нибудь дать ссылку на проект с открытым исходным кодом, использующий кластеризацию в .Net?


person Tom Anderson    schedule 05.01.2009    source источник
comment
Что-нибудь, что я могу сделать, чтобы вдохнуть жизнь в это?   -  person Tom Anderson    schedule 07.01.2009
comment
все еще хочу вдохнуть жизнь в это, я в тупике, так как большинство кластерных серверных приложений имеют закрытый исходный код.   -  person Tom Anderson    schedule 10.01.2009
comment
Я думаю, что мультикластерная серверная структура должна быть разработана, чтобы объяснить сценарии и задачи, которые вы хотите выполнить.   -  person icelava    schedule 10.01.2009
comment
спасибо, я добавил намного больше информации, если нужно больше, я могу предоставить.   -  person Tom Anderson    schedule 10.01.2009
comment
Я предлагаю вам описать вашу проблему как запросы службы балансировки нагрузки в .NET, так как это кажется более точным. Кроме того, вы упоминаете конкретные технологии (например, UDP, WCF). Вас заставляют ими пользоваться? Если нет, то вы должны сказать об этом. Могут быть лучшие способы/фреймворки, чтобы делать то, что вы хотите.   -  person dss539    schedule 29.06.2009


Ответы (2)


Изменить. Может ли кто-нибудь предоставить ссылку на проект с открытым исходным кодом, использующий кластеризацию в .Net?

Проверьте этот пример приложения. Согласно сайту...

Продемонстрированные технологии Сервис-ориентированный многоуровневый дизайн с ASP.NET и WCF

  • Четкое разделение пользовательского интерфейса, бизнес-сервисов и доступа к БД
  • Дизайн и настройка производительности
  • Горизонтальное масштабирование за счет динамической кластеризации
  • Централизованное управление конфигурацией кластерных сервисных узлов
person JP Alioto    schedule 29.06.2009

Поддержание состояния сеанса в длительных транзакциях может стать серьезным препятствием. Вам нужно будет убедиться, что ваше решение для балансировки нагрузки может учитывать или поддерживать сеанс, начинающийся на одном сервере и завершающийся на другом. Это может быть достигнуто за счет совместного использования состояния через внешний источник, такой как файл cookie в браузере/клиенте или запись на общем сервере базы данных. В качестве альтернативы, многие решения для аппаратной балансировки нагрузки будут использовать «закрепленные сеансы», чтобы клиент всегда возвращался на один и тот же сервер (например, на основе IP-адреса).

person Jon Simpson    schedule 05.01.2009
comment
Клиент отвечает за сохранение своего собственного идентификатора сеанса, и он будет извлечен из кеша на стороне сервера при поступлении нового запроса. - person Tom Anderson; 10.01.2009