Знакомство
Анна Литвинова
Senior Software Testing Engineer
Диплом бакалавра по специальности «Программная инженерия», ИКТИБ ИТА ЮФУ г. Таганрог
Диплом о профессиональной переподготовке по специальности «Финансы и кредит», МРЦПКиПК ЮФУ г. Таганрог
Около 4х лет опыта в тестировании на проектах банковской сферы, страхования в роли Интеграционно-функционального тестировщика, Key Tester, QA lead
В студенчестве играла на ударной установке и выступала с рок-каверами

Kafka – что это такое?
Apache Kafka — распределённый программный брокер сообщений с открытым исходным кодом, разрабатываемый в рамках фонда Apache на языках Java и Scala.


Уровни доступа
- Producer – запись
Consumer – чтение - Права регулируются сертификатами/username+password
- Один сервис может и читать (consumer), и писать (producer)
Топики и партиции
Каждый топик состоит из одной или более партиций:
Разработчик при настройке Producer может указать, что данные нужно писать в определенный топик, при этом партиции он не указывает. В таком случае Kafka сама распределит по партициям весь набор передаваемых сообщений:
Приоритет
Либо наоборот разработчик может настроить на определённую партицию:
Формат данных (напоминает API)

Заголовки:
id
– uuidTm
– timestamp- ...
Тело:
- JSON
- XML
- Text
- ...
Очередь
Партиция | Оффсет | Ключ | Данные | Дата, время |
0 | 6 | 352cece4-f73a-4156-9899-af53b421930c | {“text”:”Вы авторизованы”} | 19:00 27.04.2024 |
1 | 5 | 0f9e9714-431f-458b-82f2-e5078bbb54a9 | {“text”:”Вы авторизованы”} | 18:00 27.04.2024 |
2 | 4 | 44f3d981-dba2-4bf1-b538-b3af4d006ad5 | {“text”:”Вы авторизованы”} | 17:00 27.04.2024 |
3 | 3 | 340cc7e8-5302-4df6-a7bc-b199c0d5aa72 | {“text”:”Вы авторизованы”} | 16:00 27.04.2024 |
2 | 2 | 9e4f1fb2-129f-402e-bb20-1b60c3e94e84 | {“text”:”Вы авторизованы”} | 15:00 27.04.2024 |
1 | 1 | c3bf04c0-4340-4d4c-84ed-ec28ea9b7186 | {“text”:”Вы авторизованы”} | 14:00 27.04.2024 |
3 | 0 | 8e719c25-0cc1-46eb-9823-344fe69af142 | {“text”:”Вы авторизованы”} | 13:00 27.04.2024 |
Сброс оффсета
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group [myConsumerGroup] --reset-offsets --to-earliest --topic [my_topic] –execute
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group [myConsumerGroup] --reset-offsets --to-latest --topic [my_topic] –execute
./bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group [myConsumerGroup] --reset-offsets --to-datetime 2024-05-20T00:00:00.000 --topic [my_topic] --execute
Kafka Lag - Grafana
kafka lag = последний оффсет в топике - последний вычитанный консьюмером оффсет
Время хранения
Как тестировать кафку


Как тестировать кафку, если ваш микросервис – producer
Необходим доступ на чтение
Вам требуется совершить триггер, приводящий к записи в кафку – например, отправить запрос, подключиться к топику и убедиться, что запись появилась.
Как тестировать кафку, если ваш микросервис – consumer
Необходим доступ на чтение и запись
Вам требуется эмулировать продюсер – подключиться под его правами к топику и руками отправить сообщение. Затем убедиться, что ваш сервис корректно вычитал сообщение – есть записи в логах, а также, возможно, были изменения в БД.
Как тестировать кафку, если ваш микросервис – producer и consumer
Необходим доступ на чтение и запись
Здесь для Topic1 ваш микросервис – consumer, поэтому вы кидаете руками сообщение, сервис вычитывает и как producer отправляет его в Topic2.
Как тестировать кафку (ошибки)
На что еще обратить внимание
Вы можете настроить сразу все топики на тип string, а также на вариант отображения – JSON. Также обратите внимание, в каком порядке вы подгружаете сообщения – Oldest или Newest.




Где еще используется кафка
Чем лучше апи?
![]() |
![]() |
|
|
|
Аналоги Kafka
![]() |
![]() |
|
Kafka — pull, получатели сами достают сообщения из топика | RabbitMQ — push, когда сообщения отправляются получателям |