2010-03-06 5 views
12

Estamos desarrollando una aplicación web en la que con aproximadamente el 50% de las solicitudes de escritura terminamos empujando datos a múltiples almacenes de datos e insertando y actualizando una cantidad significativa de registros en esos almacenes de datos . Para mejorar el tiempo de respuesta, queremos procesar dichas solicitudes de forma asincrónica en segundo plano.Resque o Gearman: elegir la herramienta adecuada para trabajos en segundo plano

Nuestra aplicación web se está escribiendo en Ruby on Rails.

Dos soluciones a las que me inclino son Resque y Gearman.

Resque: Más información aquí: http://github.com/blog/542-introducing-resque Resque parece muy adecuado para Ruby, y está específicamente destinado para el procesamiento de trabajos en segundo plano. "Los trabajos en segundo plano pueden ser cualquier clase o módulo de Ruby que responda. Sus clases existentes se pueden convertir fácilmente a trabajos en segundo plano o puede crear nuevas clases específicamente para hacer el trabajo".

Gearman: No está específicamente destinado solo para trabajos en segundo plano para el procesamiento asíncrono, pero eso es algo que definitivamente puede hacer. Aparentemente más robusto, o eso parece. Otra ventaja de Gearman es que, aunque su código de cliente podría estar en Ruby, el código de trabajador podría estar en, digamos, PHP. Aunque ahora mismo somos completamente la aplicación Ruby on Rails, quién sabe si en el futuro podríamos usar PHP u otra cosa dependiendo del trabajo que tenga entre manos.

¿Qué recomendarías? ¿Tienes experiencia con cualquiera de los dos? ¿Qué desafíos de producción en la vida real debo tener en cuenta al elegir entre los dos? ¿Y estoy incluso comparando manzana con manzana aquí?

+2

No estoy de acuerdo con el estado cerrado. La Q está bien formateada y con detalles suficientes para proporcionar una respuesta adecuada. Los debates son bienvenidos y deberían proporcionar más de una vista a la solución. – michaelbn

Respuesta

2

Tengo cierta experiencia con Gearman cuando estaba buscando un mecanismo de horquilla distribuida que pudiera ofrecer una distribución de carga de trabajo para asincrónico. procesamiento en un entorno agrupado.

Puedo decir que se trabaja en un caso "simulado" donde el procesamiento asíncrono se envió a 2 máquinas (2 trabajadores en cada máquina = 4 trabajadores). No en un escenario real (lo que sea que eso te diga). El escenario real se implementará cuando las "simulaciones" brinden información útil.

El mecanismo que va a elegir es solo un factor en la distribución de la carga de trabajo, así que asegúrese de no tener datos corruptos o no válidos cuando los "trabajadores" distribuidos que trabajan en paralelo comiencen a escribir en las áreas de almacenamiento de datos .

Sugeriría tomar el enfoque de "simulación" que hice y hacer sus pruebas antes de decidir cuál usar.

respetos,

+0

Gracias Andreas. Estoy de acuerdo, trabajaríamos en el entorno dev/simulation por un tiempo antes de implementarlo en producción. – Nishith

Cuestiones relacionadas