Apache Kafka - это платформа обработки потокового видео с открытым исходным кодом, разработанная Apache Software Foundation, написанная на Scala и Java. Он призван предоставить унифицированную платформу с высокой пропускной способностью и малой задержкой для обработки потоков данных в реальном времени и способен обрабатывать триллионы событий в день.

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

Компании, использующие Apache Kafka

По данным HG insights более 18 тысяч компаний используют Kafka, включая Spotify, Uber, Tumbler, Goldman Sachs, PayPal, Box, Cisco, CloudFlare и Netflix. 3729 разработчиков на StackShare заявили, что используют Kafka. Среди основных причин, по которым компании и разработчики используют Kafka, является то, что это высокая производительность, распределенная, масштабируемая и высокопроизводительная платформа.

Хотите изучить конкретные примеры использования компаний, которые используют Kafka? Прочтите Кто и почему использует Apache Kafka?

Какие есть альтернативы Apache Kafka

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

RabbitMQ - хорошо известный и популярный брокер сообщений, обладающий множеством мощных функций. Он написан на Erlang, языке программирования, который хорошо адаптирован для таких задач. Как и Kafka, RabbitMQ требует развертывания программного обеспечения и управления им. Зато имеет удобный встроенный UI. Он имеет четко выраженный ограниченный поток данных, другими словами, сообщения создаются, отправляются и принимаются получателем сообщения-потребителя. RabbitMQ отправляет сообщение потребителю, и сообщение удаляется из очереди после его обработки и получения подтверждения. Он идеально подходит для простых случаев использования, у вас есть определенные преимущества при низком трафике данных, такие как очередь с приоритетами и гибкие параметры маршрутизации. По способности справляться с большими объемами данных RabbitMQ здесь уступает Kafka. "Читать далее".

ActiveMQ - это брокер сообщений общего назначения, который поддерживает несколько протоколов обмена сообщениями, таких как AMQP, STOMP, MQTT. В ActiveMQ ответственность за доставку сообщений лежит на производителях. Он не может гарантировать, что сообщения получены в том же порядке, в котором они были отправлены. Это платформа обмена сообщениями push-типа, где поставщики отправляют сообщения потребителям. Также нет понятия репликации. ActiveMQ будет правильным выбором, особенно когда требуется одноразовая доставка и сообщения имеют ценность (например, в финансовых транзакциях).

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

Начните с электронной книги Apache Kafka

Мы извлекли уроки из опыта, полученного при консультировании клиентов и использовании Kafka в коммерческих проектах.

Экосистема Apache Kafka

Платформа Kafka состоит из Kafka Producer и Consumer API, Kafka Streams, Kafka Connect, Kafka REST Proxy и реестра схем.

Ядро Kafka - это брокеры, темы, журналы и разделы. Kafka Producer API используется исходными приложениями для генерации событий и публикации в кластере Kafka с высокой скоростью и объемом. Приложения могут использовать Kafka Consumer API для подписки на тему и получения сообщений по мере их публикации производителем.

Kafka Stream - это Streams API для получения сообщений от Kafka, выполнения любых операций и вывода результатов обратно в Kafka.

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

Прокси-сервер Kafka REST упрощает работу с Kafka на любом языке, предоставляя службу HTTP RESTful для взаимодействия с кластерами Kafka.

Реестр схем действует как центральное хранилище схем сообщений Kafka. Он управляет схемами, используя Avro для записей Kafka.

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

Лицензия Apache Kafka

Хотя Confluent внесла некоторые изменения в свою лицензионную модель, они не повлияли на Apache Kafka. Он по-прежнему имеет открытый исходный код и доступен по лицензии Apache 2.0. Некоторые другие функции Confluent Platform доступны по лицензии Confluent Community License. Это означает, что вы можете получить доступ к их исходному коду и изменить или распространить его; но вы не можете использовать его для создания конкурирующего предложения SaaS. Подробнее о деталях лицензии Confluent.

Инфраструктура для Apache Kafka

Когда дело доходит до сложности развертывания, есть несколько вариантов на выбор. Вы можете использовать голый металл и подготовить Kafka, например. с помощью скриптов Ansible. Также существуют пакеты Kafka для DCOS. Однако, если вы хотите выбрать Kubernetes, вы можете использовать, например, Стримзи. В большинстве случаев мы рекомендуем выбирать среду, которую вы уже используете для других своих служб. Просто не забудьте использовать несколько зон доступности, чтобы гарантировать доступность кластера во время сбоев. К счастью, у вас есть возможность, даже если вы не хотите поддерживать Kafka в своей инфраструктуре. Размещенные кластеры Kafka предлагают несколько компаний - Confluent Cloud, Instaclustr, Aiven.

Когда Apache Kafka - это то, что нужно

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

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

Нужна помощь с Apache Kafka?

Мы являемся сертифицированным техническим партнером Confluent. Наш инженерный опыт в области потоковой обработки и приложений распределенных систем подтвержден в коммерческих проектах, семинарах и консалтинге.

"Связаться с нами"