Size: a a a

2021 October 28

t

ttldtor in codingteam
у нас тут похожий случай и стратегии такие, что если клиент завален, то события начинают ... скипаться
источник

t

ttldtor in codingteam
и ты такой в логах видишь "скипнуто миллион событий"
источник

c

codingteam@cjr in codingteam
Minoru
> <@ttldtor> появилась ТА сторона

«отправитель», ок
источник

c

codingteam@cjr in codingteam
Minoru
у меня не предвидится такой нагрузки, чтобы пришлось что-то скипать :)
источник

c

codingteam@cjr in codingteam
Minoru
inb4: «не предвидится»
источник

t

ttldtor in codingteam
"подскажите алгоритм для задачки. Есть канал, по которому приходят задания. Каждое задание приходит отдельным сообщением, но сообщения идут «пачками» случайного размера: то по три, то по одному, то по пять, то ещё сколько-то. На выходе хотелось бы иметь как можно более равномерный поток заданий. Скажем, если на вход поступила пачка из пяти заданий, то в течение последующей секунды надо выдавать по одному заданию каждые 200 мс"
источник

t

ttldtor in codingteam
нету ТОЙ стороны)
источник

c

codingteam@cjr in codingteam
Minoru
ок, «чтобы на другом конце входного канала сообразили, что …»
источник

c

codingteam@cjr in codingteam
Minoru
ну Мантикор, ну я же не ТЗ пишу, а в чатике болтаю. Да, сорян, не все формулировки продуманы и вылизаны
источник

t

ttldtor in codingteam
я хочу сказать, что да, в ТЗ изначально ничего не было)
источник

c

codingteam@cjr in codingteam
portnov
ты ещё скажи что это новые требования и трудоёмкость выставь миноре
источник

c

codingteam@cjr in codingteam
portnov
пусть идёт с аккаунт-менеджером согласовывает
источник

c

codingteam@cjr in codingteam
portnov
Minoru: но скорость обработки, по-моему, лучше всё-таки замерять. Если задания обрабатываются достаточно быстро, то нафига ждать секунду для выборки задания из очереди?
источник

c

codingteam@cjr in codingteam
portnov
можно кстати с обеих сторон ограничения поставить
источник

c

codingteam@cjr in codingteam
portnov
что если слишком быстро — то всё-таки немножко под-throttle-ивать
источник

c

codingteam@cjr in codingteam
Minoru
дак здесь смысл не в throttle, а в том, чтобы задания немного распределить по времени. Грубо говоря, раз в секунду у меня подходит время выполнять некие проверки. Все они суются в очередь, откуда их тут же вытаскивает толпень воркеров. Эти воркеры выполняют проверки и ломятся писать результаты в SQLite — а у того ограничение на количество одновременных писателей. Хочу распределить проверки по времени, чтобы воркеры получали задания постепенно и имели меньше шансов столкнуться с друг другом
источник

c

codingteam@cjr in codingteam
Minoru
в принципе, эту проблему можно решать уровнем выше: перед тем, как пихать пачку заданий в очередь, можно сразу посчитать размер пачки (N) и слать задания с интервалом 1/N
источник

c

codingteam@cjr in codingteam
Minoru
но эта мысль пришла мне в голову только сейчас :)
источник

c

codingteam@cjr in codingteam
portnov
ну я вроде то же самое  предлагаю, только с промежуточным местом для хранения сообщений
источник

c

codingteam@cjr in codingteam
portnov
т.е. у тебя есть Queue<Item>, и есть цикл который раз в секунду достаёт одно сообщение и отдаёт воркерам
источник