Joining Parallel and Partitioned State Machine Replication Models for Enhanced Shared Logging Performance
Resumo
State Machine Replication (SMR) is a widely used approach for implementing highly available fault-tolerant services with critical data and strong consistency requirements. Although being a rather simple execution model from a design perspective, implementing durability strategies such as logging and state recovering on SMR can present non-trivial challenges, as these tasks are closely tied to the application’s performance. This paper proposes a shared and decoupled logging service designed for SMR applications. To enhance scalability and throughput, the logging service takes advantage of the Parallel State Machine Replication and Scalable State Machine Replication. These approaches enable parallel execution of non-conflicting requests and partitioning of requests among different replicas, thereby improving the application’s performance while maintaining consistency guarantees. The logging service introduces lightweight processes called loggers, which are added to the set of active replicas in the system. The loggers are responsible for managing and retrieving application logs. By implementing parallel logging of independent requests and employing I/O optimizations such as parallel I/O, the logging service reduces overhead on replicas and improve system resource utilization when serving multiple applications simultaneously. The evaluation compared application performance with and without the shared logging service. Workloads including CPU and I/O intensive scenarios were used to represent different application types. Results demonstrated improved system performance with shared logging. In I/O intensive workloads, the decoupled logging approach showed an approximately 60% increase in throughput, maintaining consistent latency. Scalability tests confirmed the logging service’s ability to handle more applications without compromising performance. Overall, this paper presents a novel approach to logging in SMR applications, offering improved scalability, throughput, and resource utilization.