o grommunio melhora o desempenho da caixa de correio
Ele já está incluído na versão da comunidade e em breve será empacotado e disponibilizado para todos os clientes da grommunio: Graças a uma alteração na forma como o grommunio lida com bancos de dados de caixas de correio de e-mail, as equipes se beneficiarão de um desempenho significativamente melhor das caixas de correio.
O problema é complexo, mas generalizado: No passado, podia acontecer de os usuários experimentarem tempos de espera mais longos quando muitos clientes acessavam caixas de correio individuais ao mesmo tempo, por exemplo, quando vários usuários realizavam consultas de pesquisa mais longas em uma caixa de correio ao mesmo tempo, como na preparação para uma reunião. O motivo disso é o desejo de manter a consistência dos dados: somente um cliente por vez pode acessar os dados em uma caixa de correio e fazer alterações, depois disso é a vez do próximo cliente - caso contrário, há o risco de inconsistências. Esse acesso “serial” (ou seja, um após o outro) pode levar muito tempo, especialmente com conjuntos de dados maiores (e vários clientes querendo acessar ao mesmo tempo). O problema não se limita ao grommunio, mas se aplica, em princípio, a todos os serviços da Web e de correio eletrônico: Se você quiser dados consistentes, terá que processar os acessos um após o outro; se quiser alto desempenho, terá que paralelizar os acessos. Mas existem soluções inteligentes que podem ajudar a resolver esse dilema. A grommunio implementou uma delas e, assim, obteve um grande aumento no desempenho.
Escrita e somente leitura: serial ou paralelo?
A solução para o problema: é feita uma distinção entre acesso de gravação e acesso somente de leitura. O acesso somente para leitura (por exemplo, por um cliente de e-mail que atualiza uma pasta compartilhada) pode ser permitido pelo servidor em paralelo por vários clientes ao mesmo tempo, e o armazenamento em cache também é possível. Uma “única fonte de verdade” só é necessária para gravação, ou seja, acesso exclusivo por um cliente - caso contrário, poderão ocorrer dados inconsistentes ou um cliente poderá substituir as alterações feitas por outro.
Para implementar isso tecnicamente, é necessário entender um pouco como funciona o grommunio (ou qualquer outro servidor de correio eletrônico e banco de dados). No grommunio, há um banco de dados MySQL central para os metadados e caches para os metadados do usuário, ou seja, uma tabela grande com todos os dados, incluindo, por exemplo, o índice de informações sobre os usuários e a atribuição de onde exatamente a caixa de correio de um usuário pode ser encontrada.
Há também um banco de dados SQLite para cada usuário, que contém os dados específicos do usuário, inclusive todos os e-mails. Para o usuário individual, ele também é o componente central da caixa de correio, mas também pode ser um gargalo se houver várias solicitações ao mesmo tempo. No entanto, o sistema é flexível e comprovado, pode ser dimensionado conforme necessário e é uma parte importante do alto desempenho da caixa de correio da grommunio.
No entanto, se um cliente realizar uma pesquisa em uma caixa de correio maior, por exemplo, ela será bloqueada para outras solicitações até que a solicitação de pesquisa tenha sido totalmente processada. No lado do servidor, isso é implementado por meio de um Mutex, outros clientes precisam esperar e, na pior das hipóteses, chegar a um tempo limite, o que significa uma mensagem de erro para o usuário.
Aumento do desempenho da caixa de correio graças a um servidor de gerenciamento que toma decisões situacionais
Como o Mutex não faz sentido para consultas de pesquisa ou acessos similares somente de leitura, já que o banco de dados não é alterado, os desenvolvedores do grommunio implementaram uma solução que elimina esse gargalo. Os desenvolvedores adaptaram o servidor de gerenciamento (exmdb) para essa finalidade. Ele é complexo e já coordenou o acesso com suas mais de 120 funções. Para incorporar a paralelização para acesso somente leitura, os desenvolvedores tiveram que adaptar mais de 18.000 linhas de código. Enquanto anteriormente um Mutex por caixa de correio evitava conflitos, mas também ocasionalmente causava congestionamento, o novo sistema gerencia sem um mutex “grande”, inspecionando cada solicitação e decidindo, com base na situação, se ela pode ser paralelizada com segurança.
“Essa abordagem provou ser significativamente mais rápida, mais flexível e é perceptível para todas as equipes que trabalham com caixas de correio compartilhadas, especialmente no trabalho diário. Um exemplo típico é a preparação conjunta de uma reunião de equipe, em que todos os participantes querem se atualizar rapidamente nas horas que antecedem a reunião. Mas esse é apenas um exemplo, os usuários nos contam com entusiasmo sobre outras situações que agora foram significativamente aceleradas pela mudança. ”, diz o CTO da grommunio, Michael Kromer.
Saiba mais sobre outros recursos da grommunio.