Apache Kafka: функции, преимущества и применение брокера
Apache Kafka становится всё более частым решением для передачи и хранения информации. Компаниям нужны специалисты, которые умеют работать с брокером и могут перевести на него проекты. Kafka — это востребованный инструмент, который стоит изучить! Предлагаем начать с этой статьи.
Мы собрали опыт экспертов и best practices по работе с брокером. Расскажем вам о его функциях и сильных сторонах, а также когда и почему стоит перейти на Kafka. Помогут нам в этом специалисты из крупных компаний — Билайн и Bimeister.
Apache Kafka как брокер сообщений
Kafka — это брокер сообщений, который получает, хранит и передаёт данные между различными частями системы, то есть некоторый посредник в обмене данными, который делает этот процесс эффективнее 📩
Алексей Калакин, руководитель департамента по работе с большими данными и ИИ в Билайне, автор практикума «Kafka by Rebrain»:
Прежде всего брокер используют для обмена данными:
- межсистемного, как интеграционную шину между несколькими системами,
- внутрисистемного, чтобы организовать асинхронный обмен данными между микросервисами.
Отличие Kafka от других брокеров в его высокой производительности и возможности сохранять на себе события. Эти особенности сделали Kafka также удобным компонентом ETL-инструментария для работы с большими данными 🗃️
Так, например, телеком-операторы используют Kafka повсеместно:
- для разработки собственных программных продуктов,
- для организации обмена между системами, замещая брокером проприетарные шины, используемые ранее,
- в качестве части ETL-инструмента.
Как часть ETL-инструмента Kafka используется с самых первых своих версий, ведь данные оператора — это постоянные потоки, собираемые с сети. Брокер помогает организовать эти потоки, фильтровать их и отправлять на хранение в озеро — уже структурированные данные.
Александр Крылов, TeamLead DevOps Bimeister, спикер направления DevOps by Rebrain:
Это хороший инструмент для доставки транзакций между двумя системами. Полноценный брокер очередей, который получает сообщение от системы-источника и передаёт системе-получателю.
Помимо этого, Kafka помогает связать одну систему для работы с другой.
Например, есть две системы: система-источник, пусть она что-то продаёт, и система-получатель, которая что-то считает. Первая система обращается ко второй, чтобы получить результат расчётов. Но чтобы выдать результат, системе расчётов надо сходить ещё в две разные сторонние системы. Такая работа систем возможна как раз благодаря Kafka.
После получения данных из двух сторонних систем система расчётов выполняет свою функцию и выдаёт нужный результат системе продаж, которая была изначальным источником запроса.
Понятно, что это далеко не все варианты использования Kafka, но чаще всего брокер используется так.
Профит Kafka в том, что этот инструмент подходит для любой сферы. Особенно актуален для стриминговых и финансовых сервисов. Я использовал Kafka в страховой сфере 📑
Преимущества Apache Kafka
Алексей Калакин, руководитель департамента по работе с большими данными и ИИ в Билайне, автор практикума «Kafka by Rebrain»:
Основные преимущества Kafka — это превосходная масштабируемость и высокая скорость работы. Это позволяет использовать брокер там, где применение других инструментов невозможно 🕶️
Развиваясь как часть экосистемы Apache Hadoop, брокер стал базовым элементом работы с большими данными — там его практически ничем не заменить.
Выбор Kafka часто обуславливается возможностью хранения данных на брокере, возможностью читать одни и те же данные разными потребителями в разное время, скоростью работы, да и просто удобством его API для разработчика.
Этот функционал отлично подходит для организации межсервисного обмена. Микросервисы в силу своей архитектуры должны обмениваться сообщениями друг с другом, и если синхронные взаимодействия обычно решаются за счёт REST-обмена, то для организации асинхронной передачи данных и выстраивания очередей — брокеры являются удачным выбором.
Александр Крылов, TeamLead DevOps Bimeister, спикер направления DevOps by Rebrain:
Преимуществ много, но, пожалуй, основное — отказоустойчивость и быстрая скорость обработки очередей при больших объёмах данных, то есть при HighLoad⚡
Переход на Apache Kafka
Алексей Калакин, руководитель департамента по работе с большими данными и ИИ в Билайне, автор практикума «Kafka by Rebrain»:
С уходом западных вендоров актуальность Kafka повышается для многих задач, например, для межсистемного обмена: вместе с корпоративными системами надо менять и их связующее звено. Тут выбор достаточно богат: REST/SOAP обмен, gRPC, давно зарекомендовавшие себя RabbitMQ или ActiveMQ, но даже среди такого обилия средств выбор часто падает в пользу Kafka.
Стоит ли переходить на Kafka — зависит от конкретной задачи.
Брокер достаточно универсален и удобен, его API знаком массе разработчиков. Если архитектура вашего решения подразумевает обмен данными, асинхронный обмен или значительный рост потока данных, то Kafka станет хорошим решением.
Александр Крылов, TeamLead DevOps Bimeister, спикер направления DevOps by Rebrain:
Переход на Kafka — распространённый кейс в рамках импортозамещения и ухода от таких систем, как IBM MQ или RHEL Fuse. И тут важно упомянуть, что всё зависит от вашего стека.
У нас был Spring Boot и Kotlin. Разработчикам с навыком работы в этих системах проще всего будет перейти на связь Kafka+Camel, чем на тот же RabbitMQ.
Наш случай не стал исключением, поэтому выбор был в пользу Kafka. Почему? Потому как адаптеры на Camel+Spring пришлось бы на 80% рефакторить или переписывать под Кролика (RabbitMQ), что было бы дорого и долго.
Apache Kafka — брокер сообщений, который позволяет более эффективно работать с большим объёмом данных. За счёт масштабируемости, высокой скорости работы и отказоустойчивости брокер подходит большинству проектов в самых разных сферах. Видим, что всё больше компаний переходит на Apache Kafka. Делитесь в комментариях опытом работы с брокером или вопросами о Kafka, подготовим новые материалы!
Кстати, недавно мы запустили практикум «Kafka by Rebrain». С помощью практикума можно освоить навык работы с брокером и начать применять его в реальных рабочих задачах 😉
А познакомиться с нами поближе, пообщаться с ребятами с практикумов Rebrain и посмотреть вакансии можно в чате Rebrain DevOps Community