Introducir comunicación de proceso

¿Cuáles son las ventajas y desventajas de utilizar un archivo para la comunicación entre procesos? Permítanme dar algunos antecedentes del contexto en el que hago esta pregunta.

El problema es el clásico problema del consumidor productor con algunas limitaciones. Los productores forman un proceso cooperativo que se ejecuta en un grupo de máquinas y se comunican entre sí mediante transmisiones. Cada proceso tiene usuarios locales que conoce y también permite que los demás procesos los conozcan mediante el mecanismo de transmisión anterior. Hasta ahora, la información del estado que se está transmitiendo / compartiendo no se ha persistido, pero ahora debe serlo.

Este sistema ha estado funcionando en producción durante años y ahora es compatible con miles de usuarios y la gente está muy preocupada por agregar cualquier dependencia adicional a esto para agregar el soporte para la persistencia. La ruta que elegimos fue generar un nuevo hilo en el proceso existente que escribe el tráfico local en un archivo en el sistema de archivos que luego es leído por un nuevo proceso (llamémoslo consumidor) y persistió. Las ventajas que vemos con este enfoque son:

Obtenemos persistencia gratis. En caso de que el nuevo proceso tenga problemas, no estamos perdiendo el tráfico local mientras lo escribimos en el sistema de archivos. Siempre que el consumidor sepa dónde se quedó, cada vez que aparezca puede comenzar a procesar datos.No hay una curva de aprendizaje para usar las bibliotecas de colas, su antiguo y simple archivo de Unix IO.El mayor profesional es que no afectamos en absoluto el proceso actual del productor, excepto el nuevo hilo para la escritura de archivos.

Algunas de las preocupaciones con este enfoque son:

Bloqueo y contención de archivos y sus efectos en el rendimiento.Asegurarse de que los buffers de escritura se vacíen y el productor solo libere el bloqueo del archivo una vez que se haya escrito un evento completo en el archivo. El consumidor debe leer registros incompletos.

Pensamientos? ¿Es este enfoque ingenuo y deberíamos pagar el costo inicial del tiempo de aceleración para usar una biblioteca de colas persistentes estándar? El punto principal aquí es que queremos tener el mínimo impacto posible en el proceso actual y no agregarle dependencias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta