grommunio migliora le prestazioni della mailbox
È già inclusa nella versione comunitaria e sarà presto disponibile per tutti i clienti di grommunio: Grazie a una modifica del modo in cui grommunio gestisce i database delle caselle di posta elettronica, i team potranno beneficiare di prestazioni notevolmente migliorate.
Il problema è complesso, ma diffuso: In passato, poteva accadere che gli utenti sperimentassero tempi di attesa più lunghi quando molti clienti accedevano a singole caselle di posta elettronica contemporaneamente, ad esempio quando diversi utenti effettuavano contemporaneamente ricerche più lunghe su una casella di posta elettronica, ad esempio durante la preparazione di una riunione. Il motivo è il desiderio di coerenza dei dati: solo un cliente alla volta può accedere ai dati di una mailbox e apportare modifiche, dopodiché è il turno del cliente successivo, altrimenti c’è il rischio di incongruenze. Questo accesso “seriale” (cioè uno dopo l’altro) potrebbe richiedere molto tempo, soprattutto in caso di grandi insiemi di dati (e di numerosi client che vogliono accedere contemporaneamente). Il problema non è limitato a grommunio, ma si applica in linea di principio a tutti i servizi web e di posta: Se si vogliono dati consistenti, bisogna elaborare gli accessi uno dopo l’altro; se si vogliono prestazioni elevate, bisogna parallelizzare gli accessi. Ma esistono soluzioni intelligenti che possono aiutare a risolvere questo dilemma. grommunio ne ha implementata una, ottenendo così un notevole aumento delle prestazioni.
Scrittura e sola lettura: seriale o parallelo?
La soluzione al problema: si distingue tra accesso in scrittura e in sola lettura. L’accesso in sola lettura (ad esempio da parte di un client di posta che aggiorna una cartella condivisa) può essere consentito dal server in parallelo da più client contemporaneamente, ed è possibile anche il caching. Una “singola fonte di verità” è necessaria solo per la scrittura, cioè per l’accesso esclusivo da parte di un client, altrimenti potrebbero verificarsi dati incoerenti o un client potrebbe sovrascrivere le modifiche apportate da un altro.
L’implementazione di questo sistema richiede una certa conoscenza del funzionamento di grommunio (o di qualsiasi altro server di posta e database). In grommunio c’è un database centrale MySQL per i metadati e le cache per i metadati degli utenti, cioè una grande tabella con tutti i dati, tra cui, ad esempio, l’indice delle informazioni sugli utenti e l’assegnazione di dove si trova esattamente la casella di posta di un utente.
Esiste anche un database SQLite per ogni utente, che contiene i dati specifici dell’utente, comprese tutte le e-mail. Per il singolo utente è anche il componente centrale della casella di posta elettronica, ma può anche essere un collo di bottiglia se arrivano numerose richieste contemporaneamente. Tuttavia, il sistema è flessibile e si è dimostrato valido, può essere scalato in base alle esigenze ed è una parte importante delle elevate prestazioni della mailbox di grommunio.
Tuttavia, se un client esegue una ricerca in una mailbox più grande, ad esempio, questa viene bloccata per altre richieste fino a quando la richiesta di ricerca non è stata completamente elaborata. Sul lato server, questo è implementato tramite un Mutex, gli altri client devono aspettare e, nel peggiore dei casi, incorrere in un timeout, il che significa un messaggio di errore per l’utente.
Aumento delle prestazioni delle caselle di posta grazie a un server di gestione che prende decisioni in base alla situazione
Poiché il Mutex non ha senso per le query di ricerca o per accessi simili in sola lettura, dato che il database non viene modificato, gli sviluppatori di grommunio hanno implementato una soluzione che elimina questo collo di bottiglia. Gli sviluppatori hanno adattato a questo scopo il management server (exmdb). È complesso e ha già coordinato l’accesso con le sue oltre 120 funzioni. Per incorporare la parallelizzazione per l’accesso in sola lettura, gli sviluppatori hanno dovuto adattare oltre 18.000 righe di codice. Laddove in precedenza un Mutex per mailbox preveniva i conflitti, ma occasionalmente causava anche congestioni, il nuovo sistema gestisce senza un mutex “grande”, ispezionando invece ogni richiesta e decidendo su base situazionale se può essere parallelizzata in modo sicuro.
“Questo approccio si è rivelato significativamente più veloce e flessibile ed è apprezzabile per tutti i team che lavorano con le caselle di posta condivise, soprattutto nel lavoro quotidiano. Un esempio tipico è la preparazione congiunta di una riunione di team, in cui tutti i partecipanti vogliono aggiornarsi rapidamente nelle ore precedenti la riunione. Ma questo è solo un esempio, gli utenti ci raccontano con entusiasmo di altre situazioni che ora sono state notevolmente accelerate dal cambiamento. ”, afferma Michael Kromer, CTO di grommunio.
Scoprite altre caratteristiche di grommunio.