Gearman - Gearman

Gearman
Gearman80 title.gif
Autor (es) original (is) Brad Fitzpatrick
Desenvolvedor (s) Brian Aker , Eric Day
lançamento inicial 8 de janeiro de 2009 ( 08-01-2009 )
Versão estável
1.1.19.1 / 18 de fevereiro de 2020 ; 18 meses atrás ( 2020-02-18 )
Repositório github .com / gearman / gearmand /
Escrito em C ++ , C , M4 , script Shell
Sistema operacional Linux , Windows (sem servidor), OpenVMS
Disponível em inglês
Licença Licença BSD
Local na rede Internet gearman .org

Gearman é uma estrutura de aplicativo de código aberto projetada para distribuir tarefas de computador apropriadas para vários computadores, para que tarefas grandes possam ser realizadas mais rapidamente. Em alguns casos, o balanceamento de carga , em vez da velocidade bruta, pode ser o objetivo principal; um servidor da Web, por exemplo, pode usar o Gearman para enviar tarefas para as quais não está otimizado para outro computador (que pode estar sendo executado em uma arquitetura diferente , usando outro sistema operacional ou carregado com uma linguagem de computador mais adequada para uma operação específica) .

Foi originalmente escrito em Perl por Brad Fitzpatrick . Brian Aker e Dia Eric reescreveu o quadro em C .

Como funciona o Gearman

A pilha de aplicativos Gearman.

O Gearman atribui a cada computador envolvido uma função como cliente , servidor de trabalho ou trabalhador. Uma máquina de trabalho pode ser atribuída a várias instâncias da função de trabalho, o que permite que computadores mais poderosos concluam mais partes de uma determinada tarefa. As tarefas se originam em um cliente, são transmitidas do cliente para o servidor de tarefas e executadas em um ou mais funcionários. A saída da tarefa concluída é então retornada, novamente por meio do servidor de trabalho, para o cliente onde a tarefa foi originada. Gearman está conceitualmente relacionado ao MapReduce ; Gearman lida com MapReduce permitindo que os nós de trabalho mapeiem o trabalho para outros trabalhadores, com o trabalhador original atuando como o redutor.

O Gearman realiza a coalescência no trabalho enviado por um cliente. Se dois ou mais clientes solicitarem que o trabalho seja concluído no mesmo corpo de trabalho, seja vendo que os mesmos blocos estão sendo enviados ou usando o valor único enviado pelo cliente, ele unirá o trabalho para que apenas um trabalhador seja usado. Ele faz isso especificamente para evitar problemas de rebanho trovejantes que são comuns a falhas de acerto de cache.

Para mitigar o dano que seria feito se um servidor de trabalho (ou sua conexão de rede) falhasse, os clientes podem ser configurados com mais de um servidor de trabalho atribuído; se o primeiro servidor de trabalho atribuído falhar, outro pode ser substituído de forma transparente.

Gearman implementa um protocolo que consiste em pacotes binários contendo solicitações e respostas; este protocolo define a estrutura das mensagens que passam entre as três partes de uma implementação do Gearman. Por padrão, o protocolo Gearman usa a porta TCP 4730. Anteriormente, ele operava na porta 7003, mas isso entrava em conflito com o intervalo de portas AFS e a nova porta (4730) foi atribuída pela IANA .

O nome "Gearman" foi escolhido como anagrama para "Manager", "uma vez que despacha trabalhos a serem executados, mas não faz nada de útil por si mesmo."

Recursos

  • Novas tentativas de trabalho
  • Programação round robin
  • Coalescência
  • Armazenamento de persistência por meio de:

Implementações

Clientes

Atualmente, existem bibliotecas de cliente para C, Perl, Node.js, Python, PHP, Ruby, Java, .NET, JMS, MySQL, PostgreSQL e Drizzle .

Software semelhante

links externos

Citações