В процессе ваяния собственного кода возник этот вопрос. В том паблике, что я находил таски считаются довольно топорно - если бот зашел на гейт, то отдается задание и записывается боту как выполненное и больше не отдается, но это же бред, так как возможны проблемы:
- соединение прервалось и задание скачалось ботом не полностью
- сервер откуда надо скачать недоступен или перегружен
- файл не запустился
и так далее. Из-за этого статистика будет неправдоподобной. Не будет ли лучше отдать задание, пометить его как pending для бота и ждать второго отстука с подтверждением о выполнении? С другой стороны это рождает проблемы, что довольно трудно точно слить лоады, так как между статусами pending и done задания для конкретного бота может пройти какоето, иногда довольно существенное, время, за которое задание может отдаться ещё нескольким ботам. С другой стороны можно считать общее pending+done и если какие-то pending будут не выполнены в течении некоторого времени - повторяем их для других ботов, которые ещё задания не выполняли, но тут опять минусы - тормозится выполнение задания. Как лучше?
И второй вопрос, возникший вследствии разбора чужих админок - многие кодеры выполненные задания для бота пишут в его запись в каком то поле (разделенные каким-то символом - task1|task2|...). Это как-то коряво на мой взгляд. Насколько помню отношения многие ко многим нормализуются через промежуточную таблицу, где каждая запись будет устанавливать соответствие между конкретным ботом и конкретным заданием. Вопрос в том, что не будет ли это менее производительнее чем первый вариант?
PS Сорри если форум не соответствует, долго думал куда лучше, решил, что все таки здесь - если надо, перенесите пожалуйста.
- соединение прервалось и задание скачалось ботом не полностью
- сервер откуда надо скачать недоступен или перегружен
- файл не запустился
и так далее. Из-за этого статистика будет неправдоподобной. Не будет ли лучше отдать задание, пометить его как pending для бота и ждать второго отстука с подтверждением о выполнении? С другой стороны это рождает проблемы, что довольно трудно точно слить лоады, так как между статусами pending и done задания для конкретного бота может пройти какоето, иногда довольно существенное, время, за которое задание может отдаться ещё нескольким ботам. С другой стороны можно считать общее pending+done и если какие-то pending будут не выполнены в течении некоторого времени - повторяем их для других ботов, которые ещё задания не выполняли, но тут опять минусы - тормозится выполнение задания. Как лучше?
И второй вопрос, возникший вследствии разбора чужих админок - многие кодеры выполненные задания для бота пишут в его запись в каком то поле (разделенные каким-то символом - task1|task2|...). Это как-то коряво на мой взгляд. Насколько помню отношения многие ко многим нормализуются через промежуточную таблицу, где каждая запись будет устанавливать соответствие между конкретным ботом и конкретным заданием. Вопрос в том, что не будет ли это менее производительнее чем первый вариант?
PS Сорри если форум не соответствует, долго думал куда лучше, решил, что все таки здесь - если надо, перенесите пожалуйста.