Microsoft Research की नई remote cache storage तकनीक 'Garnet'
(github.com/microsoft)-
Garnet परिचय
- Microsoft Research द्वारा विकसित नई remote cache storage, Garnet, कई विशिष्ट फायदे प्रदान करती है।
- लोकप्रिय RESP wire protocol पर आधारित होने के कारण, अधिकांश programming languages में उपलब्ध Redis clients को बिना किसी बदलाव के इस्तेमाल किया जा सकता है।
- यह बड़ी संख्या में client connections और छोटे batch workloads में बेहतर throughput और scalability प्रदान करती है, जिससे बड़े पैमाने के apps और services की लागत कम करने में मदद मिलती है।
- accelerated TCP सक्षम Azure cloud VM का उपयोग करके यह बेहद कम client latency हासिल करती है (99.9% पर 300 microseconds से कम)।
- नवीनतम .NET तकनीकों पर आधारित Garnet cross-platform, extensible है और इसका design आधुनिक है।
- यह .NET के समृद्ध library ecosystem का उपयोग करके API दायरा बढ़ाती है और optimization के लिए खुले अवसर प्रदान करती है।
-
फ़ीचर सारांश
- Garnet raw string, analytical और object operations सहित विभिन्न APIs लागू करती है।
- client-side RESP transactions और C# में लिखी गई server-side stored procedures के माध्यम से multi-key transactions संभाले जा सकते हैं।
- उपयोगकर्ता C# की सुविधा और सुरक्षा का लाभ उठाकर raw string और नए object types के लिए custom operations परिभाषित कर सकते हैं।
-
परफ़ॉर्मेंस प्रीव्यू
- वेबसाइट पर Garnet और प्रमुख open source cache storage के बीच तुलना के कुछ प्रमुख परिणाम प्रस्तुत किए गए हैं।
-
डिज़ाइन हाइलाइट्स
- Garnet का design cache storage stack को पूरी तरह से फिर से सोचता है, जिसमें network पर packets प्राप्त करने से लेकर database operations को parse और process करने तक, और storage interactions करने तक सब शामिल है।
- Garnet की network layer पिछले research project ShadowFax से प्रेरित shared memory design को अपनाती है।
- Garnet का storage design एक unified operation log द्वारा निर्धारित दो Tsavorite key-value stores से मिलकर बना है।
-
क्लस्टर मोड
- single-node execution के अलावा, Garnet cluster mode को support करती है, जो sharding और replication deployments बना और manage कर सकती है।
- cluster अभी भी development में है।
-
अगले कदम
- आप documentation site पर जा सकते हैं, या सीधे getting started section या releases section पर जा सकते हैं।
-
लाइसेंस
- यह project MIT license के तहत licensed है, और इसके लिए LICENSE file देखी जा सकती है।
-
प्राइवेसी
- privacy से संबंधित जानकारी Microsoft की privacy website पर मिल सकती है।
-
योगदान
- यह project contributions और suggestions का स्वागत करता है, और अधिकांश contributions के लिए CLA से सहमत होना आवश्यक है।
- Microsoft Open Source Code of Conduct अपनाया गया है, और Code of Conduct FAQ देखा जा सकता है, या अतिरिक्त सवालों/टिप्पणियों के लिए opencode@microsoft.com पर संपर्क किया जा सकता है।
-
ट्रेडमार्क
- इस project में project, product या service से जुड़े trademarks या logos शामिल हो सकते हैं, और Microsoft trademarks या logos का उपयोग Microsoft के trademark और brand guidelines के अनुसार होना चाहिए।
GN⁺ की राय
- Garnet एक नई cache storage है जो मौजूदा Redis clients के साथ compatible रहते हुए अधिक performance और scalability प्रदान करती है, इसलिए बड़े cloud services चलाने वाली कंपनियों के लिए यह आकर्षक हो सकती है।
- वास्तविक environments में यह तकनीक कितनी स्थिरता से काम करती है, और मौजूदा cache solutions की तुलना में यह कौन से व्यावहारिक लाभ देती है, इस पर दीर्घकालिक data की आवश्यकता है।
- Garnet का cluster mode अभी development में है, इसलिए बड़े पैमाने की deployments पर विचार करने वाले users के लिए यह एक महत्वपूर्ण बिंदु हो सकता है।
- चूँकि Garnet open source के रूप में उपलब्ध है, community contributions के माध्यम से इसमें अधिक features और improvements आने की संभावना है, जो इसकी maturity बढ़ाने में मदद कर सकती है।
- Garnet अपनाने से पहले मौजूदा systems के साथ compatibility, performance improvement के मुकाबले लागत, और संभावित migration cost पर विचार करना चाहिए।
1 टिप्पणियां
Hacker News राय
बेंचमार्क परफ़ॉर्मेंस चार्ट के अनुसार, Garnet का
GETकमांड throughput Dragonfly की तुलना में 10 गुना से भी अधिक है। 50% latency Dragonfly से थोड़ी अधिक है, लेकिन 99वें percentile latency Dragonfly से थोड़ी कम है। Garnet और Dragonfly, throughput और latency दोनों में Redis से काफ़ी बेहतर हैं, जो संकेत देता है कि Redis को काफ़ी performance optimization की ज़रूरत है.उन लोगों के लिए यह शानदार ख़बर है जिन्हें Microsoft Windows Server पर WSL2 पर निर्भर हुए बिना सीधे Redis (या यदि compatible हो तो उसका विकल्प) चलाना पड़ता है। पहले एक Redis port मौजूद था जिसे अब support नहीं मिलता, और उसमें memory usage की समस्या थी (संभवतः memory-mapped files की वजह से).
जब इसे वास्तविक non-Azure stack पर चलाया जाता है, तब यह Redis का एक प्रभावशाली विकल्प लगता है। असली दुनिया में इसका प्रदर्शन कैसा होगा, यह जानने की जिज्ञासा है.
Microsoft और .NET टीम को इतने प्रभावशाली infrastructure projects बनाते देखना दिलचस्प है। Yarp reverse proxy/API gateway वगैरह संभालता है, और अब memory cache के लिए Garnet भी है.
क्योंकि Garnet multithreaded है, इसलिए
MSETatomic नहीं है। अगरMSETका atomic version चाहिए, तो उसे transaction (stored procedure) के रूप में व्यक्त करना होगा.यहाँ की टिप्पणियाँ देखकर लगता है कि अब कोई memcached का इस्तेमाल नहीं करता?
Microsoft Research कभी-कभी बेहद प्रभावशाली projects लेकर आता है। R&D करते हुए वेतन पाना मज़ेदार होगा। अच्छा होगा अगर बड़ी कंपनियाँ उद्योग के लिए उपयोगी ऐसे R&D शैली के projects और ज़्यादा करें। अगर Hashicorp बाज़ार में आए, तो उम्मीद है कि कोई अच्छी कंपनी उसे अधिग्रहित करे.
यह project सच में बहुत अच्छा लग रहा है। उम्मीद है कि अंततः यह "Azure Cache for Redis" resource की जगह लेगा। अभी यह धीमा है, Windows पर चलने के लिए बनाए गए Redis के एक fork पर आधारित है, और instance बनाने में लगभग एक घंटा लग जाता है.
जिज्ञासा है कि यह system कहाँ अच्छा प्रदर्शन नहीं करता। छोटे instance types पर इसके benchmarks भी देखना चाहूँगा। 72vCPU काफ़ी बड़ा instance है.