Engranajero

Engranajero
Autor(es) original(es)Brad Fitzpatrick
Desarrollador(es)Brian Aker y Eric Day
Lanzamiento inicial8 de enero de 2009 ( 08-01-2009 )
Versión estable
1.1.19.1 / 18 de febrero de 2020 ; hace 4 años ( 18-02-2020 )
Repositoriogithub.com/gearman/gearmand/
Escrito enC++ , C , M4 , script de shell
Sistema operativoLinux , Windows (sin servidor), OpenVMS
Disponible enInglés
LicenciaLicencia BSD
Sitio webes: gearman.org

Gearman es un marco de aplicación de código abierto diseñado para distribuir tareas informáticas adecuadas a múltiples computadoras, de modo que las tareas grandes se puedan realizar más rápidamente. En algunos casos, el equilibrio de carga en lugar de la velocidad bruta puede ser el objetivo principal; un servidor web, por ejemplo, podría usar Gearman para enviar tareas para las que no está optimizado a otra computadora (que puede estar funcionando en una arquitectura diferente , usando otro sistema operativo o cargada con un lenguaje de computadora más adecuado para una operación en particular).

Fue escrito originalmente en Perl por Brad Fitzpatrick . Brian Aker y Eric Day reescribieron el marco en C.

Cómo funciona Gearman

La pila de aplicaciones Gearman.

Gearman asigna a cada computadora involucrada un rol como cliente , servidor de trabajos o trabajador. A una máquina trabajador se le pueden asignar múltiples instancias del rol trabajador, lo que permite que computadoras más potentes completen más partes de una tarea dada. 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 luego, nuevamente a través del servidor de trabajos, al cliente donde se originó la tarea. Gearman está conceptualmente relacionado con MapReduce ; Gearman maneja MapReduce al permitir que los nodos trabajadores asignen trabajo a otros trabajadores, con el trabajador original actuando como reductor.

Gearman realiza la fusión del 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 están enviando los mismos bloques o al usar el valor único enviado por el cliente, fusionará el trabajo para que solo se use un trabajador. Esto se hace específicamente para evitar problemas de rebaño en llamas que son comunes en los errores de acceso a caché.

Para mitigar el daño que se produciría si un servidor de trabajo (o su conexión de red) fallara, los clientes pueden configurarse con más de un servidor de trabajo asignado; si el primer servidor de trabajo asignado falla, se puede sustituir 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 utiliza el puerto TCP 4730. Anteriormente operaba en el puerto 7003, pero esto entraba en conflicto con el rango de puertos de AFS y el nuevo puerto (4730) fue asignado por IANA .

El nombre "Gearman" fue elegido como anagrama de "Gerente", "ya que envía trabajos a realizar, pero no hace nada útil por sí mismo". [1]

Características

Implementaciones

  • Gearmand, hasta la versión 1.1.12
  • Gearmand, a partir de la versión 1.1.13
  • servicio java gearman
  • Gearman::Servidor
  • Engranaje Tcl

Clientela

Actualmente existen bibliotecas de cliente para C, Perl, Node.js, Python, PHP, Ruby, Java, .NET, JMS, MySQL, PostgreSQL y Drizzle . [2]

  • http://danga.com/words/2007_06_usenix/usenix.pdf
  • http://gearman.org/documentation/
  • http://gearman.org/descargar/
  • 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

  1. ^ "Gearman [Servidor de trabajos Gearman]".
  2. ^ API de cliente y trabajador de la página de Gearman
Obtenido de "https://es.wikipedia.org/w/index.php?title=Gearman&oldid=1252939001"