Как gearman различает две работы? - PullRequest
0 голосов
/ 09 июня 2018

В нашем сценарии мы запускаем несколько серверов 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 Ответ

0 голосов
/ 09 июня 2018

Уникальный идентификатор может использоваться сервером для уменьшения длины очереди.Если задание с таким же уникальным идентификатором уже отправлено, сервер может прикрепить этот запрос к уже существующему заданию.Это включает в себя уже выполняемые задания, и в этом случае не фоновые задания будут отправлены с тем же результатом, что и фоновые задания.Обычно это называется «объединением».

протокол gearman описание обработки уникального идентификатора.

Это правда, что gearman будет использоватьотметка времени для различения разных заданий, если уникальное значение в gearman_client_do () присвоено NULL?

Отметка времени имеет значение для порядка заданий в очереди.gearmand будет выполнять каждую работу без уникального идентификатора.Смотрите также реализация gearman_client_do

...