पाठ 22 / 28

Replication, Quorums और Read-Your-Writes

मशीनें विफल होने पर भी सेवा जारी रखें, और consistency के बारे में तर्क करें।

Copies उपलब्धता देती हैं, quorums consistency

Replication हर shard की कई प्रतियाँ अलग मशीनों पर रखता है: reads किसी भी प्रति का उपयोग कर सकते हैं (ज़्यादा throughput), और मशीन की विफलता डेटा या उपलब्धता नहीं खोती। कई प्रतियों के साथ लिखावट को उनमें से कई तक पहुँचना होता है, और reads पुरानी प्रति देख सकते हैं। कई systems N प्रतियों में से लिखावट acknowledgements W और पढ़ने वाली replicas R चुनने देते हैं। यदि W + R > N, तो लिखने और पढ़ने के समूह overlap करते हैं, इसलिए read को नवीनतम acknowledged लिखावट दिखती है (read-your-writes); छोटे मान तेज़ हैं पर पुराना डेटा लौट सकता है। तय करें कि आपका application कितनी पुरानी स्थिति सह सकता है (खोज box सेकंड सह सकता है; access-control बदलाव नहीं) और विफलता अभ्यास परखें: एक node मारें, जाँचें कि queries चलती रहती हैं और recall बना रहता है, और node सही ढंग से वापस जुड़ता है।

Quorum अंकगणित, चलाकर

मैंने यह सादा-Python (सिर्फ़ standard library) उदाहरण चलाया। 3 replicas के साथ 1 पर लिखना और 1 से पढ़ना ताज़ा लिखावट चूक सकता है; 2 और 2 हमेशा overlap करते हैं; सब 3 पर लिखने से 1 से पढ़ना सुरक्षित है; 5 replicas के साथ 3 और 3 भी overlap करते हैं। नियम W + R > N है।

def quorum_ok(replicas, write_acks, read_replicas):
    """Read-your-writes is guaranteed when the write set and read set must overlap."""
    return write_acks + read_replicas > replicas

for n, w, r in [(3, 1, 1), (3, 2, 2), (3, 3, 1), (5, 3, 3)]:
    print(f"replicas={n} write_acks={w} read_from={r} -> overlap guaranteed: {quorum_ok(n, w, r)}")

Output:

replicas=3 write_acks=1 read_from=1 -> overlap guaranteed: False
replicas=3 write_acks=2 read_from=2 -> overlap guaranteed: True
replicas=3 write_acks=3 read_from=1 -> overlap guaranteed: True
replicas=5 write_acks=3 read_from=3 -> overlap guaranteed: True

विफलता का अभ्यास करें

Staging में एक node मारें और पुष्टि करें कि queries चलती रहती हैं और node सही ढंग से जुड़ता है। यह घटना में न सीखें।

त्वरित जाँच: N=3 प्रतियों के साथ कौन-सी setting read-your-writes की गारंटी देती है?

  • Replication इसकी गारंटी नहीं दे सकता
  • W=1 और R=1
  • W=0 और R=3
  • W=2 और R=2
Answer

W=2 और R=2 — W + R > N का अर्थ समूह overlap करते हैं: 2 + 2 > 3।