डिस्कॉर्ड ने वेबसॉकेट ट्रैफिक 40% तक कम किया
डिस्कॉर्ड, एक लोकप्रिय संचार मंच, अपने हाथ में एक महत्वपूर्ण समस्या थी। उसकी रियल-टाइम संचार सेवा, गेटवे, संसाधनों का अधिक से अधिक उपभोग कर रही थी, जिससे लागत में वृद्धि हो रही थी और Hundreds of thousands of dollars का अनुमान लगाया गया था। यह कंपनी के लिए एक प्रमुख मुद्दा था जब तक वे ट्रैफिक को 40% तक कम करने का तरीका नहीं ढूँढा।
डिस्कॉर्ड की रियल-टाइम संचार सेवा
गेटवे, एक सेवा जो क्लाइंट्स को तत्काल अपडेट प्रदान करती है, 2017 से ज़िलिब कंप्रेशन का उपयोग कर रही है। ज़िलिब एक व्यापक रूप से इस्तेमाल की जाने वाली डेटा कंप्रेशन लाइब्रेरी है जो लॉसलेस कंप्रेशन प्रदान करती है। यह संक्षिप्त, तेज और पोर्टेबल है, जिससे यह विभिन्न एप्लिकेशन के लिए उपयुक्त है।
ज़िलिब कंप्रेशन कैसे काम करता है
ज़िलिब कंप्रेशन एलज़ेड 77 और हफमैन कोडिंग को जोड़ती है। एलज़ेड 77 कंप्रेशन एक स्लाइडिंग विंडो ऑफ़ साइज़ एन ऑफ़ पिछले देखे गए डेटा और एक लुक-आहेड विंडो ऑफ़ साइज़ एम में काम करता है। यह लुक-आहेड विंडो और स्लाइडिंग विंडो के बीच सबसे लंबे मैच की तलाश करता है। आउटपुट एक सीक्वेंस ऑफ़ लिटरल्स और स्लाइडिंग विंडो के पीछे रेफरेंसेज़ का होता है।
हफमैन कोडिंग एक डेटा एन्कोडिंग विधि है जिसमें वेरिएबल-लेंथ कोड्स का उपयोग किया जाता है। यह अधिक बार आने वाले चारACTERS के लिए छोटे कोड्स असाइन करता है, जिससे डेटा का साइज़ कम होता है।
स्ट्रीमिंग कंप्रेशन
डिस्कॉर्ड की टीम ने स्ट्रीमिंग कंप्रेशन के साथ प्रयोग किया, जिसमें कंप्रेसर प्रत्येक संदेश के लिए हISTORICAL डेटा पर निर्भर करता है। इससे कंप्रेसर को تاریخی डेटा के आधार पर संपीड़न का अनुकूलन करने में मदद मिलती है।
हालांकि, डिस्कॉर्ड की गेटवे सेवा एक पुरानी भाषा में लिखी गई थी, और वे इस कार्यक्षमता के लिए किसी मौजूदा बाइंडिंग को नहीं ढूँढ पाए। इस सीमा को पार करने के लिए, टीम ने रिपॉजिटरी को फोर्क किया और स्ट्रीमिंग सपोर्ट जोड़ा। बाद में उन्होंने इस सुधार को मूल परियोजना में वापसcontriuted।
प्रयोग और सुधार
डिस्कॉर्ड की टीम ने विभिन्न कंप्रेशन एल्गोरिदम और पараметर्स के साथ प्रयोग किया ताकि सबसे अच्छा संपीड़न अनुपात हासिल किया जा सके। họ ने चेन लॉक, हैश लॉक और विंडो लॉक जैसे तीन प्रमुख पараметर्स पर ध्यान केंद्रित किया। इन पараметर्स में संपीड़न गति, मेमोरी उपयोग और संपीड़न अनुपात के बीच एक ट्रेड-ऑफ है।
विभिन्न सेटिंग्स के साथ प्रयोग करने के बाद, वे थोड़ा सा डिफॉल्ट सेटिंग्स से ऊपर की ओर गये, जिससे संपीड़न में सुधार हुआ और उनके गेटवे नोड मेमोरी प्रतिबंध के भीतर आराम से फिट हो गया।
पैसिव अपडेट वी2
टीम ने नोटिस किया कि पैसिव अपडेट वी1, जिसका गेटवे बैंडविड्थ का 35% हिस्सा था, अनावश्यक जानकारी送 रहा था। उन्होंने पैसिव अपडेट वी2 बनाया, जिसमें केवल आवश्यक जानकारी भेजी जाती है, जिससे पैसिव अपडेट उपयोग 35% से घट कर केवल 5% हो गया।
कार्यान्वयन और रोलआउट
टीम ने डेस्कटॉप उपयोगकर्ताओं के लिए जेडस्टेंडर्ड कार्यान्वित किया, जिसमें प्रत्येक प्लेटफॉर्म के लिए उचित जेडस्टेंडर्ड बाइंडिंग्स को ढूँढना और एकीकृत करना शामिल था। उन्हें अपने स्वयं के रुस्ट बाइंडिंग्स भी लिखने पड़े。
इस तरह के बड़े बदलाव के जोखिम को कम करने के लिए, रोलआउट एक फीचर फ्लैग के पीछे किया गया, जिससे किसी भी मुद्दे के आने पर जल्दی से रोलबैक किया जा सके, परिणामों की वैद्यता की जाँच हो सके और उपयोगकर्ता अनुभव को नकारात्मक प्रभावित न हो सके।
परिणाम
सभी परिवर्तनों के बाद, डिस्कॉर्ड ने अपने गेटवे बैंडविड्थ को लगभग 40% तक कम कर दिया। यह एक बड़ी जीत है, जिससे उन्हें Hundreds of thousands of dollars प्रति वर्ष की बचत हुई है।