История изменений
Исправление OxiD, (текущая версия) :
Мы делали атомарно с помощью Lua. Деталей не помню, уже лет 6 прошло, но было две структуры данных одна для хранения заданий, вторая для взятых в работу с датой старта (или планируемого завершения). Когда консьюмер берет задание, оно перекладывается из одной структуры в другую. Какие именно структуры не помню, но кажется одна из них список, а вторая zset, с быстрым поиском по id и получением в отсортированном виде. Когда задача выполнилась она удаляется из zset.
Отдельный процесс периодически смотрит в zset , и если видит что какие-то задачи затаймаутились то перекладывает обратно в первую очередь.
Pub/Sub не помнб почему не подошел, но делали подписку на список каким-то другим способом.
А субд не подошла потому что были тысячи рпс на вставку в эти очереди.
Поддерживать луа тоже люди нужны. А что за проблема с поддержкой? кажется что поддержка небольшого кластера кафки-раббита это не такое уж и сакральное знание и не рокет-сайнс..
Ну т.е у нас и с редисом были проблемы, кластер разваливался, не хотел с ipv6 работать и много чего еще, не скажу что раббит прям ой как сложнее.
Черт, про провайдера не увидел )
Исправление OxiD, :
Мы делали атомарно с помощью Lua. Деталей не помню, уже лет 6 прошло, но было две структуры данных одна для хранения заданий, вторая для взятых в работу с датой старта (или планируемого завершения). Когда консьюмер берет задание, оно перекладывается из одной структуры в другую. Какие именно структуры не помню, но кажется одна из них список, а вторая zset, с быстрым поиском по id и получением в отсортированном виде. Когда задача выполнилась она удаляется из zset.
Отдельный процесс периодически смотрит в zset , и если видит что какие-то задачи затаймаутились то перекладывает обратно в первую очередь.
Pub/Sub не помнб почему не подошел, но делали подписку на список каким-то другим способом.
А субд не подошла потому что были тысячи рпс на вставку в эти очереди.
Поддерживать луа тоже люди нужны. А что за проблема с поддержкой? кажется что поддержка небольшого кластера кафки-раббита это не такое уж и сакральное знание и не рокет-сайнс..
Ну т.е у нас и с редисом были проблемы, кластер разваливался, не хотел с ipv6 работать и много чего еще, не скажу что раббит прям ой как сложнее.
Исправление OxiD, :
Мы делали атомарно с помощью Lua. Деталей не помню, уже лет 6 прошло, но было две структуры данных одна для хранения заданий, вторая для взятых в работу с датой старта (или планируемого завершения). Когда консьюмер берет задание, оно перекладывается из одной структуры в другую. Какие именно структуры не помню, но кажется одна из них список, а вторая zset, с быстрым поиском по id и получением в отсортированном виде. Когда задача выполнилась она удаляется из zset.
Отдельный процесс периодически смотрит в zset , и если видит что какие-то задачи затаймаутились то перекладывает обратно в первую очередь.
Pub/Sub не помнб почему не подошел, но делали подписку на список каким-то другим способом.
А субд не подошла потому что были тысячи рпс на вставку в эти очереди.
Исходная версия OxiD, :
Мы делали атомарно с помощью Lua. Деталей не помню, уже лет 6 прошло, но было две структуры данных одна для хранения заданий, вторая для взятых в работу с датой старта (или планируемого завершения). Когда консьюмер берет задание, оно перекладывается из одной структуры в другую. Какие именно структуры не помню, но кажется одна из них список, а вторая zset, с быстрым поиском по id и получением в отсортированном виде. Когда задача выполнилась она удаляется из zset.
Отдельный процесс периодически смотрит в zset , и если видит что какие-то задачи затаймаутились то перекладывает обратно в первую очередь.