 My name is Gitanjali and I am a DevOps engineer at Salesforce. And today I'm gonna talk about something basic and something fundamental that is consensus problem in a distributed system. Okay, what is consensus in a distributed system, right? So a distributed system is a group of networked components that act as a single entity. And these components are never perfect. They're prone to hardware, software, network, all sorts of failures. And in order for them to act as a single entity, they have to agree on some data value. So that is consensus, agreeing on some data value by all the system components in a distributed system is consensus. All right, why do we need consensus, you ask, right? Okay, let's take a sample, you know, distributed database where the data is replicated across all data nodes. And in any such distributed scenario, we will encounter these problems. So ordering of the updates. So orders of the updates should be the same for all the data nodes so that the data will be consistent. And in any distributed system, the deduction, the failure deduction is important because for the distributed system to act as a single entity, they must be aware of the cluster membership, right? So that's failure deduction. And mutual exclusion. For example, multiple components are trying to access the same resource at the same time. Exclusive access to a resource should be possible. So that is mutual exclusion. And of course, the leader election, which we are very well aware of. If at all in this case, for example, if we want to redirect all the rights to a particular leader, a leader election process has to take place. So these are set of common scenarios that we encounter in a distributed system. And these are all directly related to consensus. Because we need consensus to solve all these distributed system problems. All right. So there are multiple algorithms available, multiple software available to obtain consensus in a distributed system. And here are some basic properties that any consensus algorithm should adhere to. That is agreement. That is every component in the system must agree on the same value. So yeah, that is agreement. That is consensus basically. And validity. That is if all the components propose the same value and that value must be agreed on. So that's like unanimous election and termination. If all the components must propose a value, must decide on some value. And if a decision cannot be made, if an agreement cannot be made, the decision must be not deciding because the process has to terminate. Otherwise the system will stall forever and that's why we need all these properties for any consensus protocol. Okay. So here are some prominent consensus algorithms already theorized. That is Paxos, Raft and Zap. And we have various softwares already available which implements these algorithms. Like Google Stubby implements some variant of Paxos and console and HCD implements Raft and Apache Zookeeper implements Zap. So if at all you are designing a distributed system, we can leverage all this already existing software to obtain consensus or to solve the said problems in your distributed system. All right, I hope that talk is helpful and I'm done. Thank you.