Длительность: 24 ч.
Описание
Этот тренинг поможет вам получить представление об архитектуре и функционировании Apache Kafka – платформы распределенной потоковой передачи событий с открытым исходным кодом. Вместе с тренером вы будете отправлять и получать сообщения из Java- и REST-клиентов, обсудите варианты конфигурации кластера и клиентов для достижения требуемых характеристик доставки сообщений (латентности, пропускной способности, сохранности и доступности).
Вы рассмотрите настройку нескольких кластеров для одного приложения, поскольку это жизненно важно для достижения отказоустойчивости и повышения масштабируемости.
Разберетесь, как Kafka Connect позволяет решать общие задачи перемещения данных между Kafka и внешними системами (СУБД, файловая система и др.).
Узнаете, почему во многих случаях хорошим способом создания быстрых и устойчивых решений для потоковой обработки являются Kafka Streams и KSQL, и как ими пользоваться.
Разбираемые темы
1. Обзор- Что такое Kafka
- Примеры удачного и неудачного использования Kafka
- Kafka или база данных
- Kafka или очередь сообщений
- Архитектура кластера Kafka: Брокеры, Темы, Разделы, Сегменты, Реплики
- Архитектура кластера Kafka: Zookeeper, партиционирование, главные и ведомые узлы репликации, ISR
- Клиенты и API
- Практика 2.1: настройка кластера Kafka с помощью Docker
- Установка Zookeeper
- Установка Kafka
- Kafka Producer API: основы
- Практика 3.1: Отправка одного сообщения
- Практика 3.2: Отправка нескольких сообщений
- Практика 3.3: Отправка нескольких сообщений с явным партиционированием
- Практика 3.4: Отправка сообщений без ключа Kafka Consumer API: основы, группы потребителей
- Практика 3.5: Один получатель
- Практика 3.6: Несколько получателей в одной группе Дополнительные возможности: Пакеты, Повторы, Идемпотентность, Транзакции, Перебалансировка Групп Потребителей
- Практика 3.7: Отправитель без пакетов и повторов
- Практика 3.8: Идемпотентный Отправитель
- Практика 3.9: Транзакционный Отправитель
- Практика 3.10: Отправка и получение в транзакции
- Практика 3.11: Получение-обработка-отправка в транзакции
- Безопасность: SSL, SASL, Kerberos
- REST Proxy: отправка и получение сообщений в форматах JSON, Авро
- Практика 4.1: доступ через REST Proxy
- Schema Registry: реестр схем
- Практика 4.2: использование REST Proxy со Schema Registry
- Целевые характеристики и компромиссы
- Zookeeper: конфигурация, автономный режим и режим кворума, CLI
- Практика 5.1: Настройка кворума Zookeeper
- Мониторинг и управление кластером
- Практика 5.2: Prometheus для мониторинга Kafka
- Практика 5.3: Сбор метрик
- Для чего могут понадобиться несколько кластеров в Kafka?
- MirrorMaker
- Практика 6.1: использование MirrorMaker для синхронизации кластеров
- Confluence Replicator
- Архитектура Kafka Connect
- Приемники данных Kafka Connect
- Практика 7.1: Файловый приемник
- Практика 7.2: Приемник JDBC
- Практика 7.3: Приемник ElasticSearch
- Источники данных Kafka Connect
- Практика 7.4: Файловый источник
- Практика 7.5: Источник JDBC
- Kafka Streams: DSL, API, StreamBuilder, топологии
- Практика 8.1: Реализация топологии
- Устройство Kafka Streams: многопоточность, несколько экземпляров и задач
- Схемы данных в Kafka: сериализация в JSON-схемы, схемы Avro, реестр схем, эволюция схем
- Практика 8.2: использование схем JSON и Avro
- Обработка с сохранением состояния: хранилище состояний, отказоустойчивость для хранилищ состояний
- Практика 8.3: Создание хранилища состояний
- KTable: Потоки обновления данных, кэширование, скорость выдачи, агрегация
- Практика 8.4: Агрегация потоков
- Окна в потоках: метки времени, плавающие, прыгающие, сеансовые
- Практика 8.5: использование окон в потоках
- Соединение: поток с потоком, KTable с KTable, поток с KTable
- Практика 8.6: объединение потоков и таблиц
Цели
Во время обучения вы научитесь:- Понимать архитектуру Kafka.
- Разбираться в развертывании и настройке Kafka.
- Использовать REST-доступ к Kafka.
- Разрабатывать Java-клиентов для Kafka.
- Проектировать многокластерные архитектуры.
- Использовать инструменты Kafka Connect.
- Создавать приложения Kafka Streams и kSQL-запросы.