Как gearman различает две работы?
В нашем сценарии мы запускаем несколько серверов Gearman и используем несколько потоков для назначения рабочих мест. В приведенной ниже функции API unique
Параметру присваивается значение по умолчанию NULL
,
void *gearman_client_do(gearman_client_st *client, const char *function_name, const char *unique, const void *workload, size_t workload_size, size_t *result_size, gearman_return_t *ret_ptr);
Итак, мы заметили, что если два задания распределяются одновременно, то серверы Gearman испортят эти два. Какая бы работа не была завершена раньше, она будет возвращена в результате обеих работ.
Это правда, что зубчатый будет использовать метку времени, чтобы различать различные рабочие места, если unique
в gearman_client_do()
назначен на NULL
?
РЕДАКТИРОВАТЬ: тип gearman_client_do
1 ответ
Уникальный идентификатор может использоваться сервером для уменьшения длины очереди. Если задание с таким же уникальным идентификатором уже отправлено, сервер может прикрепить этот запрос к уже существующему заданию. Это включает в себя уже выполняемые задания, и в этом случае не фоновые задания будут отправлены с тем же результатом, что и фоновые задания. Это обычно известно как "объединение".
протокол протокола gearman для обработки уникальных идентификаторов.
Правда ли, что gearman будет использовать метку времени для различения различных заданий, если уникальное значение в gearman_client_do() присвоено NULL?
Отметка времени - это вопрос порядка работ в очереди. gearmand
будет выполнять каждую работу без уникального идентификатора. Смотрите также реализацию gearman_client_do