Tarefa dada é tarefa cumprida.


Gerenciando tarefas com PHP, Gearman e Supervisor.

Quem sou eu?


  • Hugo Leonardo Costa e Silva

  • Apaixonado por desenvolvimento de software, DevOps e novas tecnologias

  • Trabalho com desenvolvimento de software a mais quatro anos

  • Trabalho com PHP, Python e Javascript

  • Entusiasta e autodidata

Gearman

Definição





O Gearman é um framework de aplicação genérica criado pela Danga Interactive
desenvolvedores do Memcache e MogileFS, para distribuir jobs a serem executados em outras maquinas ou processos apropriados.

Ele permite que você execute tarefas em paralelo, com balanceamento de carga entre processos, e também a chamada de funções escritas em outras linguagens . 

Definição


Ele pode ser usado em uma variedade de aplicações, desde web sites de alta disponibilidade até o transporte de eventos de replicação 
de banco de dados.

Em outras palavras, é o sistema nervoso no qual o processamento distribuído se comunica.

Vantagens

    • OpenSource: O Gearman tem uma comunidade de desenvolvedores muito ativa.

    • Multi-language: Existe uma gama de interfaces para permitir o desenvolvimento em várias linguagens
      (C, PHP, Python, PERL, Ruby ...). Permite a implementação dos clientes em uma liguagem e os workers em outra.

    • Rápido: O Gearman tem um protocolo e interface simples com servidor escrito em C / C + + para minimizar a sobrecarga da aplicação.

    • Síncrono ou assíncrono: A terefas podem ser executadas dessas duas formas.

Conceitos

    • Tarefa: É qualquer requisição ou comunicação entre o cliente e a job.

    • Job: É tudo aquilo que o worker executa, continuamente à espera do job server lhe dizer quando começar e informar os argumentos.

    • Cliente: Cria uma tarefa a ser executada e a envia ao job server.

    • Worker: Registra-se em um job server aguardando por jobs.

    • Job Server: Recebe os jobs e direciona para os workers.

Arquitetura


Fluxo de Trabalho


Instalação - (Job Server)




sudo add-apt-repository ppa:gearman-developers/ppa

sudo apt-get update

sudo apt-get install libgearman-dev gearman-job-server

Instalação - (Extensão PHP)




sudo apt-get install php5-dev php-pear

sudo pecl install "channel://pecl.php.net/gearman-1.1.1"

Ativando a extensão 

(Ubuntu)

sudo echo "extension=gearman.so" > /etc/php5/mods-available/gearman.ini


E depois....


php5enmod gearman

Gearman Worker (PHP)


Gearman Client (PHP)




  Supervisor


Definição


Supervisor é um sistema cliente / servidor que permite que seus usuários possam monitorar e controlar um número de processos em sistemas operacionais UNIX-like.


Isso é possível pois, o Supervisor é um serviço que inicia todos os demais como subprocessos. Desse modo, é capaz de monitorar o estado dos mesmos, e numa eventual “queda”, reiniciar um determinado processo/serviço imediatamente.

Componentes do Supervisor


  • 'supervisord' é o serviço principal e executa
    programas arbitrários como processos filho.


  • 'supervisorctl' é um software de cliente que permite aos usuários controlar estado do supervisord e exibir logs.


  • Interface Web: iniciar / parar / reiniciar / visualizar logs.


  • Interface XML-RPC: comandos arbitrários para gerenciamento dos processos.

Arquivo de configuração do Supervisor



[inet_http_server]
port=127.0.0.1:9001
[supervisord]
logfile=/tmp/supervisord.log
[program:cat]
command=/bin/cat
autostart=True
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = ... 

 

Arquivo de configuração do Supervisor


Instalação




pip install supervisor

Ou 

easy_install supervisor

Comandos de gerenciamento


$ supervisorctl start all
php_gearman_worker: started


$ supervisorctl stop php_gearman_worker
php_gearman_worker: stopped

E isso é tudo pessoal



Twitter: @hugoleodev

Facebook: Hugo Leonardo C. Silva

E-mail: hugoleodev@gmail.com

Github: hugoleodev

phprio-talks-2013

By Hugo Leonardo C. Silva

phprio-talks-2013

Tarefa dada é tarefa cumprida. Gerenciando tarefas com PHP, Gearman e Supervisor

  • 2,810