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çãode 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/catautostart=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 allphp_gearman_worker: started$ supervisorctl stop php_gearman_workerphp_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