@proelixir

Страница 958 из 1045
Rustam
18.05.2018
10:24:09
Таймстемпы к задачам?

Dmitry
18.05.2018
10:24:38
Понятно что я могу хранить не в очереди

Александр
18.05.2018
10:24:42
ну тебе надо векторные часы тогда, то есть не рабитом порядок считать, а рабитом просто параллельно фигачить а порядок какого-то рода отдельными счётчиками определять

Dmitry
18.05.2018
10:25:30
Но хотелось бы, чтобы был такой "кролик" условный, который за меня все это дело роутит

Google
Александр
18.05.2018
10:26:09
очередь для каждого юзера тогда должна быть отдельная

если раббитом

Dmitry
18.05.2018
10:27:41
Т.е. типа такого софта: У меня есть пул коннектов, я шлю первому попавшемуся незалоченному из первой попавшей незалоченной очереди

А каогда получаю ack - анлочу и очередь и коннект

Самая блять простая херня, которую только можно захотеть

Но rabbit так не умеет

Александр
18.05.2018
10:28:40
зашёл пользователь, ты спавнишь одного консумера его личной очереди, по истечению какого то времени неактивности прибиваешь его

ну и следишь чтобы консумеры были по одному, не?

Dmitry
18.05.2018
10:30:00
Rabbit походу сам прибивает

Кстати

Александр
18.05.2018
10:30:30
кстати, да, но надо пробовать

Dmitry
18.05.2018
10:30:39
Консумеры по одному - rabbit тоже умеет сам следить

Осталось понять как сделать так, чтобы не осталось очередей без консьюмеров

Google
Dmitry
18.05.2018
10:31:35
Если let it crash

Там же походу вообще нету никаких возможностей получить список очередей

Ну кроме http admin какого нибудь супер костыльного

Rustam
18.05.2018
10:35:40
http api есть

Dmitry
18.05.2018
10:35:51
Я и говорю - костыли

Есть вариант плагин написать

Конечно

Александр
18.05.2018
10:38:13
опять же мониторить супервизором и проверять пустая очередь при креше или нет

Dmitry
18.05.2018
10:39:18
Если сервак перезагрузится

А продьюсеры уже забыли, в какие очереди писали

Крч это настолько неконсистентно

Александр
18.05.2018
10:43:20
перезагрузился сервак - получил список очередей

Dmitry
18.05.2018
10:43:40
Ну тык я и называю

Александр
18.05.2018
10:43:45
заспавнил консумеров и в бой

Dmitry
18.05.2018
10:43:59
По id пользователя

Зарегистрированных миллион - активных 100

Всех не переберешь

Alex
18.05.2018
10:44:44
Я бы сказал, что эта задача слишком странная, чтобы пытаться натянуть её на кролика

Google
Alex
18.05.2018
10:47:50
Я правильно понял, что ты хочешь выполнять задачи из очереди на ограниченном пуле воркеров, но хочешь их распределять по воркерам по дополнительному критерию?

Dmitry
18.05.2018
10:48:07
Не правильно

Я хочу выполнять задачи из пула очередей на пуле воркеров так, чтобы пока задача не решена - очередь была залочена

Alex
18.05.2018
10:50:06
Заложена на запись или чтение?

Dmitry
18.05.2018
10:50:18
Залочена на чтение

Те чтобы если задача зафкйлилась - она не терялась

И чтобы вторая задача не могла быть выполнена раньше первой

В рамках одной очереди

А вот в рамках разных очередей - сколько угодно

Alex
18.05.2018
10:51:16
Dmitry
18.05.2018
10:51:33
Ну ещё раз попробовала бы выполнится

Alex
18.05.2018
10:51:58
Ну ещё раз попробовала бы выполнится
А если она в принципе не может быть выполнена?

Dmitry
18.05.2018
10:52:18
Тогда все висело до бесконечности

И пыталось бы выполнится до бесконечности

Ну вернее это к делу не относится

Она будет отмечена как выполненная и так и так

Но только после того, как либо выполнится либо зафейлится

К примеру если надо послать http она может минуту ждать пока появится интернет

Alex
18.05.2018
10:55:48
Я, кажется, уловил. Фактически, получается шардинг единого потока задач, консистентный, по ключу, работает по одному воркеру на шард

Dmitry
18.05.2018
10:55:55
И все это время очередь залочена должна быть на чтение

Google
Dmitry
18.05.2018
10:56:43
Ну что-то типо да

Наверное это можно так назвать

Смысл в том, чтобы можно было ещё один комп доставить

И пул воркеров горизонтально увеличить

Alex
18.05.2018
11:00:18
И пул воркеров горизонтально увеличить
Вот тут как раз сложность как в любом шардинге

В смысле, я пока не понял, как это ребалансировать без остановки

Dmitry
18.05.2018
11:01:34
Ну вот я думал что в кролике можно подписаться на топик

Но походу нет

Alex
18.05.2018
11:03:24
Я вообще даже не знаю, есть ли готовое решение на твои критерии

Dmitry
18.05.2018
11:04:19
Походу придётся забить на порядок

Пихать в одну очередь и выгребать из неё все толпой

Чисто статистически порядок будет сохраняться с большой вероятностью

Alex
18.05.2018
11:11:41
Походу придётся забить на порядок
Можно забить частично, при добавлении воркеров. Тогда ребаланс становится простым.

Александр
18.05.2018
11:14:45
опять же можешь всё сгребать в одну очередь читать одним воркером

но учитывать им для каких пользователей обрабатывается

и по RPC мелким подворкерам делегировать

а его лочить если пришла задача для пользователя который обрабатывается

тогда у тебя для разных юзеров будет параллелиться, и порядок не нарушится

Dmitry
18.05.2018
11:16:13
С одной стороны да

Но с другой - тачку не добавишь

Google
Dmitry
18.05.2018
11:16:36
Потому что я этим воркеров должен всю очередь вычитать

А вдруг там есть новый пользователь

И как узнать что на соседней тачке уже обрабатывается этот юзер - никак

Можно прокручивать очередь

Но это треш какой то

Александр
18.05.2018
11:18:09
очередь -> воркер который параллелит для разных юзеров -> много мелких работающих параллельно

у тебя всегда будут обрабатываться параллельно для разных юзеров задачи

Александр
18.05.2018
11:18:45
а сама последовательность глобально будет сохранятся

Dmitry
18.05.2018
11:18:58
Получается

А это жопа как сложно

Если его делать то и кролик не нужен

Александр
18.05.2018
11:19:18
Вот этот воркер в центре очень сложный
он хранит некоторый реестр задач в виде ключ значение + шлёт RPC запросы и подтверждает задачи

не супер сложный

если он помрёт, задачи будут не акцептнутые, он их заново сожрёт и тут логика вообще не нужна

Alex
18.05.2018
11:20:03
Александр
18.05.2018
11:20:22
нет, просто будет в очередь-подзадач как попало кидать дадачи

а там они сами будут брать в любом порядке

Dmitry
18.05.2018
11:21:04
Александр
18.05.2018
11:21:07
конечно это не самая оптимальная схема, но часть нагрузки будет отпараллелена и будет 100% порядок

Страница 958 из 1045