Шина NService: отличные проблемы развертывания

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

  1. Используя хранилище подписки БД, что произойдет, если БД отключится? Если для публикации сообщения требуется доступ к базе данных подписки, как оно будет доставлено? Это потеряется? Вызовет ли Bus.Publish исключение?
  2. Предполагая, что вам не нужно развертывать простои: что, если вы хотите переместить базу данных подписки для определенной публикации на другой сервер? Как вы управляете переходом, как это?
  3. Тот же вопрос касается дистрибьютора на стороне абонента: что если вы хотите переместить конечную точку дистрибьютора? Один из сценариев, о котором я могу подумать, - если у вас несколько подписок, использующих один компьютер-распространитель, может быть трудно, если вы захотите переместить некоторые из них на другой сервер-распространитель, чтобы уменьшить нагрузку.
  4. Как будут выглядеть сценарии установки / удаления для такой установки (как изначально, так и для непрерывного обновления)? Похоже, вы хотели бы иметь несколько специальных сценариев установки / удаления для развертывания "логической публикации" и базы данных подписки, а также для "логических подписок" и распространителей. Экземплярам издателя не потребуется особая логика установки / удаления (поскольку они просто начинают публиковать сообщения с использованием настроенной БД подписки, а затем останавливаются при их удалении). Рабочим узлам подписчика не потребуется ничего особенного при установке, кроме правильной конфигурации конечной точки распространителя, но потребуется логика удаления, чтобы убедиться, что они удалены из списка распространителей рабочих узлов.

2 ответа

  1. В конце концов, издатель потерпит неудачу, и сообщения будут накапливаться во внутренней очереди. Вам нужно будет спланировать размер диска, который вам нужен, чтобы справиться с этим, исходя из размера сообщения и того, как долго вы хотите ожидать появления БД. Оттуда зависит, сколько времени вы можете справиться. Вы можете использовать зеркалирование или кластеризацию БД, чтобы уменьшить время простоя БД.
  2. Технологии зеркалирования и кластеризации также могут помочь в этом. Зависит от того, хотите ли вы выполнить ручное или автоматическое переключение при сбое, и где вы это делаете (удаленные сайты?).
  3. Кластеризация MSMQ может помочь вам здесь. Если вы хотите удалить дистрибьютора и переместить его в кластер, все будет в порядке. Другая возможность - выставить своих дистрибьюторов по протоколу HTTP и распределить их нагрузку за программным или аппаратным решением балансировки нагрузки. За балансировщиком нагрузки вы можете более свободно перемещать вещи.
  4. Похоже, вы уже хорошо разбираетесь в этом:)

На ваш первый вопрос о высокой доступности базы данных подписки вы можете использовать кластер для восстановления после отказа. Если БД не работает, Bus.Publish выдаст исключение, да. Рекомендуется хранить базу данных подписки отдельно от вашей прикладной базы данных, чтобы избежать ее отключения при обновлении приложения. Это не должен быть отдельный сервер БД, отдельная БД на том же сервере БД будет в порядке.

Что касается перемещения серверов, это обычно осуществляется на уровне DNS, где в течение определенного периода времени вы оба будете работать, пока связь не перестанет действовать.

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

Как правило, рекомендуется не добавлять / удалять подписчиков при выполнении этих видов обслуживания. Обычно это немного упрощает ситуацию.

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