Kafka в Go: полный курс по segmentio/kafka-go
Kafka — шина событий для систем, где потеря сообщения — инцидент: заказы, платежи, аудит, потоки между сервисами. Библиотека segmentio/kafka-go — самый «чистый Go» клиент: без librdkafka, без cgo, с простыми интерфейсами Reader и Writer.
Курс начинается с концепций (топики, партиции, оффсеты, группы) и доводит до продакшен-приёмов: ключи и партиционирование, коммиты и гарантии доставки, ретраи продюсера, ребалансировка, Reader API для сырых оффсетов, Admin API, мониторинг лага и эволюция схем. Каждый урок — код с построчным разбором, интерактив и честные грабли.
Чему научитесь
Чему научитесь
- Понимать топики, партиции, оффсеты и группы консьюмеров
- Писать продюсеры с ключами, батчами и ретраями
- Читать сообщения группой с коммитами оффсетов
- Выбирать гарантии: at-most-once, at-least-once
- Создавать топики через Admin API и управлять ретеншеном
- Мониторить лаг и безопасно эволюционировать схемы
Для кого курс
- Backend-разработчикам, которые строят событийные системы
- Тем, кто знает RabbitMQ и хочет понять отличие Kafka
- Командам, переносящим потоки данных на шину событий
Что понадобится
- Базовый синтаксис Go: горутины, контекст, ошибки
- Желательно курс rabbitmq — будет с чем сравнивать
Программа курса: 25 уроков
- 1Знакомство: зачем шина событийОчереди против лога: чем Kafka отличается от RabbitMQ.~16 мин · kafka golang, зачем kafka
- 2Топики, партиции и оффсетыКак устроен брокер: append-only лог, реплики, смещения.~18 мин · топики партиции kafka, офсеты kafka
- 3Установка: kafka-go и локальный брокерgo get, docker-compose, первый топик и первый порт.~18 мин · kafka-go установка, kafka docker compose
- 4Первый продюсер: Writerkafka.NewWriter, WriteMessages и подключение к брокеру.~18 мин · kafka producer golang, kafka writer
- 5Ключи и порядок сообщенийХэш ключа, партиция, почему порядок внутри партиции.~20 мин · kafka ключ партиция, порядок сообщений kafka
- 6Первый консьюмер: Readerkafka.NewReader, ReadMessage и цикл чтения.~18 мин · kafka consumer golang, kafka reader
- 7Группы консьюмеровGroupID, распределение партиций, масштабирование.~20 мин · kafka consumer group, группы kafka go
- 8Коммиты оффсетов: CommitMessagesAuto-commit против ручного, потеря при перезапуске.~20 мин · kafka commit offset, автокоммит kafka
- 9Гарантии: at-most-once и at-least-onceПорядок коммита и обработки: выбираем осознанно.~20 мин · at least once kafka, гарантии доставки kafka
- 10Продюсер: батчи и производительностьBatchSize, BatchTimeout, Async: цена каждого.~20 мин · kafka batch producer, производительность kafka go
- 11Сериализация: JSON в сообщенияхСтруктуры, теги и общий пакет контрактов.~18 мин · kafka json golang, сериализация сообщений
- 12Ошибки продюсера и ретраиRequiredAcks, таймауты, что делать с непосланным.~18 мин · kafka producer errors, ретраи kafka
- 13Ребалансировка группыКто забрал партиции, BalanceStrategy, подвисания.~20 мин · kafka rebalance, ребалансировка go
- 14Reader API: чтение с оффсетаSetOffset, FirstOffset, LastOffset: без группы.~18 мин · kafka setoffset, reader api kafka
- 15Durability: acks и ISRRequiredAcks, min.insync.replicas: цена надёжности.~20 мин · kafka durability, acks min insync
- 16Admin API: топики из кодаCreateTopics, partitions, retention и конфиги.~18 мин · kafka admin api, создание топика go
- 17Retention и log compactionСколько живёт сообщение, сжатие по ключу.~18 мин · kafka compaction, retention kafka
- 18Контекст и таймауты в kafka-goDialTimeout, ReadLag, контекст отмены чтения.~16 мин · kafka контекст go, таймауты kafka
- 19Ошибки консьюмера и яд-сообщенияPoison message, DLQ-паттерн, повторяемость.~20 мин · kafka dlq, ядовитые сообщения kafka
- 20Тесты: изоляция по топикамУникальные топики на прогон, моки Writer и Reader.~18 мин · тесты kafka go, kafka тестирование
- 21Мониторинг: лаг консьюмераReadLag, статистика Writer, алерты на отставание.~18 мин · kafka lag мониторинг, лаг консьюмера
- 22Эволюция схем сообщенийВерсии, опциональные поля, обратная совместимость.~20 мин · эволюция схем kafka, версии сообщений
- 23Kafka и RabbitMQ: выбор под задачуПовторы, порядок, fanout: сравнение на кейсах.~18 мин · kafka vs rabbitmq, выбор брокера
- 24Грабли продакшена KafkaПерегруженные партиции, забытые коммиты, throttling.~18 мин · kafka продакшен, грабли kafka
- 25Итоговый проект: событийный пайплайнЗаказ → событие → два консьюмера → DLQ.~24 мин · kafka проект go, событийный пайплайн
Вопросы о курсе
Нужен установленный Kafka?
Нет: весь код разбирается в браузере с реалистичными сообщениями и сценариями. Для практики локально — docker-compose из третьего урока поднимает брокер одной командой.
Почему kafka-go, а не sarama или franz-go?
kafka-go — чистый Go с самым простым API: идеален для входа. Сравнение с sarama и franz-go — отдельный урок, где честно показаны границы каждого.
Курс про Kafka или про библиотеку?
Про то и другое: первые два урока — концепции брокера, дальше — только практика клиента. Без понимания партиций и оффсетов код не прочитается.