Масштабируемая шина с несколькими экземплярами Camel - PullRequest
0 голосов
/ 30 марта 2012

Моя идея - использовать верблюда для развязки модулей. Для поддержки масштабируемости и отработки отказа мне интересно, рекомендуется ли использовать следующую архитектуру?

У меня есть два приложения со встроенными приложениями Camel AppCamel1 и AppCamel2. Тогда у меня есть отдельные верблюжьи узлы Camel1 и Camel2.

AppCamel1 будет иметь маршрут с отказоустойчивостью / балансировкой нагрузки для Camel1 и Camel2. Таким образом, если, например, Camel1 дает сбой, Camel2 используется для восстановления после отказа.

Camel1 и 2 будут выполнять вызов REST с компонентом http, например. Также будет запрос-ответ от AppCamel1 до camel1 или 2.

Это правильный сценарий?

Что я должен использовать для соединения различных экземпляров Camel (AppCamel1 с Camel1 или 2)? (Я хотел бы знать, возможно ли избежать другого компонента, такого как jms-сервер в середине)

Спасибо!


Отредактировано после ответа Бодая

REST звонки с Camel1 / 2. Я хотел бы соединить AppCamel1 / 2 с Camel1 / 2 и посмотреть, смогу ли я избежать чего-то промежуточного. Я думаю, что mina - это возможность или даже http, но в этом случае AppCamel1 и AppCamel2 должны знать Camel1 / 2, что не очень хорошо.

Ответы [ 4 ]

1 голос
/ 04 апреля 2012

Это также обсуждается в списке рассылки Camel, где также есть несколько указателей и предложений http://camel.465427.n5.nabble.com/scalable-bus-with-multiple-Camel-instances-tp5606593p5606593.html

1 голос
/ 31 марта 2012

Если вы используете jms для связи, вам не нужен специальный балансировщик нагрузки. Просто используйте одну очередь и позвольте обоим Camel1 / 2 прослушивать очередь. Тогда они будут автоматически переключаться при сбое и балансировке нагрузки.

1 голос
/ 01 апреля 2012

Я бы определенно пошел на промежуточное программное обеспечение JMS.Activemq - естественный выбор (верблюд даже считается подпроектом activemq).Тривиально встроить amq вместе с вашими экземплярами canel и сгруппировать их.Activemq сможет обрабатывать как балансировку нагрузки, так и аварийное переключение.

1 голос
/ 30 марта 2012

Если вы пытаетесь загрузить HTTP-запросы баланса в ваш AppCamel1 / 2, вам понадобится промежуточный прокси-сервер (apache mod_proxy, perlbal и т. Д.).Чтобы загрузить баланс из AppCamel1 / 2 в Camel1 / 2, вы можете использовать балансировщик нагрузки Camel или даже запрос / ответ JMS ...

Из AppCamel1 / 2 в Camel1 / 2 это звучиткак вы используете REST в качестве интерфейса.Если вам нужно более сложное взаимодействие между экземплярами, то я бы использовал JMS (через camel-activemq ) для обмена сообщениями и Hazelcast (через camel-hazelcast ) для распределенного кэширования / блокировки,и т.д.

...