GoProg

 
Топ хэштегов


Архив

Apache Kafka очень производительный инструмент, который нужен для перенаправления потоков данных из одного места в другое, с обработкой и без. Проект достаточно зрелый и написан на Scala и Java, а среди тех, кто его активно использует, много гигантов IT индустрии: LinkedIn, Netflix, Yahoo, Twitter, Pinterest, и другие. Проект стал невероятно популярным во многом благодаря своим неоспоримым преимуществам: легкость настройки, масштабируемость, высокая пропускная способность и надежность.

В отличие от обычных брокеров, которые удаляют сообщения сразу же после успешной доставки, Kafka хранит их столько, сколько скажут. По умолчанию — это неделя. Это удобно, потому что, подписываясь на топик в Kafka можно получить и те сообщения, которые публиковались позавчера. Цифры попадаются разные, но Kafka превосходит по производительности многие популярные брокеры вроде ActiveMQ и RabbitMQ. По некоторым источникам зафиксированная пропускная способность Кафки: 100K сообщений в секунду, а у RabbitMQ всего 20К.

Ниже приведены некоторые преимущества Кафки:

  • Надежность — Kafka тиражируется и отказоустойчива.
  • Масштабируемость — система обмена сообщениями Kafka легко масштабируется без простоев.
  • Долговечность — Kafka использует распределенный журнал фиксации, который означает, что сообщения сохраняются на диске настолько быстро, насколько это возможно, а значит, и долговечны.
  • Производительность — Кафка обладает высокой пропускной способностью для публикации и подписки сообщений. Она поддерживает стабильную производительность даже при хранении многих ТБ сообщений. Она гарантирует нулевое время простоя и нулевую потерю данных.

Основные кейсы использования Kafka:

  • Метрики. Кафку можно использовать для сбора метрик активности. Например, счетчики веб-сайта или физических датчиков. Производители могут публиковать необработанные данные из источников данных, которые впоследствии можно использовать для поиска тенденций и моделей.
  • Сообщения. Также можно использовать как брокер сообщений сервисов. Если вы реализуете микросервисную архитектуру, вы можете иметь микросервис в качестве производителя, а другой - в качестве потребителя.
  • Решение для агрегации журналов — Kafka может использоваться в рамках всей организации для сбора журналов от нескольких служб и предоставления их в стандартном формате нескольким потребителям.
  • Потоковая обработка — популярные платформы, такие как Storm и Spark Streaming, считывают данные из темы, обрабатывают их и записывают обработанные данные в новую тему, где они становятся доступными для пользователей и приложений. Высокая прочность Kafka также очень полезна в контексте потоковой обработки.

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

Каждое сообщение, поступающее в систему, должно быть частью какого-либо топика (Topic). Топик - не что иное, как поток записей. Сообщения хранятся в формате ключ-значение. Каждому сообщению присваивается офсет. После потребитель (consumer) получает подписку на топик по своему выбору и потребляет данные.

Самый простой способ установить Kafka - это Docker. Ниже приведен пример конфига для docker-compose, который поднимет кафку на машине разработчика:

version: '2'
services:
  kafka:
    image: "wurstmeister/kafka:0.10.2.0"
    ports:
     - "9092:9092"
    hostname: kafka
    links: 
     - zookeeper
    environment:
     - KAFKA_ADVERTISED_HOST_NAME=kafka
     - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
     - KAFKA_ADVERTISED_PORT=9092
     - KAFKA_CREATE_TOPICS=topic1:1:1
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"

После чего достаточно задать команду:

docker-compose -f config.yml -p kafka up

И нам доступна кафка.

#apachekafka #IT #kafka #кафка #очереди



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