Реальный пример использования Apache Helix, Zookeeper, Mesos и Erlang?
Я новичок в
Apache ZooKeeper
: ZooKeeper - это централизованный сервис для поддержки информации о конфигурации, наименования, предоставления распределенной синхронизации и предоставления групповых услуг.Apache Mesos
Apache Mesos - это менеджер кластеров, который упрощает запуск приложений в общем пуле серверов.Apache Helix
Apache Helix - это общая структура управления кластером, используемая для автоматического управления распределенными, реплицированными и распределенными ресурсами, размещенными в кластере узлов.Erlang Langauge
Erlang - это язык программирования, используемый для создания масштабируемых программных систем реального времени с требованиями высокой доступности.
Мне кажется, что Helix
а также Mesos
оба полезны для Clustering
система управления. Как они связаны с ZooKeeper
? Было бы лучше, если бы кто-то дал мне пример из реальной жизни для их использования.
Мне интересно узнать как [BOINC][1]
распределяют задачи своим клиентам? Используют ли они какие-либо из перечисленных технологий? (Забудь об Эрланге).
Мне просто нужен краткий взгляд на это:)
1 ответ
Erlang был создан компанией Ericsson и предназначен для использования в телефонных системах. По замыслу он запускает сотни, тысячи или даже десятки тысяч небольших процессов для обработки задач, отправляя информацию между ними вместо совместного использования памяти или состояния. Это позволяет использовать всевозможные интересные функции, которые отлично подходят для распределенных систем высокой доступности, таких как:
- перезагрузка горячего кода. Каждый процесс приостанавливается, соответствующий код модуля выгружается, и он возобновляется с того места, где был остановлен, поэтому развертывание может происходить без перезапуска или существенного прерывания.
- Простой распределенный обмен сообщениями и кластеризация. Отправка сообщения в локальный или удаленный процесс в большинстве случаев выполняется без проблем.
- Локальный сборщик мусора. Сборка мусора происходит в каждом процессе независимо, а не глобально, даже как в java, что способствует получению результатов с малой задержкой.
- Деревья наблюдения и сложная иерархия процессов и мониторинг / управление.
Вот несколько конкретных реальных примеров, которые хорошо используют Erlang:
- MongooseIM Высокопроизводительный и невероятно масштабируемый распределенный сервер XMPP / Chat.
- Riak Распределенное хранилище ключей / значений.
С другой стороны, Mesos можно рассматривать как платформу для эффективного преобразования серверного центра обработки данных в платформу для команд и разработчиков. Если я, скажем, как компания, владею центром обработки данных с 10000 физических серверов, и у меня есть 1000 инженеров, разрабатывающих сотни сервисов, это хороший способ позволить инженерам развертывать сервисы и управлять ими на этом оборудовании, не беспокоясь о серверах напрямую.. Это уровень абстракции поверх физических серверов, который позволяет вам совместно использовать и разумно распределять ресурсы.
Как пользователь Mesos, я могу сказать, что у меня есть Service X. Это исполняемый пакет, который находится в местоположении Y. Каждому экземпляру Service X требуется 4 ГБ ОЗУ и 2 ядра. И мне нужно 8 экземпляров, которые будут подключены к балансировщику нагрузки. Вы можете указать это в конфигурации и развернуть на основе этой конфигурации. Mesos найдет оборудование, у которого достаточно оперативной памяти и ресурсов ЦП для обработки каждого экземпляра этой службы, и запустит ее в каждом из этих мест.
Он также может справиться со многими другими, более сложными темами об их оркестровке, но это, вероятно, немного углубленно для этого:)
Наиболее распространенные варианты использования Zookeepers - это обнаружение сервисов и управление конфигурацией. По сути, вы можете думать об этом как о вложенном хранилище значений ключей, где службы могут просматривать заранее определенные пути, чтобы узнать, где в настоящее время находятся другие службы.
Простой пример: у меня есть веб-служба, использующая общий кластер базы данных. Я знаю простое имя для этого кластера базы данных и расположение его конфигурации в zookeeper. Я могу искать (или повторно опрашивать) этот путь в zookeeper, чтобы проверить адреса активных узлов базы данных. А с другой стороны, если я выведу узел базы данных из ротации и заменю его новым, конфигурация в zookeeper обновится с новым адресом, и все, что постоянно будет смотреть на него, обнаружит это изменение и изменит место, к которому он подключен..
Более сложный вариант использования zookeeper - это то, как его использует Kafka (или когда я последний раз использовал Kafka). У Кафки есть потоки, а у потоков много шардов. Каждый потребитель каждого потока использует zookeeper для сохранения контрольных точек в каждом сегменте после того, как они прочитали и обработали до определенной точки в потоке. Таким образом, если потребитель выйдет из строя или будет перезапущен, он будет знать, где подхватить поток.
Я не знаю о языке Меос и Эрланг. Но эта статья может помочь вам с Helix и Zookeeper.
Эта статья говорит нам:
Zookeeper отвечает за склейку всех частей, где Helix является компонентом управления кластером, который регистрирует все детали кластера (сам кластер, узлы, ресурсы).
Статья связана с кластеризацией в JBPM с использованием helix и zookeeper. Но с этим вы получите базовое представление о том, для чего используются helix и zookeeper.
И из большинства статей, которые я читаю онлайн, кажется, что zookeeper и helix используются вместе.
Apache Zookeeper может быть установлен на одной машине или в кластере. Это может быть использовано для отслеживания журналов. Он может предоставлять различные услуги на распределенной платформе.
Шторм и Кафка полагаются на Zookeeper.
Storm использует Zookeeper для хранения всех состояний, чтобы он мог восстанавливаться после сбоя в любой из своих (распределенных) компонентных служб.
Потребители очереди Kafka могут использовать Zookeeper для хранения информации о том, что было использовано из очереди.