Funcionamiento de Gearman

Gearman provee un framework para distribuir aplicaciones entre diferentes máquinas o procesos. Permite realizar trabajo en paralelo, balanceo de carga y realizar llamadas de funciones entre diferentes lenguajes.

Estructura de German

German se compone de 3 partes: cliente, worker y job server. El funcionamiento es el siguiente:

1.- El cliente es el responsable de crear la job que quiere ejecutar y la envía al job server.

2.- El job server buscará un worker que pueda ejecutar un job y se lo envía.

3.- El worker ejecuta el job y envía la respuesta al client a través del job server.

Podemos utilizar Gearman mediante el cliente o utilizando una worker API. La API permite comunicarnos con el job server desde nuestras aplicaciones (PHP, Java, etc.).

Descarga

Lo podemos descargar desde la página oficial:

http://gearman.org/

Instalación

Para poder instalar Gearman tenemos que tener los siguientes paquetes instalados:

apt-get install uuid-dev
apt-get install libuuid1
apt-get install g++
apt-get install libevent-dev


Compilamos e instalamos Gearman:

./configure
make
make install


Una vez instalado podemos arrancar el servicio ejecutando:

gearmand -d

Si queremos arrancarlo en modo debug ejecutamos:

gearmand -vv
 INFO Starting up
INFO Listening on :::4730 (6)
INFO Creating wakeup pipe
INFO Creating IO thread wakeup pipe
INFO Adding event for listening socket (6)
INFO Adding event for wakeup pipe
INFO Entering main event loop


Con el job server instalado y funcionando, el siguiente paso es utilizar Gearman mediante el cliente (que ya viene instalado por defecto) o mediante la worker API (PHP, Java, etc.). A continuación haremos una prueba desde la línea de comandos.

Gearman Command Line Tool

Esta herramienta viene instalada por defecto con Gearman y provee el cliente y la worker interface. Podemos ver las opciones disponibles ejecutando:

gearman -H


Worker

Para levantar un worker ejecutamos:

gearman -w -f wc -- wc -l

Esto arrancará un worker, conectará al job server en localhost y registrará la función "wc". Por cada job que entre, Gearman va a procesarlo con el comando "wc -l".

Nota: gearman va a aceptar y esperar jobs de manera indefinida, si queremos para el proceso presionamos CTRL-C.

Cliente

Para crear un job ejecutamos:

gearman -f wc < /etc/passwd
26

También podríamos crear un job en segundo plano si especificamos el parámetro "-b".

Gearman PHP wrapper

Para poder instalar la API PHP ejecutamos:

pecl install gearman

Y luego lo añadimos al php.ini:

echo extension=gearman.so > /etc/php5/conf.d/gearman.ini