Gearman es un marco de aplicación de código abierto diseñado para distribuir las tareas informáticas adecuadas a varios equipos, de modo que las tareas grandes se puedan realizar con mayor rapidez. En algunos casos, el objetivo principal puede ser el equilibrio de carga en lugar de la velocidad bruta; un servidor web, por ejemplo, podría usar Gearman para enviar tareas para las que no está optimizado a otra computadora (que puede estar ejecutándose en una arquitectura diferente , usando otro sistema operativo o cargada con un lenguaje de computadora más adecuado para una operación en particular) .
Autor (es) original (es) | Brad Fitzpatrick |
---|---|
Desarrollador (es) | Brian Aker , Eric Day |
Versión inicial | 8 de enero de 2009 |
Lanzamiento estable | 1.1.19.1 / 18 de febrero de 2020 |
Repositorio | github |
Escrito en | C ++ , C , M4 , secuencia de comandos de Shell |
Sistema operativo | Linux , Windows (sin servidor) |
Disponible en | inglés |
Licencia | Licencia BSD |
Sitio web | gearman |
Fue escrito originalmente en Perl por Brad Fitzpatrick . Brian Aker y Eric Día reescribieron el marco en el C .
Cómo funciona Gearman
Gearman asigna a cada computadora involucrada un rol como cliente , servidor de trabajo o trabajador. A una máquina de trabajo se le pueden asignar varias instancias de la función de trabajador, lo que permite que las computadoras más potentes completen más partes de una tarea determinada. Las tareas se originan en un cliente, se transmiten desde el cliente al servidor de trabajos y se realizan en uno o más trabajadores. La salida de la tarea completada se devuelve, nuevamente a través del servidor de trabajos, al cliente donde se originó la tarea. Gearman está relacionado conceptualmente con MapReduce ; Gearman maneja MapReduce al permitir que los nodos de trabajo asignen el trabajo a otros trabajadores, con el trabajador original actuando como reductor.
Gearman realiza coalescencia en el trabajo enviado por un cliente. Si dos o más clientes solicitan que se complete el trabajo en el mismo cuerpo de trabajo, ya sea al ver que se envían los mismos bloques o al usar el valor único enviado por el cliente, fusionará el trabajo de modo que solo un trabajador sea usó. Hace esto específicamente para evitar problemas de rebaños que son comunes en las fallas de aciertos en caché.
Para mitigar el daño que se produciría si fallara un servidor de trabajo (o su conexión de red), los clientes pueden configurarse con más de un servidor de trabajo asignado; si falla el primer servidor de tareas asignado, se puede sustituir por otro de forma transparente.
Gearman implementa un protocolo que consta de paquetes binarios que contienen solicitudes y respuestas; este protocolo define la estructura de los mensajes que pasan entre las tres partes de una implementación de Gearman. De forma predeterminada, el protocolo Gearman usa el puerto TCP 4730. Anteriormente operaba en el puerto 7003, pero esto entraba en conflicto con el rango de puertos AFS y el nuevo puerto (4730) fue asignado por IANA .
Se eligió el nombre "Gearman" como anagrama de "Gerente", "ya que envía trabajos por hacer, pero no hace nada útil por sí mismo". [1]
Características
- Reintentos de trabajo
- Programación por turnos
- Fusión
- Almacenamiento de persistencia a través de:
- libmemcached
- libdrizzle
- SQLite
- MySQL
- Postgres
- tokiocabina
- Redis (inédito, actualmente en desarrollo)
- MongoDB (inédito, actualmente en desarrollo)
Implementaciones
Clientela
Actualmente existen bibliotecas cliente para C, Perl, Node.js, Python, PHP, Ruby, Java, .NET, JMS, MySQL, PostgreSQL y Drizzle . [2]
Software similar
enlaces externos
- http://danga.com/words/2007_06_usenix/usenix.pdf
- http://gearman.org/documentation/
- http://gearman.org/download/
- http://lists.danga.com/pipermail/gearman/2008-April/000076.html
- https://web.archive.org/web/20081209012837/http://krow.livejournal.com/628025.html
- GearmanBundle para proyectos Symfony2
Citas
- ^ http://gearman.org/#introduction
- ^ API de cliente y trabajador de la página Gearman