Pull to refresh
10
0
Артем Борисов@justLegend

Python-разработчик платформы экспериментов в Okko

Send message

Спасибо за уточнение. Но всё же захват и освобождение GIL весьма непредсказуемые вещи. Не хочется лишний раз рисковать временем ответа. Плюс перед самой отправкой в Kafka у нас имеется весьма тяжёлый конвертер в protobuf, который не хотелось бы вызывать в процессе, обрабатывающем входящие запросыю

> Тоже интересно как решали, при 5000 RPS выглядит как потенциально большая проблема. 

Воркеров суммарно немало. Процессов, пишущих в Kafka, тоже. Поэтому нагрузка на каждый отдельный процесс не такая большая.

Кроме того, что будет с пишущим процессом, если читающий умер? Он блокируется полностью?

Нет, пишущий процесс не блокируется. Он так же отдаёт ответ и пишет в очередь. Если что-то случится с читающим процессом, то мы его перезапускаем. Да, часть данных потеряется, но это не критично, т.к. на самих пользователях не скажется

А какой объём данных?

Сравним со входным объёмом данных. В среднем примерно 1-2 Кб

При мягкой перезагрузке сервера данные успевают отправится? Если процесс убьют, то получается пользователь получит ответ, а данные в кавку не уйдут.

У нас настроен graceful shutdown. Когда ловим сигнал о завершении процесса, то сперва отправляем все неотправленные данные и только потом выключаемся.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик
Python