Study of data replication process using Raft replication algorithm to maintain consistency in server cluster - Tokar, L.O.; Tsyliuryk, V.Y.; Solodilov, V.V. (Radiotekhnika, 2024)
The article considers the issues of ensuring availability and fault tolerance of a server cluster. The analysis of methods and technologies for increasing system reliability and improving performance, such as data replication, automatic switching between servers and fast recovery after failures, is carried out. It is indicated that the key element in modern distributed systems is replication-based clustering. The types of replication are analyzed. It is shown that during the operation of the system, there is a choice between the stability of the received data and the speed or scaling limitation. It is shown that the Raft algorithm is one of the reliable mechanisms with a high level of availability for achieving consensus and data management. An analysis of the literature on the use of the Raft consensus algorithm is carried out. The replication process using the Raft algorithm is analyzed. It is substantiated that it is possible to ensure strong consistency and high availability of the cluster using the management and control mechanism on the Kubernetes platform while maintaining cluster configuration synchronization. The Raft consensus process is studied using the M/M/s QS model. The exponential distribution of time between client requests and servicing with a certain number of servers is considered. The program code for the mathematical model in Python has been developed. Modeling has been performed in the Visual code environment in Python. The following parameters have been studied: the number of servers that operate at a certain average speed, the expected time of a client request in the system, and the probability of message delay. It has been proven that as the arrival speed increases, the expected time of a client request increases. The analysis provides an understanding of how the Raft algorithm works in different contexts and is applicable to optimizing system design processes.