From 0ceeaebfeedb13d258f2d6eb9a1545cc3ed7b63b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Fri, 23 Dec 2022 19:22:23 +0100 Subject: [PATCH] yay slides --- .vscode/extensions.json | 6 + .vscode/settings.json | 4 + slides.md | 317 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 327 insertions(+) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 slides.md diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..5d99402 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "marp-team.marp-vscode", + "yzhang.markdown-all-in-one" + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..07fbdd8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "markdown.marp.enableHtml":true, + "editor.formatOnSave": true, +} \ No newline at end of file diff --git a/slides.md b/slides.md new file mode 100644 index 0000000..2951ebd --- /dev/null +++ b/slides.md @@ -0,0 +1,317 @@ +--- +marp: true +paginate: true +author: Clément Contet, Laurent Fainsin +--- + + + +# The Raft Consensus Algorithm + + + + +![bg right:60%](https://raft.github.io/logo/solo.svg) + + + +--- + + + +
+ +# Consensus ? + +
+ +> Consensus algorithms allow a collection of machines to work as a coherent group that can survive the failures of some of its members. – RAFT authors + +
+ +- Accord sur l'état partagé (image système unique) +- Réparation autonome en cas de défaillance d'un serveur + - Une minorité de serveurs HS: pas de problème + - La majorité des serveurs HS: perte de disponibilité, maintien de la cohérence +- La clé pour construire des systèmes de stockage cohérents + + + +--- + +
+ +# Architecture typique des systèmes de consensus + +![bg 95%](https://ongardie.net/static/coreosfest/slides/rsm.svg) + + + +
+ +--- + +
+ +# Motivation ? + +
+ + + + + +Paxos domine le marché depuis ~25 ans (Leslie Lamport, 1989) +- Difficile à comprendre +- Difficile à implémenter + +> The dirty little secret of the NSDI community is that at most five people really, truly understand every part of Paxos ;-). – [NSDI](https://www.usenix.org/conference/nsdi23) reviewer + +> There are significant gaps between the description of the Paxos algorithm and the needs of a real-world system…the final system will be based on an unproven protocol. – [Chubby](https://research.google/pubs/pub27897/) authors + +--- + +
+ +# Pourquoi RAFT ? + +
+ + + +## Prendre des décisions de conception fondées sur la compréhensibilité + + + +- Décomposition du problème + + + +- Minimiser l'espace des états + - Traiter plusieurs problèmes avec un seul mécanisme + - Éliminer les cas particuliers + - Minimiser le non-déterminisme + - Maximiser la cohérence + +--- + +
+ +# Décomposition du problème + +
+ +1. Élection d'un leader (mandat) + - Sélectionner un serveur qui sera le leader + - Détecter les pannes, choisir un nouveau leader +2. Réplication des logs (fonctionnement normal) + - Le leader accepte les commandes des clients et les ajoute à son journal. + - Le leader réplique son journal aux autres serveurs (écrase les incohérences). +3. Sécurité + - Maintenir la cohérence des journaux + - Seuls les serveurs dont les journaux sont à jour peuvent devenir des leaders. + +--- + +
+ +# Minimiser l'espace des états + +
+ + + +![bg 90%](https://oracleblog.org/wp-content/uploads/2018/10/QQ%E6%88%AA%E5%9B%BE20181001142911.png) + + + +--- + +
+ +# Mandats + +
+ +![bg 90%](https://oracleblog.org/wp-content/uploads/2018/10/WX20181002-112612@2x.png) + + + +--- + +
+ +# Leader Election + +
+ +TODO + +--- + +
+ +# Election Correctness + +
+ +TODO + +--- + +
+ +# Démo interactive + +
+ + + + + +--- + +
+ +# Log Structure + +
+ +TODO + +--- + +
+ +# Log Inconsistencies + +
+ +TODO + +--- + +
+ +# Log Matching Property + +
+ +TODO + +--- + +
+ +# De nombreuses implémentations + +
+ +| Name | Primary Authors | Language | License | +| :------------- | :------------------------------------------------ | :--------- | :--------- | +| etcd/raft | Blake Mizerany, Xiang Li and Yicheng Qin (CoreOS) | Go | Apache 2.0 | +| go-raft | Ben Johnson (Sky) and Xiang Li (CMU, CoreOS) | Go | MIT | +| hashicorp/raft | Armon Dadgar (hashicorp) | Go | MPL-2.0 | +| copycat | Jordan Halterman | Java | Apache2 | +| LogCabin | Diego Ongaro (Stanford, Scale Computing) | C++ | ISC | +| akka-raft | Konrad Malawski | Scala | Apache2 | +| kanaka/raft.js | Joel Martin | Javascript | MPL-2.0 | + +--- + +
+ +# How much randomization is needed to avoid split votes? + +
+ +![bg 90%](https://ongardie.net/static/coreosfest/slides/timeoutcdf.svg) + +--- + +
+ +# User Study: Is Raft Simpler than Paxos? + +
+ + + +![bg 70%](https://ongardie.net/static/coreosfest/slides/studyscatter.svg) +![bg 90%](https://ongardie.net/static/coreosfest/slides/survey.svg)