Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Протокол Gearman

Gearman.org - это такой task queue server, один из вариантов request-response. Идея в том что есть "клиенты", раздающие работу, и "воркеры", выполняющие работу. Клиенты отправляют реквесты, получают респонсы. Воркеры - наоборот. Сервер форвардит.

Отличие от других реквест-респонсов в том, что если воркер умер - то реквест перешедуливается на другой или на этот же, после того как он рестартует. Если клиент умер - обычная реакция, все его реквесты и респонсы умирают. Короче, способ обеспечивать обработку реквестов в условиях падающих воркеров.

Протокол между гирманом и воркером состоит из 8 сообщений, 4 из которых можно для целей дискуссии проигнорировать, так что остается 4:

<- GRAB_JOB
-> JOB_ASSIGN
<- WORK_COMPLETE
-> NO_JOB

В случае, если воркер у нас однопоточный, наивный обмен описывается грамматикой

GRAB_JOB (JOB_ASSIGN WORK_COMPLETE GRAB_JOB | NO_JOB GRAB_JOB) *

Однако, его можно "улучшить":

GRAB_JOB (JOB_ASSIGN GRAB_JOB WORK_COMPLETE | NO_JOB GRAB_JOB) *

Непонятно, как вообще формализовывать понятие "хорошести".
Tags: fp, programming
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 18 comments