Apache Kafka — это распределённая система обмена сообщениями, работающая по принципу публикации-подписки. Рассмотрим каждый аспект этого определения подробнее.
Публикация-подписка
Система публикации-подписки предполагает наличие издателей (publishers) и подписчиков (subscribers). Издатели публикуют информацию, а подписчики подписываются на её получение.
В качестве примера можно привести YouTube. Создатели видео (publishers) публикуют видео в любой момент. Пользователи (subscribers) могут смотреть любое видео в любой момент. YouTube, как централизованная система, хранит все видео и обеспечивает подписчикам к ним доступ. Важно отметить, что издатели не знают о подписчиках и не знают, когда те будут смотреть видео. Подписчики, в свою очередь, независимы друг от друга и от издателей.
Обмен сообщениями
В Apache Kafka издатели и подписчики обмениваются сообщениями, а не видео, как в примере с YouTube. Каждое сообщение — это последовательность байтов. Задача Apache Kafka — хранить сообщения, отправленные издателями, и предоставлять их подписчикам по запросу.
Распределённая система
Apache Kafka — отказоустойчивая система, способная создавать большие кластеры из множества серверов. Это обеспечивает отказоустойчивость: если один или несколько серверов выйдут из строя, остальные продолжат работу, и ни одно сообщение не будет потеряно (при правильной настройке).
Apache Kafka Broker
Далее будет рассмотрено понятие «брокер» в Apache Kafka.