Un grupo de archivos nuevos con nombres de archivo únicos "aparece" regularmente 1 en un servidor. (Al igual que cientos de GB de datos nuevos al día, la solución debe ser escalable a terabytes. Cada archivo tiene varios megabytes de tamaño, hasta varias decenas de megabytes).
Hay varias máquinas que procesan esos archivos. (Decenas, la solución debería ser escalable a cientos). Debería ser posible agregar y eliminar fácilmente nuevas máquinas.
Hay servidores de almacenamiento de archivos de respaldo en los que cada archivo entrante debe copiarse para el almacenamiento de archivos. Los datos no deben perderse, todos los archivos entrantes deben terminar entregados en el servidor de almacenamiento de respaldo.
Cada archivo entrante debe enviarse a una sola máquina para su procesamiento, y debe copiarse en el servidor de almacenamiento de respaldo.
El servidor receptor no necesita almacenar archivos después de enviarlos en su camino.
Aconseje una solución sólida para distribuir los archivos de la manera descrita anteriormente. La solución no debe basarse en Java. Las soluciones unidireccionales son preferibles.
Los servidores están basados en Ubuntu, se encuentran en el mismo centro de datos. Todas las demás cosas se pueden adaptar a los requisitos de la solución.
1 Tenga en cuenta que omito intencionalmente información sobre la forma en que los archivos se transportan al sistema de archivos. La razón es que los archivos están siendo enviados por terceros por varios medios heredados diferentes hoy en día (curiosamente, a través de scp y ØMQ). Parece más fácil cortar la interfaz de clúster cruzado en el nivel del sistema de archivos, pero si una u otra solución realmente requerirá un transporte específico, los transportes heredados pueden actualizarse a ese.