ZooKeeper и RabbitMQ / Qpid вместе - перебор или хорошая комбинация? - PullRequest
13 голосов
/ 19 апреля 2010

Привет,

Я оцениваю некоторые компоненты для распределенной системы с несколькими центрами обработки данных. Мы собираемся использовать очереди сообщений (через RabbitMQ или Qpid), чтобы агенты могли отправлять асинхронные запросы другим агентам, не беспокоясь об адресации, маршрутизации, балансировке нагрузки или повторной передаче.

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

Учитывая вышеперечисленные варианты использования, ZooKeeper показалось, что он может подойти. Но мне интересно, если попытка использовать как ZK, так и организацию очереди сообщений - это перебор. Кажется, что то, что делает Zookeeper , может быть выполнено моим собственным менеджером кластеров с использованием обмена сообщениями AMQP, но это было бы трудно сделать правильно. С другой стороны, я видел несколько примеров, когда ZooKeeper использовался для реализации очереди сообщений, но я думаю, что RabbitMQ / Qpid более естественны для этого.

Кто-нибудь там использовал такую ​​комбинацию?

Заранее спасибо,

-Крис

Ответы [ 2 ]

5 голосов
/ 25 июня 2011

Прихожу в это поздно, но, возможно, это будет полезно. Основное внимание должно уделяться характеристикам производительности вашей системы. ZooKeeper, как вы сказали, более чем способен реализовать систему распределения задач с использованием распределенной очереди, но в настоящее время zk более оптимизирован для чтения, чем для записи (это вступает в действие только в диапазоне 1000 операций в секунду) , Если ваши требования к пропускной способности меньше, чем это, то использование zk для реализации вашей системы уменьшит количество компонентов времени выполнения и упростит его. Конечно, вы всегда должны запускать тесты производительности, прежде чем принять решение.

Распределенную координацию действительно трудно понять, поэтому я определенно рекомендую использовать для этого zookeeper, а не свою собственную.

0 голосов
/ 31 мая 2010

Не совсем уверен, что именно представляет собой ZooKeeper, но я предполагаю, что использование компонента из Apache (если он хорошо соответствует вашим потребностям) предпочтительнее, чем управлять такими вещами, как распределенная синхронизация и групповые сервисы самостоятельно. Конечно, вы можете нанять команду разработчиков специально для этой цели, но это не гарантирует вам лучшую реализацию.

Полагаю, что в любом случае он будет реализован как отдельный компонент, потому что иначе он может принести большую сложность и замедлить рабочий процесс; поэтому предпочтение ZooKeeper или чего-то подобного очевидно (для меня).

И, конечно, если вы не находитесь в фазе глобальной оптимизации рабочего процесса вашего проекта, я думаю, что было бы лучше использовать RabbitMQ или что-то подобное (я бы даже подчеркнул, что реализация AMQP (особенно коммерческая) будет более надежнее всего, что вы придумали).

Так что я бы выбрал оба варианта, тщательно выбирая подходящие продукты третьих сторон, но используя их столько, сколько нужно. И это только мое мнение; спасибо за чтение:)

...