Гибкость в хранении информации и масштабировании в Kafka

Сложно спорить с тем, что одно из важных преимуществ Kafka -- это возможность долговременного хранения информации. Мало того, используя настройки, вы можете как указать определенное время хранения топиков, так и ограничить размер топика в байтах -- в случае превышения сообщения станут недействительны и будут удалены. Разве не удобно, что сообщения хранятся лишь до той поры, пока они нужны? Однако это еще не всё.

Второй момент - масштабирование.

Когда поток сообщений становится все больше и больше, а одного кластера будет мало, можно развернуть их несколько. К примеру, это актуально, если вы имеете несколько ЦОД, а вам надо копировать между ними информацию. Или же представьте ситуацию, когда в требованиях по доступности информации указано, что вы обязаны иметь в каждом ЦОД полноценную копию данных.

Да, механизмы репликации в кластерах Kafka поддерживают лишь работу внутри одного кластера, а репликация между несколькими кластерами не выполняется. Но выход есть - утилита Mirror Maker из пакета Kafka. Она не просто свяжет очередью продьюсера и консьюмера, но и будет получать сообщения из одного кластера, публикуя их в другом.

Пример использования MirrorMaker смотрите ниже. Там сообщения из 2-х локальных кластеров агрегируются в составной кластер, а он потом копируется в другие ЦОД. Красота!

Топики в Apache Kafka

Мало кто не знаком с Apache Kafka. Это популярная платформа потоковой обработки событий в реальном времени, обладающая низкой задержкой и высокой пропускной способностью. Еще ее называют распределенным программным брокером сообщений с открытым исходным кодом. Однако все эти сообщения еще надо где-то группировать. В случае с Kafka используются топики.

По своей сути топики можно сравнить с БД в стандартных системах управления базами данных. При этом топики разбиваются на разделы, а эти разделы представляют собой отдельные журналы, функционирующие по принципу FIFO, то есть по принципу очереди. Каждый раздел -- это отдельный журнал.

Ниже - процесс записи сообщений по разделам:

Благодаря нескольким разделам, Kafka обеспечивает как избыточность, так и масштабируемость, что не может не радовать.

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

Гибкость в хранении информации и масштабировании в Kafka
Получить консультацию у специалистов DST
Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все ваши вопросы.
Комментарии
RSS
23:46
+1
Apache Kafka и RabbitMQ являются отличными инструментами, но каждый из них лучше использовать в различных случаях в зависимости от потребностей твоего проекта.

Apache Kafka это больше про большие данные и потоковую обработку.

Kafka идеально подойдет, если в реальном времени требуется обрабатывать огромные куски данных, требующие обработки сообщений с частотой от тысяч до миллионов сообщений в секунду.

Kafka также подходит для реализации систем логирования и мониторинга, где данные собираются с большого числа источников.

Или если есть сценарии, когда несколько потребителей должны получить все сообщения (например, в системах подписок).

RabbitMQ идеален для более стандартной очереди или брокера сообщений:

Если нужна сложная маршрутизация сообщений (например, выборочная подписка или публикация), он предоставляет очень гибкие функции.

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

RabbitMQ также подходит, когда нужна поддержка разных протоколов обмена и более зрелый подход к стандартной очереди задач.

Несколько примеров использования в больших корпорациях:

Apache Kafka и LinkedIn
Kafka был изначально разработан командой LinkedIn для обработки активности пользователей на сайте и использования этих данных для усовершенствования продуктов. Например, предоставления рекомендаций на основе действий пользователей в реальном времени. До сих пор LinkedIn активно использует Kafka для обработки более чем 1,4 триллиона сообщений в день.

Apache Kafka и Netflix
Kafka в Netflix используется для обработки и анализа огромного количества логов, которые приходят на их серверы при воспроизведении видео. Информация в реальном времени используется для мониторинга производительности и улучшения качества потокового воспроизведения.

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

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

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

Использование RabbitMQ и Apache Kafka на одном проекте
Такое решение может объединить преимущества обоих брокеров сообщений для обработки различных типов сообщений и данных. Это дает возможность позволить получить максимальную производительность и гибкость в обработке данных.

В проекте, где необходимо обрабатывать большие объемы потоков данных, можно использовать Kafka, а для обработки очередей сообщений можно использовать RabbitMQ. Также это может быть полезным в случаях, когда требуется обработать данные и события в режиме реального времени, а затем передать их для задач более широкого использования.

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

Вот, как могут быть использованы Apache Kafka и RabbitMQ:

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

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

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

При этом важно отметить, что это всего лишь один из потенциальных вариантов использования. В зависимости от конкретных потребностей проекта инструменты могут быть использованы в совершенно других целях и на разных этапах обработки данных. Все зависит от бизнес-требований, архитектуры системы и технической среды.
Сложно спорить с тем, что одно из важных преимуществ Kafka — это возможность долговременного хранения информации. Мало того, используя настройки, вы можете как указать определенное время хранения топиков, так и ограничить размер топика в байтах — в случае превышения сообщения станут недействительны и будут удалены. Разве не удобно, что сообщения хранятся лишь до той поры, пока они нужны? Однако это еще не всё.

Второй момент — масштабирование.

Когда поток сообщений становится все больше и больше, а одного кластера будет мало, можно развернуть их несколько. К примеру, это актуально, если вы имеете несколько ЦОД, а вам надо копировать между ними информацию. Или же представьте ситуацию, когда в требованиях по доступности информации указано, что вы обязаны иметь в каждом ЦОД полноценную копию данных.

Да, механизмы репликации в кластерах Kafka поддерживают лишь работу внутри одного кластера, а репликация между несколькими кластерами не выполняется. Но выход есть — утилита Mirror Maker из пакета Kafka. Она не просто свяжет очередью продьюсера и консьюмера, но и будет получать сообщения из одного кластера, публикуя их в другом.

Пример использования MirrorMaker смотрите ниже. Там сообщения из 2-х локальных кластеров агрегируются в составной кластер, а он потом копируется в другие ЦОД. Красота!
Вам может быть интересно
Проектирование платформ не заменяет DevOps — скорее, оно дополняет DevOps для решения проблем в масштабе предприятия и обеспечивает платформу для поддержания согласованности.DevOps DevSecOps Пла...
Исследуйте синергию GitOps и Kubernetes в современной разработке программного об...
В этой статье от разработчиков компании DST Global...
В этой статье разработчики компании DST Global рас...
Изучаем преимущества DevOps и SRE для доступности ...
Автоматизация играет жизненно важную роль в DevOps...
DevOps (акроним от англ. development & operati...

Новые комментарии

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

Заявка на услуги DST

Наш специалист свяжется с вами, обсудит оптимальную стратегию сотрудничества,
поможет сформировать бизнес требования и рассчитает стоимость услуг.

Адрес

Ижевск, ул. Воткинское шоссе, д. 170 Е, Технопарк Нобель, офис 1117

8 495 1985800
Заказать звонок

Режим работы: Пн-Пт 10:00-19:00

info@dstglobal.ru

Задать вопрос по почте

Укажите ваше имя
Укажите ваше email
Укажите ваше телефон