21 पॉइंट द्वारा xguru 2024-04-10 | 1 टिप्पणियां | WhatsApp पर शेयर करें

बनाने की प्रेरणा

  • Go cache libraries में वास्तव में contention-free विकल्प नहीं है। ज़्यादातर बस mutex और eviction policy वाले map भर हैं
  • इसलिए उनकी गति दूसरी भाषाओं के caches (जैसे Caffeine) तक नहीं पहुँचती
  • Dgraph labs का सबसे तेज़ cache Ristretto प्रतिस्पर्धियों से अधिकतम 30% तेज़ था (Otter इससे कहीं तेज़ है), लेकिन उसका hit ratio अच्छा नहीं था
  • वास्तविक applications में आप cache library की performance bottleneck से नहीं टकराना चाहते, इसलिए यह समस्या बन सकती है
  • इसी कारण सबसे तेज़ और उपयोग में सबसे आसान cache बनाना लक्ष्य था

मुख्य विशेषताएँ

  • सरल API: Builder में मनचाहे parameters सेट करें और इस्तेमाल शुरू करें
  • स्वत: configuration: application की parallel processing क्षमता के आधार पर अपने-आप configure होता है
  • Generics: key के रूप में किसी भी comparable type को सुरक्षित रूप से इस्तेमाल किया जा सकता है, और value के रूप में किसी भी type का उपयोग किया जा सकता है
  • TTL: expired values अपने-आप cache से हटा दिए जाते हैं
  • cost-based eviction: हर item की cost के आधार पर eviction को support करता है
  • बेहतरीन throughput: यह इस समय प्रतिस्पर्धी products (Theine, Ristretto, Bigcache, Fastcache) से काफ़ी आगे सबसे तेज़ cache library है
  • शानदार hit ratio: बेहतर परिणाम दिखाने वाला नया S3-FIFO algorithm इस्तेमाल किया गया है

1 टिप्पणियां

 
xguru 2024-04-10

नाम कुछ जाना-पहचाना लगा तो खोजा, पता चला ऐसा भी एक था
Otter: कॉन्टेक्स्ट के भीतर कमांड ट्यूनिंग करने में सक्षम मल्टीमॉडल मॉडल
अब शायद जानवरों के नाम पर कुछ बनाना बंद कर देना चाहिए। बहुत ही दुर्लभ न हो तो ज़्यादातर नाम पहले से मौजूद हैं।

AI विश्लेषण की राय भी अच्छी लगी, इसलिए जोड़ रहा हूँ।

GN⁺ की राय

  • यह open source cache लाइब्रेरी Go डेवलपर्स के लिए काफ़ी उपयोगी लगती है। खासकर high performance की ज़रूरत वाली सेवाओं में यह मौजूदा cache लाइब्रेरी की performance सीमाओं को पार करने का एक विकल्प बन सकती है
  • पेपर के आधार पर algorithm लागू करके मौजूदा लाइब्रेरी की तुलना में प्रतिस्पर्धी performance हासिल की गई है, यह प्रभावशाली है। हालांकि वास्तविक सेवा में लागू करने से पहले अलग-अलग benchmark के ज़रिए performance की जाँच करना ज़रूरी होगा
  • simple API की वजह से इसे आसानी से इस्तेमाल किया जा सकता है, और यह नए Go versions के generics को support करती है, इसलिए developer convenience भी अच्छी दिखती है
  • मिलती-जुलती Go cache लाइब्रेरी में groupcache, fastcache, ristretto, freecache आदि हैं। performance विशेषताओं और usability की अच्छी तरह तुलना करनी होगी
  • यह व्यक्तिगत/छोटी सेवाओं की तुलना में बड़े ट्रैफ़िक को संभालने वाली सेवाओं में अधिक उपयोगी लगती है। cache size कितना रखना है, eviction cycle कैसी होनी चाहिए, जैसी बातों पर अच्छे से विचार करना होगा। साथ ही cache पर बहुत अधिक निर्भरता consistency समस्याएँ पैदा कर सकती है, इसलिए सावधानी ज़रूरी है