Esta respuesta es más acerca de las consideraciones de escalabilidad: si el número de trabajadores puede ser alto y / o varios de ellos pueden producir registros a alta velocidad al mismo tiempo.
Sí, usar múltiples archivos de registro simultáneamente es una buena práctica.
Intentar combinar en un solo archivo de registro los registros de varios trabajadores en tiempo real generará problemas:
- El uso de mecanismos de bloqueo para evitar la pérdida de mensajes ralentizará a los trabajadores
- los mensajes de registro pueden aparecer fuera de servicio en el archivo de registro combinado
- una instalación de registro centralizada que combina los registros se puede sobrecargar debido a la velocidad de escritura limitada, los mensajes se perderían
Fragmentar archivos de registro (utilizando múltiples archivos de registro activos al mismo tiempo) es en sí una técnica utilizada por algunos proveedores de alojamiento que ofrecen servicios de registro centralizados escalables y de alto rendimiento. Por ejemplo, al exportar registros a archivos, el Registro StackDriver de Google produce múltiples archivos de registro fragmentados. Desde las entradas de registro en Google Cloud Storage :
Cuando exporta registros a un depósito de Cloud Storage, Stackdriver Logging escribe un conjunto de archivos en el depósito. Los archivos están organizados en jerarquías de directorios por tipo de registro y fecha. El tipo de registro puede ser un nombre simple como syslog
o un nombre compuesto como
appengine.googleapis.com/request_log
. Si estos registros se almacenaron en un depósito denominado my-gcs-bucket
, los directorios se nombrarían como en el siguiente ejemplo:
my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/
Un único depósito puede contener registros de varios tipos de registro.
Los directorios de hoja ( DD/
) contienen varios archivos, cada uno de los cuales contiene las entradas de registro exportadas durante un período de tiempo especificado en el nombre del archivo. Los archivos están fragmentados y sus nombres terminan en un número de fragmento,
Sn
o An
(n = 0, 1, 2, ...). Por ejemplo, aquí hay dos archivos que pueden almacenarse dentro de directory
my-gcs-bucket/syslog/2015/01/13/
:
08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json
Estos dos archivos juntos contienen las syslog
entradas de registro para todas las instancias durante la hora que comienza a las 0800 UTC. Para obtener todas las entradas de registro, debe leer todos los fragmentos de cada período de tiempo; en este caso, fragmentos de archivo 0 y 1. El número de fragmentos de archivo escritos puede cambiar para cada período de tiempo dependiendo del volumen de las entradas de registro.
Dichos servicios de registro de alto rendimiento también pueden ofrecer alternativas al registro en archivos, por lo tanto, la administración de archivos de registro se puede evitar por completo si eso es de interés:
Finalmente, si la fusión de archivos de registro en tiempo real no es un requisito, tener varios archivos de registro puede ayudar con la administración de registros sin conexión:
- fácil de diseñar esquemas de copia de seguridad progresiva, compresión, archivo y eliminación final
- Es posible el procesamiento paralelo de múltiples conjuntos de registros (archivos de registro), lo que reduce / evita los efectos de cuello de botella
- no es necesario dividir ni reescribir archivos