Garnet – Microsoft Research का एक नया रिमोट कैश-स्टोर
प्रदर्शन & आर्किटेक्चर
- बेंचमार्क दिखाते हैं कि Garnet का GET थ्रूपुट Dragonfly और Redis से काफी अधिक है, और tail latencies भी तुलनीय या बेहतर हैं; कुछ लोग मानते हैं कि Redis को बड़े अनुकूलनों की जरूरत हो सकती है।
- C# में,
unsafeऔर लो-लेवल मेमोरी कार्य के व्यापक उपयोग के साथ इम्प्लीमेंट किया गया है; कई लोगों के लिए यह इस बात का प्रमाण है कि .NET, सावधानीपूर्वक ट्यून करने पर C/C++ प्रदर्शन की बराबरी कर सकता है। - स्टोरेज लेयर Tsavorite (FASTER से forked) thread scalability, tiered storage, non-blocking checkpoints, logging, transactions, और बेहतर memory reuse प्रदान करती है।
- कुछ लोगों को संदेह है कि लाभ भाषा-चयन से कम और data structures/algorithms तथा multithreading से अधिक आ रहे हैं।
- यह प्रश्न अभी भी बना हुआ है कि यह कहाँ खराब प्रदर्शन करता है और 72 vCPU वाले benchmark box की तुलना में छोटे, कम “beefy” instances पर इसका व्यवहार कैसा होगा।
Redis compatibility & semantics
- इसे मौजूदा Redis clients के साथ काम करने वाला बताया गया है, लेकिन API compatibility पूरी नहीं है; streams support स्पष्ट नहीं है।
- Redis single-threaded है और हर command के लिए पूरी तरह atomic है, जबकि Garnet multi-threaded है और स्पष्ट रूप से बताता है कि
MSETतब तक atomic नहीं है जब तक उसे transaction के रूप में व्यक्त न किया जाए। कुछ लोग इसे “drop-in replacement” के लिए एक गंभीर चेतावनी मानते हैं। - Redis को अभी भी अधिकांश उपयोग मामलों के लिए “काफी अच्छा” और अत्यंत battle-tested माना जाता है; कई लोग Garnet के आंकड़ों के बावजूद उसी पर टिके रहना पसंद करते हैं।
- Redis clustering single-threaded सीमाओं को कम करती है, लेकिन अपनी जटिलता भी लाती है।
.NET ecosystem & GC चर्चा
- चर्चा में यह भी सामने आता है कि .NET और Java JITs, GC, और profiling कभी-कभी हाथ से लिखे C/C++ कोड से बेहतर प्रदर्शन कर सकते हैं, खासकर polymorphism और managed memory strategies के साथ।
- .NET के spans, structs, unsafe pointers, और off-heap विकल्पों को शक्तिशाली performance knobs कहा गया है; escape analysis और stack allocation details पर बहस है।
- library ecosystem maturity और toolchain को लेकर असहमति है: कुछ कहते हैं .NET libraries पूरी और उच्च गुणवत्ता वाली हैं; अन्य JVM की तुलना में gaps देखते हैं और “सबसे अच्छा” अनुभव पाने के लिए Visual Studio पर भारी निर्भरता नोट करते हैं।
Azure, Windows, और deployment
- Windows Server और Windows containers पर एक native, high-performance cache के रूप में Garnet को लेकर मजबूत रुचि है, जिससे WSL या archived Redis ports से बचा जा सके।
- कुछ लोग इसे Azure App Service या इसी तरह के सिस्टम में embedded देखना चाहते हैं, जहाँ node-local caches पास के nodes पर replicated हों, और तर्क देते हैं कि latency में नेटवर्क hops का ही सबसे बड़ा योगदान है।
- K8s + Cilium “local redirect” patterns का उल्लेख अन्य caches के साथ locality benefits पाने के तरीके के रूप में किया गया है।
Licensing, governance & trust
- Garnet MIT-licensed है लेकिन इसके लिए CLA चाहिए; कुछ इसे legal housekeeping मानते हैं, जबकि अन्य इसे relicensing सक्षम करने के रूप में देखते हैं।
- Microsoft की patent posture और Microsoft Research projects के अक्सर रुक जाने को लेकर चिंताएँ उठाई गईं, लेकिन यह भी कहा गया कि Garnet पहले से internal use में है और Azure service बन सकता है।
- कई लोगों ने Garnet के open license की तुलना Redis के बदलते licensing और ecosystem forks से की, हालांकि कुछ लोग history और simplicity के कारण Redis पर अधिक भरोसा करते हैं।