Активно-активный дизайн высокой доступности для службы обмена сообщениями Windows?

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

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

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

Я провел обширные поиски в Интернете, но безрезультатно. Кто-нибудь делал что-то подобное? Спасибо.


person Joshua    schedule 20.10.2012    source источник
comment
Вы знаете о службах обмена сообщениями высокой доступности, таких как RabbitMQ? Я не уверен, соответствует ли это вашим потребностям, но если вы не сделаете вопрос более конкретным, будет сложно дать более конкретный ответ.   -  person jelford    schedule 29.10.2012


Ответы (1)


Если mysql не является требованием, я бы предложил базу данных, оптимизированную для памяти nosql, например http://ravendb.net/, гораздо больше подходит для высокой доступности, чем mysql. Просто мысль.

Чат-приложения обычно не требуют транзакций / высокой надежности.

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

Только мои 2 цента, так как это больше похоже на запрос мнения.

ИЗМЕНИТЬ

Похоже, что raven поддерживает транзакции ACID, так что даже лучше.

person j_mcnally    schedule 29.10.2012