Aria कंपनी का आंतरिक मैसेजिंग फ्रेमवर्क और होस्टेड सिस्टम है, जो प्रतिदिन कई टेराबाइट डेटा संसाधित करता है। क्लाइंट्स लाइव मैसेज स्ट्रीम प्राप्त करने के लिए Aria की सदस्यता लेते हैं। उपयोग तेजी से बढ़ने के कारण, Aria टीम को बढ़ती डेटा मात्रा और थ्रूपुट के अनुरूप सिस्टम को फिर से डिज़ाइन करना पड़ा। इस गर्मी में इंटर्न Theodor Totev ने एक विशेष उपयोग-मामले पर काम किया: क्लाइंट्स के लिए केवल मैसेज के एक उपसमूह को पढ़ना सस्ता बनाना। इंडेक्सिंग और ट्री-स्प्लिटिंग के उनके काम से प्रोडक्शन वर्कलोड पर CPU उपयोग 30% घटा, जबकि ऐसे महत्वपूर्ण सिस्टम के लिए आवश्यक उच्च सटीकता बनी रही।
जब Aria TCP के माध्यम से मैसेज भेजता है, तो वह हाल के मैसेज, जिन्हें स्ट्रीम टिप कहा जाता है, इन-मेमोरी रिंग बफ़र में रखता है। जो क्लाइंट पीछे रह जाते हैं, वे इस बफ़र से हाल के मैसेज मांगकर पकड़ बना सकते हैं, इस प्रक्रिया को टिप रिकवरी कहते हैं। चुनौती यह है कि Aria पूरी मैसेज स्ट्रीम संग्रहीत करता है, जबकि क्लाइंट्स को अक्सर उसका केवल छोटा हिस्सा चाहिए। Aria स्ट्रीम को टॉपिक के आधार पर फ़िल्टर करता है, और क्लाइंट्स अलग-अलग टॉपिक या पूरे टॉपिक सबट्री की सदस्यता ले सकते हैं। मूल तरीका स्ट्रीम का एक सरल रैखिक पास था। यह एल्गोरिदमिक रूप से अक्षम था, पर CPU कैश-फ्रेंडली होने के कारण तेज़ था। टिप रिकवरी करने वाले क्लाइंट्स की संख्या बढ़ने पर कुछ सर्वर 100% CPU उपयोग तक पहुँच गए, जिससे क्लाइंट्स टिप से छूट गए और पकड़ नहीं बना पाए।
हर टॉपिक के लिए इंडेक्स बनाने का विचार खारिज किया गया, क्योंकि Aria इंस्टेंस में लगभग दस लाख टॉपिक हो सकते हैं। इसके बजाय Theodor ने हर टॉपिक पार्टिशन के लिए इंडेक्स बनाया, जो एक ही दो-खंड उपसर्ग वाले सभी टॉपिक्स को समूहित करता है। हर पार्टिशन का इंडेक्स स्ट्रीम में उसके मैसेज की स्थिति दर्ज करता है। जब क्लाइंट मैसेज मांगता है, तो Aria मिन-हीप का उपयोग करके संबंधित इंडेक्स का n-वे मर्ज करता है और केवल अनुरोधित पार्टिशन के लिए क्रमबद्ध स्ट्रीम पुनर्निर्मित करता है।
इस काम में बेंचमार्किंग केंद्रीय थी। Theodor ने टॉपिक पार्टिशन की संख्या, इंटरलीविंग की मात्रा और रीडर्स की संख्या जैसे चरों की जाँच के लिए प्रोफाइलिंग टूल बनाया। प्रारंभिक कार्यान्वयन की प्रोफाइलिंग में पता चला कि मिन-हीप सबसे बड़ी बाधा थी।
स्रोत: Hacker News · HeadlinesBriefing द्वारा सारांशित