<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Stateful cluster leader failover models and methods based on Replica State Discovery Protocol</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Serhii</forename><surname>Toliupa</surname></persName>
							<email>tolupa@i.ua</email>
							<affiliation key="aff0">
								<orgName type="institution">Taras Shevchenko National University of Kyiv</orgName>
								<address>
									<addrLine>60 Volodymyrska St</addrLine>
									<postCode>01033</postCode>
									<settlement>Kyiv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Maksym</forename><surname>Kotov</surname></persName>
							<email>maksym_kotov@ukr.net</email>
							<affiliation key="aff0">
								<orgName type="institution">Taras Shevchenko National University of Kyiv</orgName>
								<address>
									<addrLine>60 Volodymyrska St</addrLine>
									<postCode>01033</postCode>
									<settlement>Kyiv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Serhii</forename><surname>Buchyk</surname></persName>
							<email>buchyk@knu.ua</email>
							<affiliation key="aff0">
								<orgName type="institution">Taras Shevchenko National University of Kyiv</orgName>
								<address>
									<addrLine>60 Volodymyrska St</addrLine>
									<postCode>01033</postCode>
									<settlement>Kyiv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Juliy</forename><surname>Boiko</surname></persName>
							<email>boiko_julius@ukr.net</email>
						</author>
						<author>
							<persName><forename type="first">Serhii</forename><surname>Shtanenko</surname></persName>
							<affiliation key="aff1">
								<orgName type="department">Military Institute of Telecommunication and Information Technologies named after the Heroes of Kruty</orgName>
								<address>
									<addrLine>Street of Princes of Ostrozki 45/1</addrLine>
									<postCode>01011</postCode>
									<settlement>Kyiv</settlement>
									<country key="UA">Ukraine</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Stateful cluster leader failover models and methods based on Replica State Discovery Protocol</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">F221DD9B458B49BE797008A4D9CC9148</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T16:49+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>distributed computing</term>
					<term>Decentralized Coordination Networks (DCNs)</term>
					<term>Replica State Discovery Protocol (RSDP)</term>
					<term>cluster state management models</term>
					<term>cluster failover management models</term>
					<term>leader election protocol based on RSDP and deterministic operations.1</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>High availability is a cornerstone of fault tolerance in production clusters. The following article delves into the novel methods and models to achieve rapid cluster leader failover based on the Replica State Discovery Protocol (RSDP). Firstly, RSDP is described and evaluated as a method of achieving consensus within homogenous multiagent distributed systems. This paper provides a novel mathematical model that describes the internal procedure of the said protocol. Additionally, diagrams and algorithm steps are provided to further simplify integration of the RSDP into modern Decentralized Coordination Networks (DCNs). Secondly, a new state reducer is developed that allows to perform a synchronized leader election process. Its mathematical model and code implementation written in JavaScript are provided and comply with an established extension interface described within the confines of Evaluation and implications of the newly created leader election protocol are provided to further expand the horizons of DCN coordination. Lastly, this article explores the practical implications of the mentioned state reducer in the context of the stateful cluster leader failover. Three different approaches and models based on the proposed consensus algorithm to mitigate spontaneous critical events are modeled and assessed. Based on failure probability, failover duration, and communication overhead mathematical models, the said approaches were compared, and recommendations for their application were provided. Overall, this article is aimed at further development of RSDP and describes novel approaches towards relevant coordination issues inside the clusters with high demands for availability and fault tolerance.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>Being tasked with a complex design of a modern distributed system leads inevitably to the myriads of convoluted architecture decisions towards achieving high availability and fault tolerance. Throughout the entire history of computer science and Internet Technology industry, the cornerstone problem is threefold: consistency, availability, and partition tolerance, renown also as CAP theorem <ref type="bibr" target="#b0">[1]</ref><ref type="bibr" target="#b1">[2]</ref><ref type="bibr" target="#b2">[3]</ref><ref type="bibr" target="#b3">[4]</ref><ref type="bibr" target="#b4">[5]</ref><ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref>.</p><p>The theorem in its basis promotes an assumption that service could only be two of three: either consistent and available, available and tolerant to partitioning, or consistent and tolerant to partitioning <ref type="bibr" target="#b0">[1]</ref><ref type="bibr" target="#b1">[2]</ref><ref type="bibr" target="#b2">[3]</ref><ref type="bibr" target="#b3">[4]</ref><ref type="bibr" target="#b4">[5]</ref><ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref>. Though it has to be stated that business-centric approaches produced variants of the said theorem that put resource utilization, complexity, and service quality instead while going through the decision-making process.</p><p>Nevertheless, the crux is the same; it is assumed that no model, method, approach, or methodology exists that could completely satisfy every property of this group. That assumption is still holding strong, since mechanisms that comply with one subset directly obstruct efforts of achieving the other <ref type="bibr" target="#b0">[1]</ref><ref type="bibr" target="#b1">[2]</ref><ref type="bibr" target="#b2">[3]</ref><ref type="bibr" target="#b3">[4]</ref><ref type="bibr" target="#b4">[5]</ref><ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref>.</p><p>It has been known throughout the history of research efforts into building reliable systems, that trying to achieve fault tolerance while relying on a single instance is futile. This can be attributed to the following reasons:</p><p>1. No matter how much the source code is being tested, extremely rare race conditions could still happen when dealing with external devices or even replicated systems. 2. Physical destruction of the datacenter will nullify any logical sound and fault-tolerant mechanism that was preliminarily implemented. 3. Even if we assume that software is logically consistent, a random radiation ray could flip some bits in the system and lead to a catastrophe. 4. logically. That is especially problematic during wartime or a nation-wide crisis. 5. At some point you will simply have to put the running instance under maintenance, and this will effectively stop its operation for a while.</p><p>While building cloud systems that require high availability, an architect has to eventually consider replication and clusterization techniques <ref type="bibr" target="#b7">[8]</ref><ref type="bibr" target="#b8">[9]</ref><ref type="bibr" target="#b9">[10]</ref><ref type="bibr" target="#b10">[11]</ref><ref type="bibr" target="#b11">[12]</ref>. Within the context of this article, we will differentiate between these terminologies in the following way:</p><p>• Replication is a distributed topology of a homogeneous multiagent system, where each participants of the said network. Each replica may have the same set of initial parameters, program code, logic, and ongoing state. Therefore, replicated environments provide rapid disaster recoveries since every other instance could effectively take the responsibilities of the one that failed <ref type="bibr" target="#b7">[8]</ref><ref type="bibr" target="#b8">[9]</ref><ref type="bibr" target="#b9">[10]</ref>.</p><p>• Clusterization refers to the distributed system organization, where the overall state is still synchronized and coordinated but the purpose and the concurrent tasks on different nodes are different. The common purpose of building clustered systems is state splitting. Other examples may include hot and warm standby servers that replicate events from the main machine but still follow the orders from a leader and are usually restricted in their functionality <ref type="bibr" target="#b12">[13]</ref><ref type="bibr" target="#b13">[14]</ref><ref type="bibr" target="#b14">[15]</ref>.</p><p>Therefore, the purpose of this article is to model multiple approaches towards coordinating replicated and clustered decentralized networks. As a result of the conducted evaluation, a set of practical recommendations is proposed to simplify the decision-making process during the system design stage.</p><p>Additionally, it is the intent of this paper to develop a mathematical model for the Replica State Discovery Protocol, which serves as a framework for performing cluster-wide state synchronization and coordination. RSDP provides a basis upon which a set of logical extensions could be built to achieve various consensus effects.</p><p>Using the mentioned consensus basis, multiple leader election mechanisms were developed and modeled. Each of those mechanisms is characterized by a set of unique security, efficiency, and resilience properties, allowing for catering to the need of a specific environment. The said properties were compared based on probability and computational complexity assessments and as a result, recommendations for their application were provided.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Replica State Discovery Protocol</head><p>The fundamental problem in managing resilience through redundancy is coordination. Since the managed objects are by definition separated, they usually do not have any common memory location that would allow them to successfully establish a synchronization algorithm based on classical concurrency control mechanisms such as locks, mutexes, or semaphores <ref type="bibr" target="#b15">[16]</ref><ref type="bibr" target="#b16">[17]</ref><ref type="bibr" target="#b17">[18]</ref>.</p><p>There are quite a few solutions that allow for both immediate and eventually consistent consensus-achieving. An example of the first would be total order broadcast, or, in other words, complete replication of events in the original order. Eventually-consistent algorithms tend to take the process in steps to reach consensus regarding a proposed value. Examples of such algorithms include Raft, Paxos, Ring, ZooKeeper, and many others <ref type="bibr" target="#b18">[19]</ref><ref type="bibr" target="#b19">[20]</ref><ref type="bibr" target="#b20">[21]</ref>.</p><p>In that regard, the Replica State Discovery Protocol could be called one of the eventually consistent algorithms. RSDP provides not only the basis for achieving consensus but also serves as a distributed coordination framework, allowing for various extensions and handling cluster events. The difference between classical leader election or consensus-reaching protocols and RSDP is the intention and flexibility they provide. The former usually concentrate on the process of voting for a single common value. In the meantime, RSDP provides a foundation not only for single-state consensus but also for synchronizing complex state setups and merges <ref type="bibr" target="#b21">[22]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">Local Area Network Simulation based on AMQP</head><p>RSDP in its core was initially designed on the basis of the local area network simulation based on the Advanced Message Queuing Protocol. The details of its implementation, efficiency, security, implications, and resilience are outlined in a separate article. But for the purpose of theoretical context, a few words have to be said to cover potential questions regarding the reliability of RSDP and its message passing process <ref type="bibr" target="#b21">[22]</ref>.</p><p>First and foremost, the said network simulation is built on top of the message queueing protocol. In that context, AMQP stands as one of the most popular solutions in coordinating and routing complex message network topologies and is continuously gaining momentum in the field of research and engineering <ref type="bibr" target="#b22">[23]</ref><ref type="bibr" target="#b23">[24]</ref><ref type="bibr" target="#b24">[25]</ref>.</p><p>Figure <ref type="figure" target="#fig_0">1</ref> shows the conceptual operation basis of AMQP and its components: The fundamental idea of AMQP is the separation of client and server, which are called producer and consumer. Instead of direct communication, the message goes through the broker and its queue, thus allowing for alleviating direct dependency between clients and servers. Additionally, AMQP describes the achievement of fundamental communication properties such as resilience, durability, congestion control, security, etc. <ref type="bibr" target="#b22">[23]</ref><ref type="bibr" target="#b23">[24]</ref><ref type="bibr" target="#b24">[25]</ref>.</p><p>Local Area Network Simulation (SLAN) leverages these capabilities to establish a secure, resilient, and isolated LAN-like environment. In its basis, SLAN describes the provisioning of the two basic communication media: direct communication links and a broadcast link.</p><p>Figure <ref type="figure" target="#fig_1">2</ref> shows the interaction media of the SLAN: SLAN operation basis relies on the two main capabilities described within the context of AMQP:</p><p>binded queues (e.g., broadcast the message) or send the message to a single binded queue by the routing key (direct communication routing). AMQP defines the durability, mirroring, and quorum mechanisms for its queues and is considered to be a well-documented, tested, resilient, and flexible foundation for communication media. SLAN, and by implication, RSDP, rely on these properties to build its own abstraction layers <ref type="bibr" target="#b25">[26,</ref><ref type="bibr" target="#b26">27]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">RSDP phases and consensus process</head><p>RSDP has its own dedicated article that describes every operation, state change, and consensusoriented process in detail <ref type="bibr" target="#b21">[22]</ref>. This section provides a succinct overview of RSDP phases with some amendments and clarifications for the operation sequences.</p><p>To provide capabilities of cluster-wide state operations, RSDP describes its lifecycle in a few phases is respectively responsible for the introduction of the new node, state sharing, and final state derivation. The last phase is responsible for handling the shutdown lifecycle event.</p><p>Since each distinct phase somehow interferes with the cluster state stored on each replica individually, every instance has a concurrency control mechanism based on the "𝑖𝑛𝑡𝑒𝑟𝑃ℎ𝑎𝑠𝑒𝑀𝑢𝑡𝑒𝑥". That mutex prevents multiple simultaneous cluster events from interfering with each other by restricting stored state access to a single active phase <ref type="bibr" target="#b15">[16]</ref><ref type="bibr" target="#b16">[17]</ref><ref type="bibr" target="#b17">[18]</ref>.</p><p>Figure <ref type="figure" target="#fig_2">3</ref> shows the phases and interaction during RSDP process: "𝑖𝑛𝑡𝑒𝑟𝑃ℎ𝑎𝑠𝑒𝑀𝑢𝑡𝑒𝑥" that prevents state mutation announcing its presence in the cluster. This message is sent through the broadcast channel and is meant to be received by all cluster members. replica would then buffer answers from the cluster members and perform an aggregation of the state as dictated by the state reducers. exchange to all the members. The final operation of the initial phase is to release the mutex and wait for any other cluster-wide events. cluster. Share messages would then be buffered for a configured amount of time to avoid redundant replica reloads. After the timeout elapses, the protocol engine would acquire the mutex, and the share messages would be validated and aggregated, giving a holistic view of the cluster-wide state. Subsequently, the protocol engine would release the mutex and wait for any other occurring events in the system. a replica goes down, it signals the others while others in the cluster would then first acquire the mutex, perform the necessary state updates, and release the mutex. No additional synchronization is necessary as the protocol assumes that every operation performed on the state is deterministic and made within the scope of a set of clean functions that do not rely on side effects.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.3.">RSDP mathematical model</head><p>Let ℛ = {𝑅 1 , 𝑅 2 , … , 𝑅 𝑛 } be the set of replicas in the distributed system. The replicas communicate over a network represented as a graph 𝐺 = (ℛ, 𝐸), where 𝐸 ⊆ ℛ × ℛ denotes the set of communication channels between replicas.</p><p>Each replica 𝑅 𝑖 maintains a local state 𝑆 𝑖 , which is an element of the global state space 𝒮. The global state of the system is a tuple 𝒮 = (𝑆 1 , 𝑆 2 , … , 𝑆 𝑛 ).</p><p>transitions. Remaining replicas adjust their states to reflect the departure:</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>•</head><formula xml:id="formula_0">∀𝑅 𝑗 ∈ ℛ ∖ {𝑅 𝑖 }, 𝑆 𝑗 ← 𝑓 𝑐𝑙𝑜𝑠𝑒 (𝑆 𝑗 , 𝑅 𝑖 )</formula><p>Where 𝑓 𝑐𝑙𝑜𝑠𝑒 is a function that removes references to 𝑅 𝑖 from 𝑆 𝑗 .</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.4.">RSDP formal definition and properties</head><p>Define 𝒮 as a set of possible states for a replica. Each state 𝑆 𝑖 may include:</p><formula xml:id="formula_1">• Membership list 𝑀 𝑖 ⊆ ℛ; • Resource utilization 𝑈 𝑖 ∈ ℝ + ;</formula><p>• Other reducer and application-specific data.</p><p>Define ℳ as the set of all possible messages: 𝑚 ∈ ℳ = {𝑚 HELLO , 𝑚 STATUS , 𝑚 SHARE , 𝑚 CLOSE } × Payload The aggregation function (𝑓 𝑎𝑔𝑔 ) combines multiple states:</p><formula xml:id="formula_2">𝑓 𝑎𝑔𝑔 ({𝑆 1 , 𝑆 2 , . . . , 𝑆 𝑗 }) = ⋃ Reducer k ({𝑆 1 , 𝑆 2 , . . . , 𝑆 𝑗 }) 𝑘</formula><p>This could be defined as:</p><p>• For membership lists: 𝑀 agg = ⋃ 𝑀 𝑗 𝑗 ;</p><p>• For resource utilization 𝑈 agg = This may involve:</p><p>• Updating membership lists: 𝑀 𝑖 ← ⋃ 𝑀 agg (𝑘) 𝑘 ;</p><p>• Adjusting resource utilization estimates;</p><p>• Updating any other application-specific data.</p><p>To prevent race conditions, the "𝑖𝑛𝑡𝑒𝑟𝑃ℎ𝑎𝑠𝑒𝑀𝑢𝑡𝑒𝑥" is used during critical sections of the protocol, particularly during state updates.</p><p>Let μ 𝑖 be a mutex for replica 𝑅 𝑖 . Then, state updates are performed under the lock μ 𝑖 :</p><formula xml:id="formula_3">𝑆 𝑖 ← μ 𝑖 𝑓 𝑢𝑝𝑑𝑎𝑡𝑒 ({𝑆 1 , 𝑆 2 , . . . , 𝑆 𝑗 })</formula><p>As was previously stated, RSDP is based on eventual consistency, where all replicas converge to the same state after a finite number of message exchanges.</p><p>For any two replicas 𝑅 𝑖 and 𝑅 𝑗 , their states 𝑆 𝑖 and 𝑆 𝑗 satisfy:</p><formula xml:id="formula_4">lim 𝑡→∞ Pr (𝑆 𝑖 (𝑡) = 𝑆 𝑗 (𝑡)) = 1</formula><p>The protocol ensures that messages are eventually delivered, and state updates occur. If a message 𝑚 is sent from 𝑅 𝑖 to 𝑅 𝑗 , then 𝑚 will be delivered to 𝑅 𝑗 after some finite delay δ. In case some messages will be lost, RSDP defines repeatable synchronization sessions as a contingency.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Leader Election Reducer for the RSDP</head><p>storing, retrieving, validation, aggregating, and updating a state is defined in a set of preconfigured reducers. The original article of RSDP describes the benefits of such a modular approach. Additionally, it provides a thorough explanation of the interface that every reducer must follow to successfully integrate with the protocol. The list of defined methods includes <ref type="bibr" target="#b21">[22]</ref>: Out of the mentioned methods, 𝑔𝑒𝑡𝐶𝑢𝑟𝑟𝑒𝑛𝑡𝑆𝑡𝑎𝑡𝑒 is the only method that is not required. This states. For example, discovery of replica members does not require 𝑔𝑒𝑡𝐶𝑢𝑟𝑟𝑒𝑛𝑡𝑆𝑡𝑎𝑡𝑒 implementation since this could be derived from the sender addresses.</p><formula xml:id="formula_5">• 𝑔𝑒𝑡𝐶𝑢𝑟𝑟𝑒𝑛𝑡𝑆𝑡𝑎𝑡𝑒:</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Mathematical model of the leader election process</head><p>Leader election reducer is an extension that performs a replicated deterministic holistic decision on the trusted entity based on incoming cluster events. Having discussed the RSDP foundation and the basis for leader election reducer, let us define an abstract description of the consensus process.</p><p>Assume 𝑐</p><p>• 𝐴 = {𝑎 1 , 𝑎 2 , … , 𝑎 𝑛 }: the set of all replica addresses;</p><p>• 𝑎 self ∈ 𝐴: the address of the current replica instance, 𝑎 self = 𝑎 𝑐 ;</p><p>• 𝐺 𝑐 ⊆ 𝐴: the current set of replica members known to the replica;</p><p>• 𝐿 ∈ 𝐺 𝑐 : the address of the current leader.</p><p>Initially:</p><formula xml:id="formula_6">• 𝐺 𝑐 = ∅; • 𝐿 = ⊥ (temporarily undefined).</formula><p>Method 𝑎𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒𝑆𝑡𝑎𝑡𝑒(𝑠𝑡𝑎𝑡𝑢𝑠𝑀𝑒𝑠𝑠𝑎𝑔𝑒𝐵𝑢𝑓𝑓𝑒𝑟), as an input, accepts a list of status messages 𝑀 status = [𝑚 STATUS • Sort addresses: arrange 𝐺 ′ in ascending order according to a total order ( ≤) on addresses 𝐴, 𝐺 sorted = Sort(𝐺 ′ ); This operation could also include additional sorting criteria. • Determine leader: 𝐿 ′ = max(𝐺 sorted );</p><formula xml:id="formula_7">• Initialize state (if 𝐺 𝑐 is ∅ or 𝐿 is ⊥): 𝐺 𝑐 ← 𝐺 sorted , 𝐿 ← 𝐿 ′ .</formula><p>As a result of its execution, the new state components are returned as the following tuple: replicaMembers = 𝐺 sorted , currentLeader = 𝐿 ′ .</p><p>Method 𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒𝑆𝑡𝑎𝑡𝑒(𝑐𝑢𝑟𝑟𝑒𝑛𝑡𝐿𝑒𝑎𝑑𝑒𝑟) expects an 𝐿 ′ ∈ 𝐴 as an input and performs the following transformation: As result returns replicaMembers = 𝐺 ′ , currentLeader = 𝐿 ′ .</p><p>rather than relying on the latest and could be described as follows:</p><p>• Let ℋ = ∅ be a multiset of hashed state components. o In case of a tie, apply a deterministic tie-breaker, such as selecting the candidate with the highest address according to the total order ≤ on 𝐴.</p><p>As result returns replicaMembers = 𝐺 ′ , currentLeader = 𝐿 ′ . Method 𝑠𝑎𝑛𝑖𝑡𝑖𝑧𝑒𝑆ℎ𝑎𝑟𝑒𝑆𝑡𝑎𝑡𝑒(𝑟𝑒𝑝𝑙𝑖𝑐𝑎𝑀𝑒𝑚𝑏𝑒𝑟𝑠, 𝑐𝑢𝑟𝑟𝑒𝑛𝑡𝐿𝑒𝑎𝑑𝑒𝑟) expects a set 𝐺 ′ ⊆ 𝐴 and a leader 𝐿 ′ ∈ 𝐴.</p><formula xml:id="formula_8">• Validate Members: areValidMembers = (𝐺 ′ ≠ ∅) ∧ (𝑎 self ∈ 𝐺 ′ ); • Validate Leader: isLeaderValid = 𝐿 ′ ∈ 𝐺 ′ .</formula><p>Output could be described then as:</p><formula xml:id="formula_9">• (areValidMembers ∧ isLeaderValid) ⟹ {replicaMembers: 𝐺 ′ ,currentLeader: 𝐿 ′ }; • ¬(areValidMembers ∧ isLeaderValid) ⟹ ∅.</formula><p>Method 𝑠ℎ𝑜𝑢𝑙𝑑𝑅𝑒𝑙𝑜𝑎𝑑(𝑟𝑒𝑝𝑙𝑖𝑐𝑎𝑀𝑒𝑚𝑏𝑒𝑟𝑠, 𝑐𝑢𝑟𝑟𝑒𝑛𝑡𝐿𝑒𝑎𝑑𝑒𝑟) expects 𝐺 ′ ⊆ 𝐴 and 𝐿 ′ ∈ 𝐴. During its execution it performs the following operations:</p><p>• Compare Members: membersChanged = (𝐺 ′ ≠ 𝐺 𝑐 ); • Compare Leader: leaderChanged = (𝐿 ′ ≠ 𝐿); • Determine Reload Necessity: shouldReload = membersChanged ∨ leaderChanged.</p><p>Returns a Boolean that indicates whether a client should be notified about the state change. Method updateState(replicaMembers, currentLeader) expects a 𝐺 ′ ⊆ 𝐴 and 𝐿 ′ ∈ 𝐴. During its execution it performs: if (𝐺 ′ ≠ ∅ ∧ 𝐿 ′ ∈ 𝐺 ′ ) then (𝐺 𝑐 ← 𝐺 ′ , 𝐿 ← 𝐿 ′ ).</p><p>Method 𝑎𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒𝐶𝑙𝑜𝑠𝑒𝑆𝑡𝑎𝑡𝑒(𝑐𝑙𝑜𝑠𝑒𝑀𝑒𝑠𝑠𝑎𝑔𝑒𝐵𝑢𝑓𝑓𝑒𝑟) depends on the implementation of a leader election function and whether it is completely deterministic. If the sorting is done with an inclusion of a locally asserted context, this method is supposed to trigger the initial phase of the RSDP to achieve consistency.</p><p>Otherwise Different approaches towards implementation of aggregateShareState(shareMessageBuffer) outlined in this section contribute to different properties of the election process. Method based on the latest source of truth is characterized by low computational intensity, but while reasonable in trusted and stable environments, is susceptible to network congestion or failures. This approach is not suitable for networks that have strict requirements for Byzantine fault tolerance.</p><p>Method based on a popular vote provides higher resilience for both intentional and unintentional discrepancies during the consensus process. It is a suitable approach for systems that are beset with an unstable or restricted environment. It is additionally characterized by increased computational complexity, though it could be reduced by taking into account only scalar values to avoid hashing overhead. This approach is the most resilient among the others against intentionally hostile behavior since, to perform an action, you have to gather the majority of votes.</p><p>Finally, the last method provides a solution based on the electoral points approach. It is the most stable and resilient option among the previous three in the context of unstable connections due to its ability to downgrade votes that have lost some portion of a state and hence have a limited view of the global state set. Though it is not resilient towards intentionally hostile actions since the state set cardinality could be superficially inflated.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">Implementation of the leader election reducer</head><p>The following section describes practical implementation of the leader election reducer using JavaScript and the 𝐵𝑎𝑠𝑒𝑅𝑒𝑝𝑙𝑖𝑐𝑎𝑆𝑡𝑎𝑡𝑒𝑀𝑎𝑛𝑎𝑔𝑒𝑟𝑅𝑒𝑑𝑢𝑐𝑒𝑟 interface defined by the RSDP. The following algorithm assumes that every cluster member can trust the environment and implements the first approach from the previous section. Such an assumption is a common case when building coordinated replication between internal services to achieve high availability. From this point on we will refer Figure <ref type="figure" target="#fig_4">4</ref> shows the initial aggregation implementation logic: The initial state of the LER, as defined by the model, is comprised of an empty set of replica members and an undefined leader. This serves as an example of an abstract derived reducer subset since it does not have an initial 𝑔𝑒𝑡𝐶𝑢𝑟𝑟𝑒𝑛𝑡𝑆𝑡𝑎𝑡𝑒 to share with the cluster.</p><p>Method 𝑎𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒𝑆𝑡𝑎𝑡𝑒 hence relies not on the data provided by the cluster members but on the messages themselves and their metadata. Its operation is simple; the new leader is defined as the replica that has the highest address. The sorting operation here is not redundant, since to achieve determinism, every node must have the same dataset and ordering. Subsequently, 𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒𝑆𝑡𝑎𝑡𝑒 abstracts out the internal store and provides a simple answer to the client, whether he is a leader.</p><p>Figure <ref type="figure" target="#fig_5">5</ref> shows the share aggregation implementation logic: The 𝑠𝑎𝑛𝑖𝑡𝑖𝑧𝑒𝑆ℎ𝑎𝑟𝑒𝑆𝑡𝑎𝑡𝑒 method is responsible for verifying the consistency of the data received from the aggregated state. A leader is valid if it is in a set of known members, and the members are valid if it is not an empty set. Then, the 𝑠ℎ𝑜𝑢𝑙𝑑𝑅𝑒𝑙𝑜𝑎𝑑 method decides whether the state has changed and whether the client should be notified. At last, 𝑢𝑝𝑑𝑎𝑡𝑒𝑆𝑡𝑎𝑡𝑒 simply sets a new state if it was provided.</p><p>Figure <ref type="figure" target="#fig_6">6</ref> shows the close aggregation implementation logic: The 𝑎𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒𝐶𝑙𝑜𝑠𝑒𝑆𝑡𝑎𝑡𝑒 Its primary goal is to deterministically determine a new set of cluster members and a leader. The leader election logic here is the same as during the initial aggregation. RSDP continuously resynchronizes the state of the cluster, so any discrepancies caused by the lost messages will eventually be resolved due to the principle of eventual consistency.</p><p>To conclude, RSDP provides a well-defined model for an arbitrary logical extension. The Farther research could lead to the different invariants of this protocol that could potentially be applicable in decentralized environments.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Leader election reducer duration and failure probability</head><p>Failure probability and consensus duration are two of the most important metrics for the consensusachieving algorithm. The following section provides mathematical models that describe these properties. We will start with a model of time required to reach a consensus. The following assumptions are made:</p><p>• Let 𝑛 be the total number of replicas in the system.</p><p>• Let 𝑑 be the maximum one-way network delay between any two replicas.</p><p>• Let 𝑡 𝑝 be the maximum time a replica takes to process a message.</p><p>• Phases to achieve initial consensus include "DEBATES" and "SHARE".</p><p>• All message delays and processing times are bounded and known.</p><p>• The SLAN layer provides guarantees of message delivery.</p><p>• The probability of the communication media coordinator failure is negligent.</p><p>DEBATES" phase each replica sends a "HELLO" message to all other replicas where time for a "HELLO" message to reach other replicas: 𝑑. After receiving a "HELLO" message, each replica processes it in time (n − 1)t p and sends back a "STATUS" message where time for a "STATUS" message to reach the original sender is 𝑑.</p><p>For a replica to receive "STATUS" messages from all others, the time is d + (n − 1)t p + d = 2d + (n − 1)t p and since there are 𝑛 − 1 replicas sending "STATUS" messages, processing them takes (𝑛 − 1)𝑡 𝑝 .</p><p>Subsequently, the total "DEBATES" phase time (𝑇 DEBATES ) is:</p><formula xml:id="formula_10">T DEBATES = 2d + (n − 1)t p + (n − 1)t p = 2d + 2t p (n − 1)<label>(1</label></formula><p>) During the "SHARE" phase, after aggregating the received "STATUS" messages, each replica broadcasts a "SHARE" message to all others. Time for "SHARE" message to reach other replicas is 𝑑. After that each replica processes incoming "SHARE" messages from 𝑛 − 1 replicas in time (𝑛 − 1)𝑡 𝑝 .</p><p>Then the total "SHARE" phase time (𝑇 SHARE ) is:</p><formula xml:id="formula_11">T SHARE = d + (n − 1)t p<label>(2)</label></formula><p>Hence, the total time to reach consensus (𝑇 consensus ) is:</p><formula xml:id="formula_12">T consensus = T DEBATES + T SHARE = (2d + 2t p (n − 1)) + (d + (n − 1)t p ) = 3d + 3t p (n − 1) = 3 (𝑑 + t p (n − 1))<label>(3)</label></formula><p>It is obvious then that the consensus achieving time is linearly dependent on the amount of cluster members. Additionally, network delay 𝑑 and processing time 𝑡 𝑝 are critical factors, but since the protocol is built on top of deterministic principles and clean functions, 𝑡 𝑝 should be negligent.</p><p>As for the failure probability, the following assumptions are made:</p><p>• Let 𝑝 𝑙 be the probability that a message is lost.</p><p>• Let 𝑝 𝑓 be the probability that a replica fails during the consensus process.</p><p>• Message losses and replica failures are independent.</p><p>• Each replica must receive "HELLO", "STATUS", and "SHARE" messages from all the replicas. • A replica successfully participates if it can send and receive all required messages.</p><p>The probability that a single message is successfully transmitted is:</p><formula xml:id="formula_13">P msg = 1 − p l<label>(4)</label></formula><p>During the consensus achieving stages, each replica must send 𝑛 − 1 "HELLO" and 𝑛 − 1 "SHARE" messages. Consequently, every replica expects to receive 𝑛 − 1 "HELLO", 𝑛 − 1 "STATUS", 𝑛 − 1 "SHARE" messages. Then the total messages received per replica could be represented as:</p><formula xml:id="formula_14">M total = 3(n − 1) = 3n − 3<label>(5)</label></formula><p>Having the total amount of required messages to successfully achieve consensus, the probability that a replica successfully sends and receives all messages:</p><formula xml:id="formula_15">P replica = (1 − p f ) × (P msg ) M total<label>(6)</label></formula><p>Consequently, the probability that all replicas will successfully participate is:</p><formula xml:id="formula_16">P all replicas = (P replica ) n = [(1 − p f ) × (1 − p l ) 3n−3 ] n<label>(7)</label></formula><p>Then the probability of consensus failure for the first election method:</p><formula xml:id="formula_17">P last state failure = 1 − [(1 − p f ) × (1 − p l ) 3n−3 ] n<label>(8)</label></formula><p>The probability of failure is dependent on key characteristics of the network and the underlying infrastructure. It is obvious that such an approach is suitable only in cases of stable network connections. SLAN layer provides delivery recovery mechanisms but does not solve every issue related to the message loss. Since the do not require successful participation of every node, the probability could be reevaluated and considered in the following way:</p><p>Let 𝑞 be the minimum number of replicas required for consensus (the quorum). For a simple majority:</p><formula xml:id="formula_18">q = ⌈ 𝑛 2 ⌉<label>(9)</label></formula><p>Consequently, the probability that at least 𝑞 replicas successfully participate is:</p><formula xml:id="formula_19">P quorum consensus = ∑ ( n k ) n k=q (P replica ) k (1 − P replica ) n−k (10)</formula><p>Then the probability of consensus failure:</p><p>P vote failure = 1 − P quorum consensus <ref type="bibr" target="#b10">(11)</ref> Evidently, vote-based approaches are significantly more resilient than the method based on the last state decision. In such systems, it is possible to withstand partial failure of participating nodes during the consensus process.</p><p>Figure <ref type="figure" target="#fig_7">7</ref> shows the topology of a self-regulated cluster of nodes: Each instance performs health checks on every other instance at intervals of ℎ. The expected time for the first instance to detect a failure is the minimum time any instance takes to detect it. Assuming health checks and uniformly distributed, the expected detection time is:</p><formula xml:id="formula_20">E[T d1 ] = h 2N<label>(12)</label></formula><p>After detecting failure, instances need to reach consensus. The consensus achieving time 𝑐 ) is considered an independent parameter to simplify the model and concentrate directly on the factors directly tied to the topology. The total time from failure occurrence 𝑇 𝑓1 to failover completion is the sum of detection time, consensus time, and failover procedure time:</p><formula xml:id="formula_21">T f1 = E[T d1 ] + T c + T p = h 2N + T c + T p<label>(13)</label></formula><p>The probability that all instances fail simultaneously (𝑃 all instances ) could be represented simply as an exponent of a single instance failure: P all instances = 𝑝 𝑖 𝑁 <ref type="bibr" target="#b13">(14)</ref> Then the total failure probability 𝑃 𝑓1 would be described in terms of consensus (P consensus ) and all instances (P all instances ) failure probabilities: P f1 = P consensus + P all instances − (P consensus × P all instances )</p><p>Then each instance sends health checks to 𝑁 − 1 other instances. During consensus, each instance sends 𝑁 − 1 messages three times. The overall amount of the messages sent during consensus is:</p><formula xml:id="formula_23">M consensus = N × (N − 1) × 3<label>(16)</label></formula><p>The total number of messages exchanged during the observation period (𝑇 𝑜𝑏𝑠 ) is:</p><formula xml:id="formula_24">M total1 = ( T obs h × M health ) + M consensus<label>(17)</label></formula><p>Total communication overhead in bytes:</p><formula xml:id="formula_25">Overhead 1 = M total1 × C m<label>(18)</label></formula><p>the models that are tied directly to the system failover properties. But to achieve a holistic view, consensus time and maintenance time models must be included.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2.">Centralized observer health monitoring</head><p>The topology with a centralized observer includes a set of stateful worker nodes in a cluster and a single coordinating machine that manages the entire network. This topology introduces the division between operational and control planes and thus fosters the single responsibility principle in the system <ref type="bibr" target="#b32">[33,</ref><ref type="bibr" target="#b33">34]</ref>.</p><p>Figure <ref type="figure" target="#fig_8">8</ref> shows the topology of a cluster monitored and coordinated by a single observer: Let us consider failure detection time 𝑇 𝑑2 . Assume that the observer performs health checks on all instances at intervals of ℎ 𝑜 . Then the expected time to detect a failure is half the health-check interval:</p><formula xml:id="formula_26">E[T d2 ] = h o 2<label>(19)</label></formula><p>Since there is no consensus process among instances, the total failover time is:</p><formula xml:id="formula_27">T f2 = E[T d2 ] + T p = h o 2 + T p<label>(20)</label></formula><p>The system relies on a single observer; its failure directly impacts the system's ability to perform failover. Probability of all Instances failing (𝑃 all_instances ) is the same as in the first method.</p><p>The total failure probability includes the observer failure and all instances failing:</p><formula xml:id="formula_28">P f2 = p o + P all instances − (p o × P all instances )<label>(21)</label></formula><p>Moving on to the communication overhead model, the observer sends health checks to all 𝑁 instances. Messages per health-check interval ℎ 𝑜 :</p><formula xml:id="formula_29">M health = N<label>(22)</label></formula><p>Then the total messages over observation time 𝑇 𝑜𝑏𝑠 :</p><formula xml:id="formula_30">M total2 = T obs h o × M health<label>(23)</label></formula><p>Consequently, the total communication overhead in bytes:</p><formula xml:id="formula_31">Overhead 2 = M total2 × C m<label>(24)</label></formula><p>This model imposes smaller communication overhead and reduces coordination complexity but suffers from a single point of failure.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3.">Distributed observer health assessment</head><p>The following discussed topology is also comprised of two distinct execution plains. In such networks, a consensus algorithm is used between observers themselves and decides on the responsible node that must coordinate the workers plane <ref type="bibr" target="#b34">[35]</ref><ref type="bibr" target="#b35">[36]</ref><ref type="bibr" target="#b36">[37]</ref>.</p><p>Figure <ref type="figure" target="#fig_9">9</ref> shows the topology of a cluster monitored and coordinated by a group of observers: 𝑇 𝑑3 . With 𝑀 observers, the expected time to detect a failure is:</p><formula xml:id="formula_32">E[T d3 ] = h o 2M<label>(25)</label></formula><p>Observers need to reach consensus after detecting a failure that takes 𝑇 𝑐 . Then the total time from failure occurrence to failover completion:</p><formula xml:id="formula_33">T f3 = E[T d3 ] + T c + T p = h o 2M + T c + T p<label>(26)</label></formula><p>The probability that all observers fail simultaneously is 𝑃 all_observers = 𝑝 𝑜 𝑀 . Given that the of all instances failing (𝑃 all_observers ) is the same as in the previous methods, the total failure probability (𝑃 𝑓3 ) is: P f3 = P consensus + P all observers + P all instances − (P consensus × P all observers × P all instances )</p><p>Each of 𝑀 observers sends health checks to all 𝑁 instances. Then the M health is:</p><formula xml:id="formula_35">M health = M × N<label>(28)</label></formula><p>Additionally, each observer sends 𝑀 − 1 messages three times during consensus:</p><formula xml:id="formula_36">M consensus = M × (M − 1) × 3<label>(29)</label></formula><p>Then the total messages during 𝑇 𝑜𝑏𝑠 is:</p><formula xml:id="formula_37">M total3 = ( T obs h o × M health ) + M consensus<label>(30)</label></formula><p>Consequently, the communication overhead (Overhead 3 ):</p><formula xml:id="formula_38">Overhead 3 = M total3 × C m<label>(31)</label></formula><p>This model provides a balance between communication overhead, complexity, separation of concerns and fault tolerance.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Conclusions</head><p>Achieving consensus within the confines of a Decentralized Coordination Network based on homogenous multiagent system is a critical process that is gaining momentum in the research field due to the ever-growing sizes of distributed systems and requirements towards high availability. Within the context of this article, a novel leader election protocol was created and modeled based on the Replica State Discovery Protocol.</p><p>One of the primary goals of this article is to introduce a leader election state reducer as a logical extension of RSDP to address the rapid failover problem. As a result, multiple viable approaches were proposed towards building such a reducer that are based on different properties of common state aggregation. The first proposed method of leader election is based upon the supposition that the network is controlled, and fault tolerance against malicious action during consensus is not expected. That is a reasonable expectation since RSDP built on top of LAN simulation, which in turn is based on AMQP provider. Such providers often come with a set of authentication and authorization mechanisms of their own. This method is characterized by its low computational overhead and finality characteristics in case of an extremely dynamic network.</p><p>The following two methods are based on quorum approach towards handling the leader election process. The method based on a popular vote is the most suitable approach to ensure resilience against both intentional and accidental failures during consensus interactions. Popular vote is a common solution in networks that require Byzantine fault tolerance.</p><p>The third proposed leader election method based on RSDP, in its foundation relies on the weighted election algorithm. The approach is characterized by a greater degree of resilience in highly congested and unreliable networks where random packet losses occur frequently due to its ability of partial inclusion.</p><p>Given the mathematical models and graphs for the three different cluster failover models and approaches, it is fair to assume that none of those could be called objectively superior in every plain of comparison. Method involving self-regulated mutual health evaluation is most suitable when high additional infrastructure incurrence and the critical event detection time are the most influential metrics of the successful system operation. Though it is worth noting that the communication overhead grows exponentially with the number of cluster members.</p><p>The second method, based on centralized observer health monitoring, is an appropriate solution only in cases where higher infrastructure and communication overhead costs are a primary decision factor. Since the entire stability of the system depends on a single centralized external observer, the very same observer becomes a single point of failure, which could lead to a disaster when high availability is a hard requirement.</p><p>Lastly, a method based on distributed observer health assessment serves as a trade-off between high availability, infrastructure cost incurrence, communication overhead, and failover delay by offloading the decision-making process to the parallel distributed layer of coordination. Such an approach is mostly suitable for current cloud infrastructure demands due to its flexibility and clearly established separation of concerns.</p><p>Overall, this article aims to inspire a surge of further research in the complex, exciting, and extremely relevant field of distributed computing and management. The implications and results of this research allow to bolster the security of modern critical infrastructure by effectively describing novel ways of achieving resilience through redundancy and the distribution of responsibility. Provided mathematical and graphical models are provided to help in the complex decision-making process and reduce possible risks when choosing an appropriate model and approach for rapid cluster failover.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Advanced Message Queuing Protocol .</figDesc><graphic coords="3,123.32,494.39,353.85,240.20" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Local Area Network Simulation based on AMQP.</figDesc><graphic coords="4,134.57,200.29,331.44,237.65" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: Replica State Discover Protocol phases.</figDesc><graphic coords="5,166.05,89.94,268.55,572.22" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head></head><label></label><figDesc>each 𝑚 STATUS 𝑖 contains a sender address 𝑚 STATUS 𝑖 .address ∈ 𝐴. During its execution it performs the following operations: • Extract addresses: 𝐺 ′ = {𝑚 STATUS 𝑖 .address | 𝑖 = 1,2, … , 𝑙};</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Initial aggregation logic of the leader election reducer.</figDesc><graphic coords="11,139.75,358.13,321.15,249.93" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: State share aggregation logic of the leader election reducer.</figDesc><graphic coords="12,124.07,89.94,352.02,362.75" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: Replica close aggregation logic of the leader election reducer.</figDesc><graphic coords="12,127.07,590.50,345.95,141.25" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Figure 7 :</head><label>7</label><figDesc>Figure 7: Self-regulated mutual health evaluation.</figDesc><graphic coords="16,159.82,89.94,280.46,132.60" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Figure 8 :</head><label>8</label><figDesc>Figure 8: Centralized observer health monitoring.</figDesc><graphic coords="17,122.23,166.16,356.18,170.15" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_9"><head>Figure 9 :</head><label>9</label><figDesc>Figure 9: Distributed observer health assessment.</figDesc><graphic coords="18,134.57,152.37,330.95,151.70" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>returns the current state of the state slice; • 𝑎𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒𝑆𝑡𝑎𝑡𝑒 • 𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑒𝑆𝑡𝑎𝑡𝑒: transforms the internal state into desired by a client format; • 𝑎𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒𝑆ℎ𝑎𝑟𝑒𝑆𝑡𝑎𝑡𝑒 them; • 𝑠𝑎𝑛𝑖𝑡𝑖𝑧𝑒𝑆ℎ𝑎𝑟𝑒𝑆𝑡𝑎𝑡𝑒: verifies the validity of an aggregated state; • 𝑠ℎ𝑜𝑢𝑙𝑑𝑅𝑒𝑙𝑜𝑎𝑑: receives a newly aggregated state and returns a Boolean indicating whether a client should be notified about state change; • 𝑢𝑝𝑑𝑎𝑡𝑒𝑆𝑡𝑎𝑡𝑒: updates the internal state of a reducer; • 𝑎𝑔𝑔𝑟𝑒𝑔𝑎𝑡𝑒𝐶𝑙𝑜𝑠𝑒𝑆𝑡𝑎𝑡𝑒</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head></head><label></label><figDesc>𝐺 ′ = 𝑚 last .replicaMembers, b. 𝐿 ′ = 𝑚 last .currentLeader.</figDesc><table><row><cell></cell><cell></cell><cell></cell><cell></cell><cell cols="2">isLeader {</cell><cell>true if L′ = 𝑎 𝑠𝑒𝑙𝑓 false if L′ ≠ 𝑎 𝑠𝑒𝑙𝑓</cell></row><row><cell cols="6">Method aggregateShareState(shareMessageBuffer) expects a list of share messages 𝑀 𝑠ℎ𝑎𝑟𝑒 =</cell></row><row><cell>[𝑚 SHARE 1</cell><cell>, 𝑚 SHARE 2</cell><cell cols="2">, … , 𝑚 SHARE 𝑙</cell><cell cols="2">], where each 𝑚 STATUS 𝑖</cell><cell>replicaMembers</cell></row><row><cell cols="2">currentLeader</cell><cell></cell><cell cols="3">Below are multiple approaches to aggregate the state components</cell></row><row><cell cols="3">replicaMembers</cell><cell cols="2">currentLeader</cell></row><row><cell cols="5">• Select last message: 𝑚 last = 𝑚 SHARE 𝑙</cell><cell>;</cell></row><row><cell cols="5">• Extract state components:</cell></row><row><cell></cell><cell cols="2">a.</cell><cell></cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head></head><label></label><figDesc>• For each message 𝑚 𝑖 ∈ 𝑀 𝑠ℎ𝑎𝑟𝑒 : • Extract state components: o 𝐺 𝑖 = 𝑚 𝑖 .replicaMembers; o 𝐿 𝑖 = 𝑚 𝑖 .currentLeader. • Form state tuple: o 𝑆 𝑖 = (𝐺 𝑖 , 𝐿 𝑖 ). • Compute hash of the state tuple: o ℎ 𝑖 = ℎ(𝑆 𝑖 ), where ℎ is a hash function. • Add ℎ 𝑖 to ℋ: o ℋ ← ℋ ∪ {ℎ 𝑖 }. • Identify the hash ℎ * with the highest frequency in ℋ: o ℎ * = arg max(frequency(ℎ 𝑖 , ℋ)). • Find 𝑆 * = (𝐺 ′ , 𝐿 ′ ) such that ℎ(𝑆 * ) = ℎ * . As result returns replicaMembers = 𝐺 ′ , currentLeader = 𝐿 ′ . assigning points from each of the participants. Consider a set of share messages defined as the 𝑀 𝑠ℎ𝑎𝑟𝑒 = [𝑚 SHARE where ∀𝑚 𝑖 ∈ 𝑀 𝑠ℎ𝑎𝑟𝑒 contains a ranked list of replica members 𝐺 𝑖 = [𝑎 𝑖,1 , 𝑎 𝑖,2 , … , 𝑎 𝑖,𝑛 𝑖 ], where 𝑛 𝑖 = |𝐺 𝑖 | be the number of candidates in 𝑚 𝑖 , with 𝑎 𝑖,1 being the most desired leader and 𝑎 𝑖,𝑛 𝑖 being the least desired leader. • For each message 𝑚 𝑖 ∈ 𝑀 𝑠ℎ𝑎𝑟𝑒 . o For each candidate 𝑎 𝑖,𝑘 at position 𝑘 in 𝐺 𝑖 compute the weight 𝑤 𝑖,𝑘 = 2 𝑛 𝑖 −𝑘 . • Initialize a score set 𝐶 𝑖 = {𝑐 𝑖,1 , 𝑐 𝑖,2 , … , 𝑐 𝑖,𝑛 𝑖 }, where 𝑐 𝑖,𝑘 = 0 for 𝑘 = 1,2, … , 𝑛 𝑖 . • For each candidate 𝑎 𝑖,𝑘 : o Update the candidate's score 𝑐 𝑖,𝑘 ← 𝑐 𝑖,𝑘 + 𝑤 𝑖,𝑘 ; o Let 𝑐 𝑗 ∈ 𝐶 be the total score, where 𝐶 is a set of total scores for each candidate, then for 𝑎 𝑖,𝑗 ∈ 𝐺 𝑖 , 𝑐 𝑗 = ∑ ∑ δ 𝑎 𝑖,𝑗 ,𝑎 𝑖,𝑘 o where δ 𝑎 𝑖,𝑗 ,𝑎 𝑖,𝑘 is the Kronecker delta function: ▪ 𝛿 𝑎 𝑖,𝑗 ,𝑎 𝑖,𝑘 { 1 if 𝑎 𝑖,𝑗 = 𝑎 𝑖,𝑘 0 if 𝑎 𝑖,𝑗 ≠ 𝑎 𝑖,𝑘 • Determine the leader: o Identify the candidate 𝐿 ′ with the highest total score arg max</figDesc><table><row><cell>1</cell><cell>, 𝑚 SHARE 2</cell><cell>, … , 𝑚 SHARE 𝑙 𝑙 𝑖=1 ], 𝑛 𝑖 𝑘=1</cell><cell>⋅ 𝑤 𝑖,𝑘 ;</cell><cell>𝑐 𝑗 ∈𝐶</cell><cell>(𝑐 𝑗 )</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_5"><head></head><label></label><figDesc>it expects a list of close messages 𝑀 𝑐𝑙𝑜𝑠𝑒 = [𝑚 CLOSE</figDesc><table><row><cell></cell><cell></cell><cell></cell><cell>1</cell><cell>, 𝑚 CLOSE 2</cell><cell>, … , 𝑚 CLOSE 𝑝</cell><cell>], where each</cell></row><row><cell>𝑚 CLOSE 𝑖</cell><cell>has sender address 𝑚 CLOSE 𝑖</cell><cell>.address ∈ 𝐴.</cell><cell></cell></row><row><cell cols="4">During its execution it performs the following operations:</cell></row><row><cell cols="3">• Extract Closing Addresses: A cl = {𝑚 CLOSE 𝑖</cell><cell cols="2">.address | 𝑖 = 1,2, … , 𝑝};</cell></row><row><cell cols="3">• Update Replica Members: 𝐺 𝑐 ← 𝐺 𝑐 ∖ A cl ;</cell><cell></cell></row><row><cell cols="4">• Recalculate Leader: 𝐿 ← max(𝐺 𝑐 ) if 𝐺 𝑐 ≠ ∅ else ⊥.</cell></row></table></figure>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Stateful Cluster Failover Models</head><p>A stateful cluster in the context of this article is a distributed system where each node has its own subset of the system state. The subset might be either a unique unknown portion for every other cluster member or, as a more common case, a subset of anot establish a leader-follower model to achieve high consistency <ref type="bibr" target="#b12">[13]</ref><ref type="bibr" target="#b13">[14]</ref><ref type="bibr" target="#b14">[15]</ref>.</p><p>While the entire cluster follows a single leader, it becomes a single point of failure. The principles of fault tolerance in that context require establishing a failover mechanism as a contingency. During luster nodes should be probed and tested to detect any issues promptly. As soon as the critical event on the leader node is detected, the mechanism switches to the active phase of achieving consensus. The entire network has to agree upon a new leader of a cluster to continue its operation <ref type="bibr" target="#b27">[28]</ref><ref type="bibr" target="#b28">[29]</ref><ref type="bibr" target="#b29">[30]</ref>.</p><p>The following list includes common definitions used to model every subsequent failover method and their properties:</p><p>• 𝑁: Number of instances in the cluster.</p><p>• 𝑀: Number of external observers (Method 2 &amp; 3).</p><p>• ℎ: Health-check interval between instances (Method 1).</p><p>ℎ 𝑜 : Health-check interval by observers (Methods 2 and 3). • 𝑇 𝑑 : Failure detection time.</p><p>• 𝑇 𝑝 : Time to perform the failover procedure.</p><p>• 𝑇 𝑐 : Consensus achieving time (an independent parameter).</p><p>• 𝑝 𝑖 : Probability of an instance failing during the observation window.</p><p>• 𝑝 𝑜 : Probability of an observer failing during the observation window.</p><p>𝑃 consensus : Probability of failure in achieving consensus. • 𝑇 𝑜𝑏𝑠 : Total observation time.</p><p>• 𝐶 𝑚 : Average size of a message (in bytes) Each node/observer sends (𝑁 − 1) 𝑜𝑟 (𝑀 − 1) messages three times during consensus. In the following subsection, each failover topology will be described in terms of failover delay, total failure probability, and communication overhead. as an optimization phase to avoid going through the entire consensus cycle every time a node leaves the cluster.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">Self-regulated mutual health evaluation</head><p>We will first evaluate a model based on a single logical plane. Each node in such a cluster is responsible for operational execution, monitoring, and governance. In such topology, every node must have a communication link with every other in the system to successfully achieve consensus and monitor other instances <ref type="bibr" target="#b30">[31,</ref><ref type="bibr" target="#b31">32]</ref>.</p><p>The cluster could be preconfigured to initiate health probes in a specified interval but with different initial timestamp shifts based on a node position in the network. This allows to efficiently utilize the repetitive status probes and decrease failure detection time. Additionally, since every node conducts the monitoring, the network can tolerate to up to 𝑁 -1 failed nodes, where 𝑁 is a node set cardinality.</p><p>In that regard, LER provides all the necessary data needed to establish successful monitoring and election in an automated way. The capabilities of LER already provided data for the dynamic node discovery. Hence, every node has a list of the cluster members that they must probe. LER automatically adjusts the states of nodes in a cluster as soon as some subset leaves, but the new leader election cycle could also be triggered in case the nodes suffered critical events.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Declaration on Generative AI</head><p>The authors have not employed any Generative AI tools.</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">The CAP theorem</title>
		<author>
			<persName><forename type="first">S</forename><surname>Gilbert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Lynch</surname></persName>
		</author>
		<idno type="DOI">10.1109/MC.2011.389</idno>
	</analytic>
	<monogr>
		<title level="j">Computer</title>
		<imprint>
			<biblScope unit="volume">45</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="30" to="36" />
			<date type="published" when="2012-02">Feb. 2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Kleppmann</surname></persName>
		</author>
		<idno type="DOI">10.48550/arXiv.1509.05393</idno>
		<idno type="arXiv">arXiv:1509.05393v2</idno>
		<title level="m">A critique of the CAP theorem</title>
				<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
	<note>cs.DC</note>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">A certain freedom: thoughts on the CAP theorem</title>
		<author>
			<persName><forename type="first">E</forename><surname>Brewer</surname></persName>
		</author>
		<idno type="DOI">10.1145/1835698.1835701</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing</title>
				<meeting>the 29th ACM SIGACT-SIGOPS symposium on Principles of distributed computing</meeting>
		<imprint>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page">335</biblScope>
		</imprint>
	</monogr>
	<note>PODC &apos;10</note>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">A</forename><surname>Lee</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Bateni</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Lin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Lohstroh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Menard</surname></persName>
		</author>
		<idno type="DOI">10.48550/arXiv.2109.07771</idno>
		<idno type="arXiv">arXiv:2109.07771v1</idno>
		<title level="m">Quantifying and generalizing the CAP theorem</title>
				<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
	<note>cs.DC</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">CAP theorem: revision of its related consistency models</title>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">D</forename><surname>Muñoz-Escoí</surname></persName>
		</author>
		<idno type="DOI">10.1093/comjnl/bxy142</idno>
	</analytic>
	<monogr>
		<title level="j">The Computer Journal</title>
		<imprint>
			<biblScope unit="volume">62</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="943" to="960" />
			<date type="published" when="2019-06">June 2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Lewis-Pye</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Roughgarden</surname></persName>
		</author>
		<idno type="DOI">10.48550/arXiv.2006.10698</idno>
		<idno type="arXiv">arXiv:2006.10698v1</idno>
		<title level="m">Resource pools and the CAP theorem</title>
				<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
	<note>cs.DC</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">The CAP theorem versus databases with relaxed ACID properties</title>
		<author>
			<persName><forename type="first">L</forename><surname>Frank</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">U</forename><surname>Pedersen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">H</forename><surname>Frank</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">J</forename><surname>Larsson</surname></persName>
		</author>
		<idno type="DOI">10.1145/2557977.2557981</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 8th International Conference on Ubiquitous Information Management and Communication (ICUIMC &apos;14)</title>
				<meeting>the 8th International Conference on Ubiquitous Information Management and Communication (ICUIMC &apos;14)</meeting>
		<imprint>
			<date type="published" when="2014-01">Jan. 2014</date>
			<biblScope unit="page" from="1" to="7" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Fault-tolerance by replication in distributed systems, Reliable Software Technologies Ada-Europe &apos;96 (Ada-Europe</title>
		<imprint>
			<date type="published" when="1996-01">1996. Jan. 2005</date>
			<biblScope unit="page" from="38" to="57" />
		</imprint>
	</monogr>
	<note>conference paper</note>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">Exploiting replication in distributed systems</title>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">P</forename><surname>Birman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">A</forename><surname>Joseph</surname></persName>
		</author>
		<idno>doi: NASA-CR-186410</idno>
		<imprint>
			<date type="published" when="1989-01">Jan. 1989</date>
		</imprint>
	</monogr>
	<note type="report_type">NASA Contractor Report</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Analysis of replication in distributed database systems</title>
		<author>
			<persName><forename type="first">B</forename><surname>Ciciani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">M</forename><surname>Dias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">S</forename><surname>Yu</surname></persName>
		</author>
		<idno type="DOI">10.1109/69.54723</idno>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Knowledge and Data Engineering</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="page" from="247" to="261" />
			<date type="published" when="1990-06">Jun. 1990</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing</title>
		<author>
			<persName><forename type="first">M</forename><surname>Zaharia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Chowdhury</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Das</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Dave</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Ma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mccauley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">J</forename><surname>Franklin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Shenker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Stoica</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 9th USENIX Symposium on Networked Systems Design and -14</title>
				<meeting>the 9th USENIX Symposium on Networked Systems Design and -14<address><addrLine>Berkeley</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2012">2012</date>
		</imprint>
		<respStmt>
			<orgName>University of California</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Understanding fault-tolerant distributed systems</title>
		<author>
			<persName><forename type="first">F</forename><surname>Cristian</surname></persName>
		</author>
		<idno type="DOI">10.1145/102792.102801</idno>
	</analytic>
	<monogr>
		<title level="j">Communications of the ACM</title>
		<imprint>
			<biblScope unit="volume">34</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="56" to="78" />
			<date type="published" when="1991-02">Feb. 1991</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Highly-distributed systems: What is inside?</title>
		<author>
			<persName><forename type="first">A</forename><surname>Luntovskyy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Shubyn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Maksymuk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Klymash</surname></persName>
		</author>
		<idno type="DOI">10.1109/PICST51311.2020.9467890</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2020 IEEE International Conference on Problems of Infocommunications. Science and Technology (PIC S&amp;T)</title>
				<meeting>the 2020 IEEE International Conference on Problems of Infocommunications. Science and Technology (PIC S&amp;T)<address><addrLine>Kharkiv, Ukraine</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2020-10">Oct. 2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Localityaware request distribution in cluster-based network servers</title>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">S</forename><surname>Pai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Aron</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Banga</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Svendsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Druschel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Zwaenepoel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Nahum</surname></persName>
		</author>
		<idno type="DOI">10.1145/384265.291048</idno>
	</analytic>
	<monogr>
		<title level="j">ACM SIGOPS Operating Systems Review</title>
		<imprint>
			<biblScope unit="volume">32</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="205" to="216" />
			<date type="published" when="1998-10">Oct. 1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Large-scale cluster management at Google with Borg</title>
		<author>
			<persName><forename type="first">A</forename><surname>Verma</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Pedrosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Korupolu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Oppenheimer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Tune</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Wilkes</surname></persName>
		</author>
		<idno type="DOI">10.1145/2741948.2741964</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Tenth European Conference on Computer Systems</title>
				<meeting>the Tenth European Conference on Computer Systems</meeting>
		<imprint>
			<date type="published" when="2015-04">Apr. 2015</date>
			<biblScope unit="page" from="1" to="17" />
		</imprint>
	</monogr>
	<note>EuroSys &apos;15</note>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">The mutex and lock management</title>
		<author>
			<persName><forename type="first">A</forename><surname>Holub</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-1-4302-1129-7_3</idno>
	</analytic>
	<monogr>
		<title level="m">Taming Java Threads</title>
				<meeting><address><addrLine>Berkeley, CA</addrLine></address></meeting>
		<imprint>
			<publisher>Apress</publisher>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<title level="m" type="main">Semaphores,&quot; in Multi-Threaded Programming in C++</title>
		<author>
			<persName><forename type="first">M</forename><surname>Walmsley</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-1-4471-0725-5_5</idno>
		<imprint>
			<date type="published" when="2000">2000</date>
			<publisher>Springer</publisher>
			<pubPlace>London</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Beyond mutexes, semaphores, and critical sections</title>
		<author>
			<persName><forename type="first">S</forename><surname>Plagnol</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Embedded Real Time</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Replication in Raft vs Apache Zookeeper</title>
		<author>
			<persName><forename type="first">M</forename><surname>Petrescu</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-55556-4_44</idno>
	</analytic>
	<monogr>
		<title level="m">Advances in Intelligent Systems and Computing</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2023">2023</date>
			<biblScope unit="volume">1438</biblScope>
			<biblScope unit="page" from="426" to="435" />
		</imprint>
	</monogr>
	<note>Soft Computing Applications (SOFA 2020</note>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Paxos vs Raft: Have we reached consensus on distributed consensus?</title>
		<author>
			<persName><forename type="first">H</forename><surname>Howard</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Mortier</surname></persName>
		</author>
		<idno type="DOI">10.1145/3380787.3393681</idno>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC &apos;20)</title>
				<meeting>the 7th Workshop on Principles and Practice of Consistency for Distributed Data (PaPoC &apos;20)</meeting>
		<imprint>
			<date type="published" when="2020-04">April 2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<title level="m" type="main">ZooKeeper: Distributed Process Coordination</title>
		<author>
			<persName><forename type="first">F</forename><surname>Junqueira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Reed</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>O&apos;Reilly Media, Inc</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Replica State Discovery Protocol Based on Advanced Message Queuing Protocol</title>
		<author>
			<persName><forename type="first">M</forename><surname>Kotov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Toliupa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Nakonechnyi</surname></persName>
		</author>
		<idno type="DOI">10.28925/2663-4023.2024.23.156171</idno>
	</analytic>
	<monogr>
		<title level="j">Cybersecurity: Education, Science, Technique</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="issue">23</biblScope>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Choice of effective messaging protocols for IoT systems: MQTT, CoAP, AMQP and HTTP</title>
		<author>
			<persName><forename type="first">N</forename><surname>Naik</surname></persName>
		</author>
		<idno type="DOI">10.1109/SysEng.2017.8088251</idno>
	</analytic>
	<monogr>
		<title level="m">2017 IEEE International Systems Engineering Symposium (ISSE)</title>
				<meeting><address><addrLine>Vienna, Austria</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2017-10">Oct. 2017</date>
			<biblScope unit="page" from="426" to="435" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Performance evaluation of RESTful web services and AMQP protocol</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L</forename><surname>Fernandes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><forename type="middle">C</forename><surname>Lopes</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">J P C</forename><surname>Rodrigues</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Ullah</surname></persName>
		</author>
		<idno type="DOI">10.1109/ICUFN.2013.6614932</idno>
	</analytic>
	<monogr>
		<title level="m">2013 Fifth International Conference on Ubiquitous and Future Networks (ICUFN)</title>
				<meeting><address><addrLine>Da Nang, Vietnam</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2013-07">Jul. 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">A comparison of AMQP and MQTT protocols for Internet of Things</title>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">Q</forename><surname>Uy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">H</forename><surname>Nam</surname></persName>
		</author>
		<idno type="DOI">10.1109/NICS48868.2019.9023812</idno>
	</analytic>
	<monogr>
		<title level="m">2019 6th NAFOSTED Conference on Information and Computer Science (NICS)</title>
				<meeting><address><addrLine>Hanoi, Vietnam</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2019-12">Dec. 2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">AMQP and beyond</title>
		<author>
			<persName><forename type="first">A</forename><surname>Prajapati</surname></persName>
		</author>
		<idno type="DOI">10.1109/SmartNets50376.2021.9555419</idno>
	</analytic>
	<monogr>
		<title level="m">2021 International Conference on Smart Applications, Communications and Networking (SmartNets)</title>
				<meeting><address><addrLine>Glasgow, United Kingdom</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2021-09">Sep. 2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Security vulnerabilities and cyber threat analysis of the AMQP protocol for the Internet of Things</title>
		<author>
			<persName><forename type="first">I</forename><forename type="middle">N</forename><surname>Mcateer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">I</forename><surname>Malik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Baig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Hannay</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Australian Information Security Management Conference</title>
				<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Failover pattern with a self-healing mechanism for high availability cloud solutions</title>
		<author>
			<persName><forename type="first">A</forename><surname>Stanik</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Höger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Kao</surname></persName>
		</author>
		<idno type="DOI">10.1109/CLOUDCOM-ASIA.2013.63</idno>
	</analytic>
	<monogr>
		<title level="m">2013 International Conference on Cloud Computing and Big Data</title>
				<meeting><address><addrLine>Fuzhou, China</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2013-12">Dec. 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">An optimized multi-Paxos protocol with centralized failover mechanism for cloud storage applications</title>
		<author>
			<persName><forename type="first">W</forename><surname>Lin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Jiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Zhao</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Zhang</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-30146-8_41</idno>
	</analytic>
	<monogr>
		<title level="m">Collaborative Computing: Networking, Applications and Worksharing (CollaborateCom</title>
				<imprint>
			<date type="published" when="2018-02">2018. Feb. 2019</date>
			<biblScope unit="volume">268</biblScope>
			<biblScope unit="page" from="610" to="625" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">High-availability clusters: A taxonomy, survey, and future directions</title>
		<author>
			<persName><forename type="first">P</forename><surname>Somasekaram</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Calinescu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Buyya</surname></persName>
		</author>
		<idno type="DOI">10.1016/j.jss.2021.111208</idno>
	</analytic>
	<monogr>
		<title level="j">Journal of Systems and Software</title>
		<imprint>
			<biblScope unit="volume">187</biblScope>
			<biblScope unit="page">111208</biblScope>
			<date type="published" when="2022-05">May 2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">High-availability (HA) PostgreSQL Cluster with Patroni</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">K</forename></persName>
		</author>
		<ptr target="https://medium.com/@chriskevin_80184/high-availability-ha-postgresql-cluster-with-patroni-1af7a528c6be" />
	</analytic>
	<monogr>
		<title level="j">Medium</title>
		<imprint>
			<date type="published" when="2024-01-14">Jan 14, 2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Percona Distribution for PostgreSQL</title>
		<ptr target="https://docs.percona.com/postgresql/15/solutions/high-availability.html" />
	</analytic>
	<monogr>
		<title level="m">Percona Documentation, version 15</title>
				<imprint/>
	</monogr>
	<note>High availability</note>
</biblStruct>

<biblStruct xml:id="b32">
	<monogr>
		<ptr target="https://pg-auto-failover.readthedocs.io/en/main/intro.html" />
		<title level="m">Introduction to pg_auto_failover</title>
				<imprint/>
	</monogr>
	<note>pg_auto_failover Documentation</note>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">Introducing pg_auto_failover: Open source extension for automated failover and highavailability in PostgreSQL</title>
		<author>
			<persName><forename type="first">L</forename><surname>Fittl</surname></persName>
		</author>
		<ptr target="https://opensource.microsoft.com/blog/2019/05/06/introducing-pg_auto_failover-postgresql-open-source-extension-automated-failover-high-availability/" />
	</analytic>
	<monogr>
		<title level="j">Microsoft Azure Blog</title>
		<imprint>
			<date type="published" when="2019-05-06">May 6, 2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<analytic>
		<title level="a" type="main">Kubernetes Architecture</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">E</forename><surname>Nocentino</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Weissman</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-1-4842-7192-6_3</idno>
	</analytic>
	<monogr>
		<title level="m">SQL Server on Kubernetes</title>
				<meeting><address><addrLine>Berkeley, CA</addrLine></address></meeting>
		<imprint>
			<publisher>Apress</publisher>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b35">
	<analytic>
		<title level="a" type="main">Cluster Architecture</title>
		<ptr target="https://kubernetes.io/docs/concepts/architecture/" />
	</analytic>
	<monogr>
		<title level="m">Kubernetes Documentation</title>
				<imprint/>
	</monogr>
	<note>Kubernetes Documentation</note>
</biblStruct>

<biblStruct xml:id="b36">
	<analytic>
		<title level="a" type="main">Decentralized Kubernetes Federation Control Plane</title>
		<author>
			<persName><forename type="first">L</forename><surname>Larsson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Gustafsson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Klein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Elmroth</surname></persName>
		</author>
		<idno type="DOI">10.1109/UCC48980.2020.00056</idno>
	</analytic>
	<monogr>
		<title level="m">IEEE/ACM 13th International Conference on Utility and Cloud Computing (UCC)</title>
				<meeting><address><addrLine>Leicester, UK</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2020">2020. 2020</date>
			<biblScope unit="page" from="354" to="359" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
