Title: | Explorando paralelismo e desacoplamento no desenvolvimento de um serviço de log para aplicações utilizando replicação de máquina de estados |
Author: | Scharf, João Lucas |
Abstract: |
State Machine Replication (SMR) é uma técnica amplamente utilizada no desenvolvimento de aplicações tolerantes a falhas. Com esta técnica, um conjunto de réplicas ativas recebe as mesmas requisições dos clientes e as executa em uma ordem total, garantindo consistência forte. Mecanismos de durabilidade, como logs, são combinados a esta técnica de replicação, de modo a permitir que réplicas falhas sejam recuperadas ou novas réplicas sejam inseridas ao sistema, desde que estas réplicas obtenham as requisições faltantes de um log. Este mecanismo de logs pode ser implementado pelas próprias réplicas, que registram as requisições recebidas e executadas. Alternativamente, algumas implementações de SMR podem obter o logs diretamente do protocolo subjacente utilizado para a entrega de requisições às réplicas. Por exemplo, implementações de protocolos de difusão atômica ou consenso podem manter o logs das requisições entregues às réplicas. No entanto, mecanismos de durabilidade ocasionam um sobrecusto ao sistema, especialmente devido à intensivas operações de Entrada e Saída (E/S). O processo de geração e armazenamento de logs acarreta em aumento de latência, queda na vazão, podendo ainda adicionar custos financeiros em ambientes com provisionamento de recursos e pagamento por uso. O presente trabalho propõe uma técnica para mitigar os custos ocasionados por mecanismos de persistência de logs em SMR. Para isso, as operações de persistência são desassociadas das réplicas da aplicação e do protocolo de comunicação utilizado. Novos processos, chamados de loggers, são adicionados ao sistema. Para permitir um uso eficiente do serviço de logs, o serviço proposto pode ser compartilhado por réplicas de diferentes aplicações, sem prejuízos na vazão ou latência. Para isso, foram combinados modelos de SMR paralelo e escalável. Foram realizados experimentos observando o uso de réplicas de aplicação com uso intensivo de E/S ou memória. Além disso, investigou-se a viabilidade em compartilhar o serviço de logs entre diferentes SMRs. Observou-se um aumento de vazão de até 70% em cenários de uso intensivo de E/S e de até 60% nos cenários de uso intensivo de memória em comparação com cenários onde a persistência do logs é feita pelas réplicas do SMR. Além disso, a geração de logs desacoplado e distribuído possibilitou a reutilização do mesmo mecanismo de logs para diferentes SMRs, resultando em uma redução de até 55% nos custos financeiros, quando utilizado até 10 aplicações implementados como SMRs independentes. Abstract: State Machine Replication (SMR) is a widely used technique in the development of fault- tolerant applications. With this technique, a set of active replicas receives the same requests from clients and executes them in a total order, ensuring strong consistency. Durability mechanisms, such as logs, are combined with this replication technique in order to allow failed replicas to be recovered or new replicas to be inserted into the system, provided that these replicas obtain the missing requests from a log. This logging mechanism can be implemented by the replicas themselves, which record the received and executed requests. Alternatively, some SMR implementations may obtain logs directly from the underlying protocol used for delivering requests to the replicas. For example, implementations of atomic broadcast or consensus protocols may maintain logs of the requests delivered to the replicas. However, durability mechanisms incur an overhead on the system, especially due to intensive Input/Output (I/O) operations. The process of generating and storing logs leads to increased latency, decreased throughput, and may also add financial costs in environments with resource provisioning and pay-per-use models. This paper proposes a technique to mitigate the costs incurred by log persistence mechanisms in SMR. For this purpose, persistence operations are decoupled from the application replicas and the communication protocol used. New processes, called loggers, are added to the system. To enable efficient use of the logging service, the proposed service can be shared by replicas from different applications, without compromising throughput or latency. For this, parallel and scalable SMR models were combined. Experiments were conducted observing the use of application replicas with intensive I/O or memory usage. Additionally, the feasibility of sharing the logging service among different SMRs was investigated. An increase in throughput of up to 70% was observed in scenarios of intensive I/O usage and up to 60% in scenarios of intensive memory usage compared to scenarios where log persistence is performed by the SMR replicas. Furthermore, the use of decoupled and distributed logging enabled the reuse of the same logging mechanism for different SMRs, resulting in a reduction of up to 55% in financial costs when used with up to 10 applications implemented as independent SMRs |
Description: | Dissertação (mestrado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Ciência da Computação, Florianópolis, 2024. |
URI: | https://repositorio.ufsc.br/handle/123456789/261372 |
Date: | 2024 |
Files | Size | Format | View |
---|---|---|---|
PGCC1276-D.pdf | 1.711Mb |
View/ |