2 पॉइंट द्वारा GN⁺ 2024-10-21 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • डिस्ट्रिब्यूटेड सिस्टम्स सीखने की कुंजी किसी खास तकनीक से अधिक सोचने के तरीके में बदलाव में है, और यह सूची इंटरनेट-स्केल सिस्टम डिज़ाइन करते समय सामने आने वाली समस्याओं को विषयवार समझने में मदद करती है
  • सामग्री को डिज़ाइन दर्शन, latency, Amazon और Google के बड़े पैमाने के सिस्टम केस स्टडी, consistency models, theory, tools, infrastructure, storage, consensus algorithms, gossip protocols, और P2P में बाँटा गया है
  • CAP, 2PC से बचाव, eventual consistency, और optimistic replication यह दिखाते हैं कि consistency और availability दोनों को एक साथ अधिकतम पाना कठिन operational trade-off है
  • Google पेपर्स का संग्रह MapReduce, Chubby, GFS, BigTable, Dremel, Spanner, Photon, Mesa जैसे बड़े पैमाने के डिस्ट्रिब्यूटेड सिस्टम्स के implementation उदाहरण देता है, और Amazon की सामग्री service-based architecture में बदलाव के साथ संगठनात्मक संस्कृति को भी कवर करती है
  • Paxos, Raft, FLP, Lamport Clock, Byzantine Generals, Chord, Kademlia, और Pastry तक क्रम से पढ़ने पर consensus, time, replication, और routing से जुड़ी समस्याओं को एक प्रवाह में समझा जा सकता है

सोचने का तरीका और डिज़ाइन दृष्टिकोण

  • डिस्ट्रिब्यूटेड सिस्टम्स में सबसे कठिन हिस्सा सोचने के तरीके को बदलना है, और यह सूची उसी बदलाव में मदद करने वाले लेखों और पेपर्स से शुरू होती है
  • “Thought Provokers” इस दृष्टिकोण पर केंद्रित है कि सिर्फ बड़े सर्वर, डेटाबेस, और transactions से हर समस्या हल नहीं होती

Latency और इंटरनेट-स्केल services

  • “Latency” इस आधार पर चर्चा करता है कि latency हमेशा मौजूद रहती है, और इससे architecture पर क्या असर पड़ता है
  • Amazon की सामग्री सिर्फ तकनीकी विकल्पों तक सीमित नहीं है, बल्कि service-based architecture में बदलाव के दौरान बने culture और organization को भी देखती है

Google सिस्टम पेपर्स और consistency models

  • Google का यह संग्रह MapReduce से Mesa तक डिस्ट्रिब्यूटेड सिस्टम्स की “rocket science” मानी जाने वाली बड़े पैमाने की सिस्टम रिसर्च को एक जगह लाता है
    • MapReduce
    • Chubby Lock Manager
    • Google File System
    • BigTable
    • Dremel: web-scale datasets का interactive analysis
    • Megastore: data centers के बीच low-latency Paxos implementation के लिए डिज़ाइन
    • Spanner: scalable, multi-version, globally distributed, और synchronously replicated Google database
    • Photon: continuous data streams के fault-tolerant और scalable joins
    • Mesa: Google के internet advertising business की महत्वपूर्ण measurement data को स्टोर करने वाला geo-replicated, near real-time, scalable data warehouse
  • “Consistency Models” ऐसी सामग्री का संग्रह है जो सिस्टम के वातावरण के हिसाब से consistency और availability के बीच सही trade-off खोजने पर केंद्रित है

थ्योरी, भाषाएँ, infrastructure, storage

Consensus, gossip, P2P

  • Paxos से जुड़ी सामग्री इस आधार से शुरू होती है कि Paxos को समझना खुद में कठिन है, और पहले Paxos Made Simple पढ़ने, फिर बाकी पेपर्स के बाद उसे दोबारा पढ़ने की सलाह देती है
  • अन्य consensus पेपर्स WAN वातावरण और Paxos के विकल्पों को साथ में देखते हैं
  • gossip protocol सामग्री epidemic-style behavior वाले communication, monitoring, और membership protocols को एकत्र करती है
  • P2P सामग्री distributed lookup, routing, storage, और application-level multicast को क्रम से समझाती है
    • Chord: internet applications के लिए scalable P2P lookup protocol
    • Kademlia: XOR metric आधारित P2P information system
    • Pastry: बड़े P2P systems के लिए scalable, distributed object location और routing
    • PAST: Pastry के ऊपर बना large-scale persistent P2P storage utility
    • SCRIBE: Pastry के ऊपर wide-area messaging के लिए large-scale distributed application-level multicast infrastructure

1 टिप्पणियां

 
GN⁺ 2024-10-21
Hacker News की राय
  • यह सूची थोड़ी पुरानी लगती है, और Heidi Howard की distributed consensus reading list की सिफारिश करता/करती हूँ
    https://github.com/heidihoward/distributed-consensus-reading...

  • इस क्षेत्र की “rocket science” के तौर पर Google के MapReduce को पेश किया गया देख कर कुछ अजीब लगा
    जाँचने पर पता चला कि यह सूची 2014 की सामग्री है [1], इसलिए अब हालात काफी बदल चुके हैं—इस बात का ध्यान रखना चाहिए
    [1] https://news.ycombinator.com/from?site=dancres.github.io

    • यह जानने के बाद संदर्भ साफ हो गया। इस सूची को निकले 10 साल हो चुके हैं, और उस समय भी MapReduce पेपर आए हुए पहले ही 10 साल बीत चुके थे
  • करीब 10 साल पहले बनाई गई distributed systems reading lists की meta list मौजूद है
    यह सूची भी मैंने लगभग 10 साल देर से जोड़ी थी, और मैंने जो आइटम इकट्ठा किए थे उनमें से कितने आज भी live हैं, यह तो भगवान ही जाने
    https://gist.github.com/macintux/6227368

  • मूल पोस्ट की सूची का उल्लेख करने वाला https://ferd.ca/a-distributed-systems-reading-list.html भी साथ में देखने लायक है

    • यह स्पष्ट करना ज़रूरी है कि ऐसी सूचियाँ असल में किसके लिए हैं। मेरे हिसाब से यह सिर्फ़ “distributed systems सीखने की कोशिश कर रहे” लोगों के लिए सूची नहीं है
      जो लोग सीमाओं को आगे बढ़ा रहे हैं या नए approaches खोज रहे हैं, उनके लिए यह मददगार हो सकती है, लेकिन बाकी लोगों के लिए यह ऐसा है जैसे आपने quadratic equation हल करना पूछा और जवाब में category theory के 100 पेपर मिल गए
      Fred Herbert की सूची मूल पोस्ट से ज़्यादा नई है, लेकिन उनके अपने शब्दों में भी यह पूरी नहीं है। वे “Designing Data-Intensive Applications” को अनिवार्य बताते हैं, फिर भी कुछ ऐसा कहते हैं कि उसे सच में समझने के लिए पहले बहुत सारे पेपर पढ़ने होंगे
      जब ऐसी सूचियों को समझ की prerequisite की तरह पेश किया जाता है, तो यह entry barrier बढ़ाने जैसा महसूस हो सकता है
      दशकों से दूसरों के किए काम की बदौलत, एक प्रभावी Linux user बनने के लिए आपको nanokernel पर 100 पेपर पढ़ने की ज़रूरत नहीं है। अच्छा operating system शुरू से बनाना अब भी मुश्किल है, लेकिन 99% लोगों को ऐसा करने की ज़रूरत नहीं होती; वे मौजूद tools को कुशलता से इस्तेमाल कर सकते हैं
      distributed systems के साथ भी यही बात है: अगर आप frontier को आगे नहीं बढ़ा रहे हैं, तो इसे इतना कठिन होने की ज़रूरत नहीं है
      अगर आप research में गहराई तक जाने के बजाय practical experience चाहने वाले software engineer हैं, तो NATS [1] या YugaByte [2] से कुछ बनाकर देखें, या [3] जैसा hands-on tutorial करें
      “Designing Data-Intensive Applications” भी पढ़ने लायक है। यह उन किताबों में से है जो बार-बार पढ़ने पर और बेहतर लगती हैं, इसलिए भले ही आपने 100 पेपर न पढ़े हों, इसे सीधे पढ़ सकते हैं। जहाँ समझ न आए, सवाल पूछें और मदद लें; बहुत बड़ी reading list को छोड़ देना भी ठीक है
      1: https://nats.io/
      2: https://www.yugabyte.com/
      3: https://pragprog.com/titles/tjgo/distributed-services-with-g...
  • फिर भी CRDT technology का कोई ज़िक्र नहीं?

    • क्योंकि यह 10 साल पुरानी सामग्री है