Подтвердить что ты не робот

Флюменд против Кафки

Пример использования: У меня есть несколько java-приложений, в которых все должны взаимодействовать с разными (каждый из них имеет определенные целевые) индексы elasticsearch. Например, приложение A использует индексы A, B, C ElasticSearch для запроса и обновления. Приложение B использует индексы A, C, D (скажем).

Требуется некоторый общий интерфейс, который может управлять всеми этими потоками данных. В настоящее время я оцениваю Kafka и свободно говорю для этой цели. Может кто-нибудь объяснить, что лучше подходит для этой ситуации. Я посмотрел на особенности как Kafka, так и Fluentd, и я не очень понимаю разницу, которую он мог бы сделать здесь. Большое спасибо.

4b9b3361

Ответ 1

kafka обеспечивает публикацию/подписку обмена сообщениями как распределенный журнал фиксации. Обычно вы устанавливаете kafka на каждом хосте, где вам нужно создать некоторые данные, которые будут перенаправлены где-то в другом месте, и все эти хосты вместе образуют кластер. Хорошо, что если по какой-то причине сетевое подключение становится неустойчивым или опускается, ваше приложение может продолжать создавать данные/журналы, и они не будут потеряны. Если ваше приложение напрямую отправляет журналы на какой-то удаленный централизованный хостинг, вы можете потерять несколько журналов за время, когда сеть опустится.

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

Из документа fluentd вы можете видеть, что fluentd может потреблять данные из kafka и производить данные в направлении kafka. Это само по себе должно означать, что fluentd и kafka находятся на разных слоях, поскольку первый использует последний.

Было бы логичнее сравнить fluentd и logstash. Что касается fluentd, то kafka - это еще один источник данных и/или приемник данных, но они совсем разные.

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

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