CAP sagt, dass du dich zwischen Konsistenz und Verfügbarkeit entscheiden musst, wenn eine Netzwerkpartition deine Nodes trennt. Partitionstoleranz kannst du nicht abwählen, weil Netzwerke ausfallen, ob du damit planst oder nicht. Die eigentliche Frage ist also, was dein System während einer Partition tut: Writes ablehnen, um korrekt zu bleiben, oder sie annehmen und später abgleichen. Außerhalb einer Partition kannst du beides haben, weshalb Latenz der alltägliche Trade ist.
Warum Interviewer das fragen
Interviewer nutzen CAP, um Leute, die drei Buchstaben auswendig gelernt haben, von Leuten zu trennen, die verteilte Systeme betrieben haben. Das Signal ist zu verstehen, dass Partitionstoleranz nicht optional ist, dass die Wahl nur während einer Partition beißt, und dass du im Alltag eigentlich Latenz gegen Konsistenz tauschst. Ein konkretes Beispiel, wo du dich für ein Feature auf eine Seite geschlagen hast, macht die Antwort glaubwürdig.
So baust du deine Antwort auf
- Sag, dass Partitionstoleranz gegeben ist und keine Wahl.
- Rahm die eigentliche Wahl als Verhalten während einer Partition.
- Merk an, dass du außerhalb von Partitionen Latenz tauschst und nicht Verfügbarkeit.
- Gib je ein Feature, bei dem du dich für die eine und die andere Seite entschieden hast.
Beispielantwort
Mein Rahmen ist, dass Partitionstoleranz keine Wahl ist, weil Pakete verloren gehen und Switches ausfallen, egal wie meine Architektur aussieht. CAP fragt also eigentlich, was das System tut, während es geteilt ist: den Write ablehnen, damit niemand veraltete Daten liest, oder den Write annehmen und es danach in Ordnung bringen. Was mir an der PACELC-Erweiterung gefällt, ist, dass sie den Teil benennt, mit dem du täglich zu tun hast, nämlich dass du selbst bei komplett gesundem System Latenz gegen Konsistenz tauschst, weil ein Quorum-Write über Regionen hinweg Round Trips kostet. In einem Produkt, an dem ich gearbeitet habe, haben wir es pro Feature getrennt. Alles rund um Billing lief über den Primary mit einer Read-after-Write-Garantie, weil jemanden doppelt zu belasten sich nicht mit einer Entschuldigung reparieren lässt. Der Activity Feed hat von Replicas gelesen und durfte ein paar Sekunden hinterher sein, und das ist nie jemandem aufgefallen. Gleiches System, zwei Antworten, pro Feature gewählt statt als architektonische Religion.
Steht dieses Vorstellungsgespräch bald an? GhostPilot hört bei deinem Live-Call mit, erkennt die Frage in dem Moment, in dem sie gestellt wird, und bringt dir eine strukturierte Antwort in Echtzeit auf den Bildschirm. Probier es im nächsten Mock aus, oder hol dir einen $29 Session Pass, kein Abo, für den Ernstfall.
So funktioniert esNachfragen, mit denen du rechnen solltest
- Was fügt PACELC dem CAP-Theorem hinzu?
- Wie würdest du einem User Read-after-Write-Konsistenz auf Replicas geben?
- Was garantiert ein Quorum-Read und -Write tatsächlich?
Weitere Fragen für Softwareentwickler
Dein Interviewer stellt seine eigene Version davon. Kopier deine echte Stellenbeschreibung in den kostenlosen Question Predictor und bekomm die 20 Fragen, die diese Rolle am wahrscheinlichsten stellt, samt dem, worauf jede wirklich abzielt.
Meine Fragen vorhersagen