डिस्ट्रिब्यूटेड लॉक इम्प्लीमेंट करना
- Redis वेबसाइट पर Redlock algorithm मिला, जो दावा करता है कि यह Redis के ऊपर fault-tolerant distributed locking इम्प्लीमेंट करता है.
- Redlock के कई स्वतंत्र implementations पहले से मौजूद हैं, और संभव है कि कुछ लोग इस algorithm पर निर्भर हों, इसलिए लेखक ने अपने नोट्स साझा करने का फैसला किया.
- Redis अस्थायी और तेजी से बदलने वाले data को servers के बीच साझा करने में उपयोगी है, लेकिन इसे strong consistency और durability की आवश्यकता वाले data management क्षेत्र तक बढ़ाना चिंताजनक है.
लॉक का उद्देश्य
- लॉक का काम यह सुनिश्चित करना है कि कई nodes में से केवल एक ही कोई खास काम करे.
- अगर लॉक का उपयोग efficiency के लिए किया जा रहा है, तो एक single Redis instance का उपयोग करना बेहतर हो सकता है.
- अगर लॉक का उपयोग correctness के लिए किया जा रहा है, तो Redlock उपयुक्त नहीं है.
संसाधनों को लॉक से सुरक्षित करना
- डिस्ट्रिब्यूटेड सिस्टम में लॉक, multithreaded application के mutex से अलग होता है.
- यह इस बात को रोकता है कि जब एक client किसी file को पढ़कर, संशोधित करके, फिर से लिख रहा हो, तब कोई दूसरा client वही काम न कर सके.
fencing के जरिए सुरक्षित लॉक इम्प्लीमेंट करना
- fencing token का उपयोग करके और उसे write request में शामिल करके सुरक्षित लॉक इम्प्लीमेंट किया जा सकता है.
- Redlock में fencing token जनरेट करने की क्षमता नहीं है, इसलिए यह सुरक्षित नहीं है.
consensus के लिए समय का उपयोग
- asynchronous model में algorithms के विपरीत, Redlock समय के बारे में बहुत सी धारणाओं पर निर्भर करता है.
- अगर system clock असामान्य तरीके से काम करे, तो key expiration अपेक्षा से तेज या धीमा हो सकता है.
Redlock की समय-संबंधी धारणाओं को तोड़ना
- Redlock synchronous system model मानता है, और यह केवल तभी सही तरह काम करता है जब network delay, process pause, और clock error सीमित हों.
- GitHub की 90-second packet delay घटना जैसे मामले Redlock की safety को खतरे में डाल सकते हैं.
निष्कर्ष
- Redlock, efficiency-optimized locks के लिए अनावश्यक रूप से भारी है, और correctness की आवश्यकता वाले मामलों के लिए पर्याप्त रूप से सुरक्षित नहीं है.
- अगर correctness के लिए लॉक चाहिए, तो ZooKeeper जैसे उचित consensus system का उपयोग करना बेहतर है.
GN⁺ का सार
- Redlock algorithm डिस्ट्रिब्यूटेड सिस्टम में लॉक इम्प्लीमेंटेशन पर एक महत्वपूर्ण चर्चा प्रस्तुत करता है.
- यह लेख डिस्ट्रिब्यूटेड सिस्टम में समय-संबंधी धारणाओं और safety समस्याओं को उजागर करता है, और सही लॉक इम्प्लीमेंटेशन के महत्व को समझाता है.
- ZooKeeper जैसे वैकल्पिक systems की सिफारिश की गई है, और यह डिस्ट्रिब्यूटेड सिस्टम की जटिलता को समझने में मदद करता है.
1 टिप्पणियां
Hacker News टिप्पणियाँ