Библиотека .NET для активной / пассивной отказоустойчивой кластеризации - PullRequest
1 голос
/ 05 февраля 2011

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

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

Это идеальный кандидат для активной / пассивной кластеризации.Один узел считается «активным» и активно подключается к ресурсам «одного экземпляра» (например, к почтовому ящику), в то время как другие являются «пассивными».Если «активный» узел умирает, то другие «пассивные» узлы выбирают между собой новый «активный» узел.

Теперь вопрос: есть ли где-нибудь библиотека .NET, которая помогает реализовать обычнуюлогика отказоустойчивой кластеризации?(т. е. реализация необходимой отправки / обнаружения пульса и «выбора» активного узла).Поскольку я не хочу изобретать велосипед.

Что я вижу из уже проведенного исследования:

  • BizTalk Server изначально поддерживает эту функциональность, но я не использую BizTalk какэто слишком тяжело и дорого (но я хочу эмулировать эту функциональность)
  • Windows Server поддерживает отказоустойчивую кластеризацию (в некоторых высокопроизводительных версиях, таких как Windows Server 2008 Enterprise или Datacenter), но, опять же, это дорогое решение(поскольку каждому узлу потребуется дорогая лицензия)
  • Существует много информации о том, как должен работать алгоритм восстановления после сбоя, но я нигде не вижу реализации с открытым исходным кодом ... (только в коммерческих продуктах, продаваемых по более высокой цене).)

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

ОБНОВЛЕНИЕ 12/02/2011: Найден SAForum (http://www.saforum.org/link/linkshow.asp?link_id=214720),, который является веб-сайтом, который публикуется открытымспецификация для разработки концепций доступности сервисов. Существует также OpenSAF (http://www.opensaf.org/Welcome-to-OpenSAF%E2%84%A2~151213~14944.htm), и реализация с открытым исходным кодом C ++ спецификаций на SAForum. Выглядит комплексно, но очень тяжело. Мне потребуется много времени, чтобы пройтись по спецификациями документации. Он также охватывает гораздо больше, чем просто переключение при сбое, предлагая спецификации для полностью масштабируемой распределенной системы (уведомления, распределенные события, блокировки, управление кластерами и т. д.) ... По-прежнему никаких признаков реализации .NET нигде.

1 Ответ

2 голосов
/ 06 февраля 2011

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

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

Я знаю, что вы действительно спрашивали о библиотеках с открытым исходным кодом, но применяется тот же аргумент - доверяете ли вы этому, хорошо ли он проверен, проверен ли он в полевых условиях, и кого вы можете пнуть, когда он умрет?* Обновление: Что ж, это было несколько лет назад, и я думаю, что я смягчила свою позицию в отношении жизнеспособности использования открытого исходного кода для такого рода критически важной инфраструктуры, хотя я все еще считаю, что коммерческая поддержка необходима,и я бы по-прежнему не писал сам.

Я бы добавил сюда плагин для Rabbit MQ в качестве высокодоступной, масштабируемой шины сообщений, чтобы другие читали это.Доступна коммерческая поддержка, основанная на открытых стандартах (AMQP).Клиентские библиотеки доступны практически для любой крупной платформы.

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