This commit is contained in:
JMARyA 2024-02-05 18:24:55 +01:00
parent 6edadee2de
commit 48e3460551
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263

43
technology/tools/Raft.md Normal file
View file

@ -0,0 +1,43 @@
---
obj: concept
website: https://raft.github.io
---
# Raft Consensus Algorithm <img src="data:image/avif;base64,AAAAHGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZgAAAPJtZXRhAAAAAAAAAChoZGxyAAAAAAAAAABwaWN0AAAAAAAAAAAAAAAAbGliYXZpZgAAAAAOcGl0bQAAAAAAAQAAAB5pbG9jAAAAAEQAAAEAAQAAAAEAAAEWAAAKeQAAAChpaW5mAAAAAAABAAAAGmluZmUCAAAAAAEAAGF2MDFDb2xvcgAAAABqaXBycAAAAEtpcGNvAAAAFGlzcGUAAAAAAAAAyAAAAMgAAAAQcGl4aQAAAAADDAwMAAAADGF2MUOBQGAAAAAAE2NvbHJuY2x4AAEAAgAGgAAAABdpcG1hAAAAAAAAAAEAAQQBAoMEAAAKgW1kYXQSAAoKWB3x8djQECBogDLoFBGQAkkkkUC0XrzYrNDsdi6ZtRqjzbMBUY3dKgPudKFya5aFnPVyAWaiMzdt1DPxRZJW5ck6rQfFdOKEK5nXOPURbQL8np9UQYyXioZsEEwkn4SjiPXZPBRX2X+l6MFYqVl2+9hq4vSHmpGAXfQGYzM5AOHpgUs+YBQdisxRolXzAN2inX5vwUtdXfk+Y1nnDWu697ovAWYI0Vmutx0zlhEZW7gyusQf58hCykGFN1PtYvRCyQ8VsELPI/tU0GP8rVj9YEGXqELZl5O6npqBiygssm9Z19Wxtz2ta0PpR1Osc0fZq88uxDMQ9tTVinPnpkzsJSbHQm+3O/YAazSQw7DeoYgKImenDLIuYK/YJW5PtyhKFT4kvGRlHJlMrxMZBMesMkHTiH4bmvxf14xW54B55pvxwnGsO7NwtF10rE5j2snEi5+/pf6sNjHHikGS6UhjNp6xt+6xI99RTzTBQ0hnytn2mqRUngancKPFIaUVi+aaxUyQFBuYqH60gAt/dwr74DidaQ7E7Exl6+FIyhcYkAnAlD4ZG4PbCdaFKJUlj9x2mySRAwBZou8z7Uv7JTB0cjcQSXhhDdMKfJr4SKnbgvxUDio/6UsvmapBsp+1g+ONcIyAAr19m0J1j6siZteIMbSzRc/Y7XsPs3llgjBovIfPqFKfOZh2vK+I+PfS37X6jhOhLb1tlHFFSsecSlcEgGolPyOMWi6LjETTKe1ZWmMbzmuGlxe9BIKHPSmkSqE+Nct1tYN5TxxRIERioxdbn67rAujZFYRw/wRMOcju3WBdOoRJegDKDAf8e0Wzb8nInSHsxEenDDmJHiVhsd9k6IsDB5RYYN3l4jkLCFTBnItnhIKIEXL3JlAFkMCj56VB4trKFBPa1G/DvGL8hqKBt8uXRGqikkCCQenqoVj+u8fVnFv217X92K2MdP+VsplXC8rOzjXJk27wZZU/GpKJtZtuuzymF/jT3HkauTzr0TrY2Li2ZUi+fWOQh01ml0Ewlz4v6HsXG8673jCnhNOoVhiov2oX8gXAbJaiy76Nrjz8SrrFjvp9hlqHpAoKT+IFIt+sjHvZtwXBHKfq2HPTtD1BZyyB6xiP1T0KeRmR7/jO+Qmt2WP1mhrlWOKZnssXZ4u7XwgU0O0yt5J3GennjqlbGeY1Smjnd+EIp+lanH1adNRG4/+9Zk/674yXHvX11Ort6oN/J96la5W4Y9ykcLS4JRGzBwFlR5zaOe5DcBB+W6oX/9SLuq1mUxPbQsk9KGT1ALp+IF5QFcOY5uKvQayw6NnqA/pwNcGEj9r5Ed7gdp0cUioz6LAGcmvwo7X4ObLydvGqDsAYWd5VTHo6EFPsZmkap7bPforoFSCttcvIE04T8zcby4L+egtJCbHZAZRqCEPeI7KsOBIZVYB2DdCfVA/S2vxj0qOdBItNlBvnnGT0jxos+ncq0CL0rWqC2Um9/HyYOcxCu/fOrgMgRXUuWDgqOfxS6ZZr9gGFdUdl9C0kmeZNm2XhxLSuWbfpiBhBLEIZE0Hca+LsikcxCRPYnNZOMxznMrTOwM+b/oFamDvCZq5cp9bJbymg1qTZVgJZyanvSxmEdZlKLzPrkyZisknvbbxYf6+dRcQs8loFei00lQNd4FnlB4OHqDYkfWssEBTqQNCaqTjAQLQL7Xn132W3SWKOvnDwNKQON7cTS/cIEiXQo1m6LTT2YaxIfSWUPhheUuLXSH74S2LYF+4RnG3OHsGlJPqvEfk+NV5cGEuj258jh2ZSrF2hJN2SEG5rMeCEbwJPQYP2hs16SMPm19bqaOwgjm4AfGZZ3dyByrUXGlBm0CxwWLMW6m0qLlFLD7kL0/qL1nQ0T6bJqxQ9z49XWUaINvxBZCx8+TWy/+M4w1cn0JNj5i8bOdPpf7sEI9lac3cQE9T9ulfunhSK4fgBEfYIv+K3Qs+5/M5x37GGP2WMqp7DZBrffPg3JpW2Rw4uDsme7/OsQdYk1o/7KWl3ZWOPxAyuTP7dZQ1POpT/ZEG8sCkw2l1jYueb6wkXwoHsJI41+xCDj/65xu96DbCuHTWQjRu5AOpQCgcIg8lFqNXRlp/2AkyW3DWpLSCFR/EU5OYcyyisRZo4jbybXaKeh5V28Oet76lUI233FCxv09yNeE01X/d/8Ja6UAGqviTZG1JR8I91sSQz90I897Bp2devGIKMRgFNknzt5mi3qLdDWhtcYcQVa1UmfYAdnkvFZ1XafiGwjN8PZr+8QLOjjpQwhy8OAThCX0RsUFMoOVRAzwFl1A9FXnft2aRWPbWQPH9FsfnRm9LG7qctNYEDs6eZ5NLmG6ysj5JJMtMHKLO8qFriGM5b/Sb3+8TDyiiIAJLHMykWA0a75W4uTXwHqU/D/sX5m6hq8jQob8fJ+zsKTPrtv/8TXsxkhq7FALBnz8vAE3mYjcEPteavxsHxVW9AgesXeKzugUUoFVJxfS1oHtZm4h5QVIlVLLfYQHc8ByqeBV4n+zgSIYo5YrCP6LT6IjpD3meZJyUqhyW51XXpzYW86b2EIdsgBCStqnFLGcPqyU+oiPLwEpmN9dqnPvu/BqI1RT8S9hRxI1vzkTHQwUGvzOp6pYawcpf8nfKOZd4zWIIC9SmzFyDr7j6E/F0A/kqGbhTD1sWY3UIPVli9v/NsEJRcYK/JxyGRBCne/sUU/R9Rh3bQ4AFh/wLZRcMraZadZl9e2FpsfxQPL3RUraD5yE7A57Zg5HJEP2hESjjHREv220gQQ4tUn2yBhwA/BYVhIuBPAUN9JJsVghZw0uFevAhn7S62f+OqFR7YjTseNJM+66n2I+jpD6BiE/0H9O6rJm24jRqG0BZDmS/K9Om/pVcMRArcrN75P4FS7MDXZs1jv57z+tGfHvwgsao778t5dCvAI8MWxP1hqPc8SEp0dfdaL2xO1/jalJEFKnqKXWurzlDvF+rkngnnFuiIOM4tHyXYbKMxGu3qWjb1XzrUCCmpWLxLtxKd/n9+0JDRhjg/TVvQbtp5tfyAzJQMm52JJil9Bk2ols8dNHos/X8bLN5dYgk5Bd36NqnuLTyBU+RzzavATdXKFeUJI5c5+24H0IdSCeqfIEMXb7ybaB0rLkM5NpLqXZCA/zbWqae65hVVjkix2AzpPFCWHMyg3R2Mox31Y7JnDJu7JI3IoDN7Lt06dZ+uwM0LHUz6eOlBT2oYZZ2fE7csMrIubBVjcplhyNCshzbOIRtobPsEsxYBfN2x9VwAA1EHFnXXQx0R56DoKdXeyXvHYbcJMInNZ7K4vZyb/quHCqREdojxqJLmbeejdEBi4u2x2sZuBlS2J3Ydlo15yUtRbSbtFsMWGLi8tWluKTC1YVN1MRSoGdDteuzKrcrv+TcpXVQqDkj6TMSVpi2j+Tb/e8Qi+ud2iXWtc7XNliwT7OLC5PYkb818ayN+Otxh69TklDSHvKXOsgBu7+Ob3lRt+2+Sr5kjZEIWkLtE5FVW4YILisuv4t9YBUEjpehFGb8o6xCFHtD01axeXEduCaNQA2d8Dc3ufHu021ahli4vpQZJgA==" width="64"/>
Raft is a consensus algorithm designed to manage replicated logs in distributed systems. Developed as an alternative to Paxos, Raft prioritizes understandability and simplicity, making it an attractive choice for building fault-tolerant distributed systems.
## Concepts
### Leader Election
Raft employs a leader election mechanism where nodes contend to become the leader.
Nodes transition through follower, candidate, and leader states based on timeouts and votes.
## Log Replication
The leader manages log replication by sending heartbeat messages and append entries to followers.
Followers replicate the leader's log, ensuring consistency across the system.
## Term and Commit Index
Raft introduces the concept of terms to track changes in leadership.
Each leader's term is associated with a commit index, indicating the highest log entry replicated to a majority of nodes.
## How Raft Works
- Follower State:
Nodes start as followers, waiting for incoming leader messages.
If a follower doesn't receive a message within a specified timeout, it transitions to the candidate state.
- Candidate State:
In the candidate state, a node requests votes from other nodes in the system.
If a candidate receives votes from a majority, it transitions to the leader state.
- Leader State:
The leader manages log replication by sending heartbeat messages to maintain its leadership.
It appends new log entries and sends append entries messages to followers for replication.
- Log Replication:
Followers replicate the leader's log, responding with acknowledgments to confirm successful replication.
Log entries are committed when they have been replicated to a majority of nodes.
- Handling Failures:
Raft ensures fault tolerance by allowing nodes to detect leader failures and initiate new elections.
Only the most up-to-date log entries are committed, preventing inconsistencies.
## Use Cases
- Distributed Databases: Raft is widely used in distributed databases to ensure data consistency and reliability.
- Distributed Systems: Applications requiring consensus for critical decision-making leverage Raft for its simplicity and reliability.