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

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

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

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

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

1 ответ

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

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

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

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

РЕДАКТИРОВАТЬ

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

Другие вопросы по тегам