Я исследую возможность использования MassTransit с RabbitMQ в нашем приложении в качестве ESB. Основное преимущество, которое я ищу, - это добавление устойчивой асинхронной обработки сообщений к входящему потоку данных.
Профиль нашего приложения состоит из двух частей:
Входящий поток данных
- Односторонний обмен сообщениями
- Обрабатывается асинхронно
- 10k + сообщений в минуту
Активность на сайте
- Двусторонний
- В идеале используйте функции языка C # async await, но требуются данные в обоих направлениях
- ‹100 в минуту
Обмен сообщениями в веб-приложении не является необходимостью, но было бы неплохо использовать тот же механизм, чтобы полностью абстрагироваться от доступа к данным через ESB.
Вопросы:
Из того, что я читал; узел ESB не должен знать или заботиться о каком-либо другом узле на шине, он должен просто выполнять свою работу и отправлять сообщения на шину, ожидая ответов, если / когда это необходимо. Для меня это означает, что каждый веб-сервер / сервер приложений будет иметь собственную локальную кластерную очередь. Верно ли это предположение?
Если это правильно; как мне программно добавить машины в кластер? Есть ли какие-то подводные камни, о которых мне нужно знать?
Если это не так; как мне управлять кластером очередей? Создание выделенного кластера имеет свои собственные проблемы, такие как записи DNS, балансировка нагрузки для избыточных / автономных узлов и т. Д.
Мне не хватает функциональности, которую ESB могут добавить вместе с реализацией MassTransit, однако меня немного затуманивает логистика передовых практик о том, где и как настроить ее в надежной конфигурации.
Спасибо за любые отзывы и советы
Обновление. Мы используем EC2 для машинной инфраструктуры, в частности мы используем зоны доступности, чтобы минимизировать перебои в работе центра обработки данных. В этой конфигурации у нас есть 3 зоны, каждая зона имеет веб-сервер, сервер приложений и сервер базы данных (Couchbase). Мы также используем балансировщики нагрузки EC2 для распределения нагрузки между зонами.
@Travis: Есть ли у вас какой-либо опыт / советы по использованию MT / RMQ в Amazon EC2?