Pull to refresh
14
0
Сергей Коник @skonik_dev

User

Send message

Насчет количества потоков async не могу сказать - вообще не проверял, что там и как. Была задача написать какой-то health check для консьюмеров, но вот причины зависания очень сложно было понять, локально не воспроизвести.

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

session_timeout/heartbeat_interval_ms - вроде стояли дефолтные, тоже не могу точно сказать.

Предполагаю, что дело все-таки в кластере кафки, у нас кластер кафки достаточно нагружен в совокупости. Сами топики по отдельности - нет. А так интересно, конечно, что у вас все хорошо работает, а тут нет.

Да, тут тоже вариант, как раз другие разработчики такую схему делали с отдельной очередью.

Здесь только есть проблема -- если основная таска обработки сообщений внутри застряла, а периодичесая, которая пишет пинг, нет. Допустим, сообщение(не ping) обрабатывается реально долго, то asyncio таска будет писать ping дальше. Тут какой-то такой же механизм нужно прикрутить, чтобы понимать, прогресс обработки основного сообщения

зависание происходит не вашего кода, а где-то далее в подключении к Kafka.

Да, все так, судя по тому, что откопали - местами висело подключение к кафке, после перезапуска все ок. В добавок там могло висеть подключение к БД по какой-то причине. А еще aiokafka имел проблему с зависаниями.

> запускать consumer в отдельном приложении fastapi
Тоже была мысль какой-то эндпоинт прикрутить. У нас, кажется, такое делала другая команда. Сам не использовал, так-как параллельно пришлось прикручивать свое решение.

Я пробовал реализовывать свою логику через SIGUSR1


Было предположение, что завис процесс консьюмера и проблема именно в процессе. После посылки сигнала писалось нечто в файл. Если файл появлялся, то все ок. Если нет - не ок. В итоге консьюмер зависал не только по этой причине, но и по другим, а livenessProbe думал, что все в порядке

С подсветкой синтаксиса есть проблема на темном фоне. Стоит обновить

Есть задача двух генералов и есть задача византийских генералов. Они немного отличаются. Первая скорее про ненадежность связи. Вторая скорее про консенсус, насколько я понимаю

Вы немного перемешали все понятия в одну кучу, как мне кажется.

Возможно. Но это, пожалуй, именно что размышления, основанные на разных источниках. Хотелось создать некий мысленный фреймворк, чтобы было удобно мыслить понятиями. Может быть, это получилось и не очень.

В заголовке есть слово "брокер", но где в вашей схеме сам брокер? Server явно выглядит как приложение с логикой, потому что выполняет умную логику по обработке сообщений.

Все верно, сам брокер не упоминается. Это первая часть, которая должна "подвести" читателя и дать легкий фреймворк для мышления в терминах гарантий доставки, чтобы было понятно, что имеется в виду по аналогии простого веб приложения. Брокер считай тот же самый сервер. Задумка была как-то это рассказать в серии статей.

Само понятие - Exactly-one delivery часто применяется к сообщениям, можно ли назвать сетевой вызов сообщением? я бы не сказал.

А почему нет? Сетевой вызов под капотом это отправка того же самого сообщения

При отправке сообщения у нас обычно есть паттерн - Publisher -
Subscriber и промежуточный брокер - который получает и отдаёт сообщение.
И тут то и начинается 3 типа гарантии как мне кажется с каждой стороны.

Да-да, все верно. Была задумка во второй статье рассказать про гарантии доставки со стороны продьюсера и про transactional outbox. В третьей статье рассказать про гарантии обработки со стороны консьюминга(показать, что меняя место commit/ack меняется и гарантия обработки).

Рассмотренный способ с Idempotancy в статье называется Application level
exactly once. Но он так же может быть и на уровне Broker и на уровне
Application Framework. Например - 'Умный' consumer может посылать
последний считанный номер сообщения в последовательности брокеру и брать
сообщение, которое ещё не успел обработать. Это не совсем Idempotancy,
механизм по-другому работает.

Спасибо, не знал об этом

Keynote. На ощупь подобрал себе цветовую схему и получился такой вид. Анимации там же. Для некоторых изображений еще использовал https://excalidraw.com/

Для меня такое не сработало -- городские маршруты приелись сразу же. Выходить желания нет.
Недавно нашел альтернативу в виде йоги.

Сомнительное удовольствие.

1. Невыносимая жара. Ты просто выходишь из дома в середине мая в 30+ и хочешь умереть.
2. Еда дешевая? Нет, не совсем. Возможно, только во всяких ресторанах и пивных в сравнении с Москвой. В таких заведениях какой-нибудь бургер будет стоить не 700 руб минимум по сравнению с Московскими ценами, а 350, например, но самих заведений тут не так много. Продукты в условном магните такие же по цене +-. Мак/КФС/Бургер кинг — цены везде одинаковые
3. Дешевое жилье. Да, здесь действительно можно купить в муравейнике дешевое жилье, но фиг знает, инфраструктуры никакой.
4. Особо негде гулять, кроме тройки мест, которые можно посетить за пару дней.

Information

Rating
Does not participate
Works in
Registered
Activity