Apache Kafka: платформа обмена сообщениями и потоковой передачи данных для высокомасштабируемых систем

Работа приложений, веб-сервисов и серверных приложений, и это лишь некоторые из них, ставит перед теми, кто ими управляет, множество задач. Например, одной из наиболее распространенных проблем является обеспечение беспрепятственной передачи потоков данных и их максимально быстрой и эффективной обработки. Приложение для обмена сообщениями и потоковыми данными Apache Kafka — это программное обеспечение, которое значительно упрощает эту задачу. Первоначально разработанное как служба очередей сообщений для LinkedIn, это решение с открытым исходным кодом сегодня представляет собой комплексное решение для хранения, передачи и обработки данных.

Что такое Kafka?

Apache Kafka — это платформонезависимое приложение с открытым исходным кодом, принадлежащее Apache Software Foundation и ориентированное на обработку потоков данных. Изначально проект был запущен в 2011 году компанией LinkedIn, создавшей одноименную социальную сеть для профессионалов. Целью проекта была разработка очереди сообщений. С момента запуска без лицензии (Apache 2.0) возможности этого программного обеспечения были значительно расширены, превратив то, что было простым приложением для работы с очередями, в мощную потоковую платформу с широким набором функций. Его используют такие известные компании, как Netflix, Microsoft и Airbnb.

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

Основанная оригинальными разработчиками Apache Kafka в 2014 году, компания Confluent предоставляет наиболее полную версию Apache Kafka с платформой Confluent Platform. Она расширяет программу дополнительными функциями, некоторые из которых также с открытым исходным кодом, а другие — коммерческие.

Каковы основные функции Apache Kafka?

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

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

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

Обзор архитектуры Apache Kafka

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

Приложения, которые записывают данные в кластер Kafka, называются производителями, а приложения, которые читают данные из кластера Kafka, называются потребителями. Центральным компонентом, к которому обращаются производители и потребители при обработке потоков данных, является библиотека Java под названием Kafka Streams. Поддерживая транзакционную запись, она гарантирует, что сообщения будут доставлены только один раз (без дубликатов). Это называется доставкой точно в срок.

Примечание

Java-библиотека Kafka Streams является рекомендуемым стандартным решением для обработки данных в кластерах Kafka. Однако вы можете использовать Apache Kafka и с другими системами обработки потоков данных.

Технические основы: Интерфейсы Kafka

Программа предлагает пять различных базовых интерфейсов для предоставления приложениям доступа к Apache Kafka:

  • Kafka Producer: API Kafka Producer позволяет приложениям отправлять потоки данных на брокер(ы) в кластере Apache для их категоризации и хранения (в ранее упомянутых темах).
  • Kafka Consumer: Kafka Consumer API предоставляет потребителям Apache Kafka доступ на чтение к данным, хранящимся в темах кластера.
  • Kafka Streams: Kafka Streams API позволяет приложению выступать в роли обработчика потоков данных для преобразования входящих потоков данных в исходящие потоки данных.
  • Kafka Connect: API Kafka Connect позволяет создавать повторно используемые производители и потребители, которые соединяют темы Kafka с существующими приложениями или системами баз данных.
  • Kafka AdminClient: API Kafka AdminClient позволяет легко управлять и проверять кластеры Kafka.

Связь между клиентскими приложениями и отдельными серверами в кластерах Apache происходит через простой, мощный и независимый от языка протокол на основе TCP. По умолчанию разработчики предоставляют клиент Apache Kafka на Java, но существуют также клиенты на множестве других языков, таких как PHP, Python, C/C++, Ruby, Perl и Go.

Сценарии использования Apache Kafka

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

  • Публикация и подписка на потоки данных: Этот проект с открытым исходным кодом начинался с использования Apache Kafka в качестве системы обмена сообщениями. Хотя функции программы были расширены, она по-прежнему лучше всего подходит для прямой передачи сообщений через систему очередей, а также для широковещательной передачи сообщений.
  • Обработка потоков данных: Apache Kafka — это мощный инструмент для приложений, которым необходимо реагировать в реальном времени на определенные события и которым для этого нужно обрабатывать потоки данных максимально быстро и эффективно.
  • Хранение потоков данных: Apache Kafka также можно использовать в качестве отказоустойчивой распределенной системы хранения данных, будь то 50 килобайт или 50 терабайт последовательных данных, которые необходимо хранить на сервере (серверах).

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

Обзор распространенных вариантов использования Apache Kafka:

  • Система обмена сообщениями
  • Веб-аналитика
  • Система хранения данных
  • Обработчик потоков данных
  • Сорсинг событий
  • Анализ и управление файлами журналов
  • Решения для мониторинга
  • Журнал транзакций

Оцените статью
cdelat.ru
Добавить комментарий