26 पॉइंट द्वारा xguru 2023-07-04 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • बढ़ते हुए Discord ने अपने messaging storage DB को लगातार बदला
  • शुरुआत में एक single MongoDB था। नवंबर 2015 में मैसेजों की संख्या 10 करोड़ तक पहुँचने पर MongoDB की सीमाएँ सामने आने लगीं
  • 2017 में 12-node cluster वाले Cassandra पर माइग्रेट किया गया और उसमें अरबों मैसेज स्टोर किए गए
  • 2022 तक मैसेजों की संख्या खरबों में पहुँच गई, जिससे infrastructure 177 nodes तक बहुत बढ़ गया, latency की भविष्यवाणी करना मुश्किल हो गया और maintenance cost बहुत महंगी हो गई
  • Cassandra में Discord की मुख्य समस्या Hot Partition थी। DB का एक खास हिस्सा ओवरलोड हो जाता था, जिससे पूरे application की performance गिर जाती थी
    • Cassandra की internal data structure LSM tree का उपयोग करती है, इसलिए writes की तुलना में reads की cost अधिक पड़ती है, और एक single server पर कई users की simultaneous reads hotspot बनाकर performance को और खराब कर देती हैं
    • SSTable compaction जैसे maintenance tasks पूरे performance को प्रभावित करते थे, जिससे समस्या और बढ़ जाती थी
  • इसलिए विभिन्न components को एकीकृत करके architecture को फिर से डिज़ाइन किया गया
    • monolithic API, Rust में implement की गई data service, और ScyllaDB पर आधारित storage system (C++ में विकसित Cassandra-compatible DB) आदि का उपयोग किया गया
  • ScyllaDB अपनाने के बाद उल्लेखनीय सुधार हुए
    • p99 read latency, Cassandra के 40~125ms की तुलना में घटकर 15ms हो गई
    • p99 write latency, Cassandra के 5~70ms की तुलना में घटकर 5ms हो गई
  • Discord के engineers ने data service को Rust में लिखा
    • Rust की Fearless Concurrency क्षमता का उपयोग करके hot partition पर concurrent traffic को नियंत्रित किया गया
    • Rust की libraries और concurrency features Discord की requirements के लिए बहुत उपयुक्त रहीं
    • data service, API monolith और database cluster के बीच एक intermediary service की भूमिका निभाती है

3 टिप्पणियां

 
pmc7777 2023-07-05

मैं Discord के टेक स्टैक के बारे में ही देख रहा था, धन्यवाद!

 
secret3056 2023-07-04

Discord में अरबों संदेशों को स्टोर करने का तरीका

Go का GC काफ़ी बड़ा ओवरहेड है, इसलिए इसे ट्यून करने के तरीके लगातार जोड़े जा रहे हैं और memory arena जैसी चीज़ें भी लाई जा रही हैं.