Questa risposta riguarda maggiormente le considerazioni sulla scalabilità: se il numero di lavoratori può essere elevato e / o più di essi possono produrre registri ad alta velocità contemporaneamente.
Sì, è consigliabile utilizzare più file di registro contemporaneamente.
Il tentativo di combinare in un unico registro file di log da più lavoratori in tempo reale solleverà problemi:
- l'uso di meccanismi di blocco per prevenire la perdita di messaggi rallenterà i lavoratori
- i messaggi di registro possono apparire non ordinati nel file di registro combinato
- una funzione di registrazione centralizzata che combina i registri può essere sovraccaricata a causa della velocità di scrittura limitata, i messaggi andrebbero persi
Lo sharding dei file di log (utilizzando più file di log attivi contemporaneamente) è di per sé una tecnica utilizzata da alcuni provider di hosting che offre servizi di logging centralizzati scalabili ad alte prestazioni. Ad esempio, quando si esportano registri in file, la registrazione StackDriver di Google produce più file di registro. Dalle voci del registro in Google Cloud Storage :
Quando si esportano i log in un bucket di archiviazione cloud, Stackdriver Logging scrive un set di file nel bucket. I file sono organizzati in gerarchie di directory per tipo di registro e data. Il tipo di registro può essere un nome semplice come syslog
o un nome composto come
appengine.googleapis.com/request_log
. Se questi registri fossero memorizzati in un bucket denominato my-gcs-bucket
, le directory verrebbero denominate come nell'esempio seguente:
my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/
Un singolo bucket può contenere log di più tipi di log.
Le directory foglia ( DD/
) contengono più file, ognuno dei quali contiene le voci di registro esportate per un periodo di tempo specificato nel nome del file. I file sono suddivisi e i loro nomi terminano con un numero di frammento,
Sn
oppure An
(n = 0, 1, 2, ...). Ad esempio, qui ci sono due file che potrebbero essere memorizzati all'interno di directory
my-gcs-bucket/syslog/2015/01/13/
:
08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json
Questi due file insieme contengono le syslog
voci di registro per tutte le istanze durante l'ora che inizia 0800 UTC. Per ottenere tutte le voci del registro, è necessario leggere tutti i frammenti per ogni periodo di tempo, in questo caso, i frammenti di file 0 e 1. Il numero di frammenti di file scritti può cambiare per ogni periodo di tempo a seconda del volume delle voci di registro.
Tali servizi di registrazione ad alte prestazioni possono anche offrire alternative alla registrazione in file, pertanto la gestione dei file di registro può essere evitata del tutto se ciò è di interesse:
Infine, se l'unione di file di log in tempo reale non è un requisito con più file di log può aiutare con la gestione dei log offline:
- facile da progettare schemi di backup, compressione, archiviazione ed eventuale smaltimento progressivo dei log
- è possibile l'elaborazione parallela di più set di log (file di registro), riducendo / evitando gli effetti del collo di bottiglia
- nessuna suddivisione e riscrittura dei file necessarie