Distributed lock manager
অপারেটিং সিস্টেমগুলি সম্পদগুলিতে প্রবেশাধিকার সংগঠিত এবং ক্রমিক করতে লক ম্যানেজারদের ব্যবহার করে। একটি ডিস্ট্রিবিউটেড লক ম্যানেজার (ডি. এল. এম) একটি ক্লাস্টারের প্রতিটি মেশিনে চলে, একটি ক্লাস্টার-ওয়াইড লক ডাটাবেসের অভিন্ন অনুলিপি সহ। এইভাবে একটি ডি. এল. এম সফ্টওয়্যার অ্যাপ্লিকেশন সরবরাহ করে যা ভাগ করা সংস্থানগুলিতে তাদের অ্যাক্সেসগুলি সিঙ্ক্রোনাইজ করার উপায় সহ একাধিক মেশিনে একটি ক্লাস্টার জুড়ে বিতরণ করা হয়। ডি. এল. এমগুলি বেশ কয়েকটি সফল ক্লাস্টারযুক্ত ফাইল সিস্টেমের ভিত্তি হিসাবে ব্যবহৃত হয়েছে, যেখানে একটি ক্লাস্টারের মেশিনগুলি কর্মক্ষমতা এবং প্রাপ্যতার জন্য উল্লেখযোগ্য সুবিধা সহ একটি ইউনিফাইড ফাইল সিস্টেমের মাধ্যমে একে অপরের স্টোরেজ ব্যবহার করতে পারে। অংশগ্রহণকারী কম্পিউটারগুলির মধ্যে ডিস্ক ক্যাশে সমন্বয়ের সমস্যা সমাধান করার মাধ্যমে প্রধান কার্য সম্পাদনের সুবিধা পাওয়া যায়। ডি. এল. এম শুধুমাত্র ফাইল লক করার জন্যই নয়, সমস্ত ডিস্ক অ্যাক্সেসের সমন্বয়ের জন্যও ব্যবহৃত হয়। ভিএমএসক্লাস্টার, প্রথম ক্লাস্টারিং সিস্টেম যা ব্যাপকভাবে ব্যবহৃত হয়েছিল, ঠিক এইভাবে ওপেনভিএমএস ডি. এল. এম-এর উপর নির্ভর করেছিল। সম্পদ ডি. এল. এম একটি সম্পদের একটি সাধারণ ধারণা ব্যবহার করে, যা এমন কিছু সত্তা যেখানে ভাগ করে নেওয়ার প্রবেশাধিকার নিয়ন্ত্রণ করা আবশ্যক। এটি একটি ফাইল, একটি রেকর্ড, ভাগ করা স্মৃতির একটি ক্ষেত্র বা অ্যাপ্লিকেশন ডিজাইনার বেছে নেওয়া অন্য যে কোনও কিছুর সাথে সম্পর্কিত হতে পারে। সম্পদের একটি শ্রেণিবিন্যাস সংজ্ঞায়িত করা যেতে পারে, যাতে লকিংয়ের বেশ কয়েকটি স্তর প্রয়োগ করা যায়। উদাহরণস্বরূপ, একটি অনুমানমূলক ডাটাবেস একটি সম্পদ শ্রেণিবিন্যাসকে নিম্নরূপ সংজ্ঞায়িত করতে পারেঃ ডাটাবেস টেবিল রেকর্ড ফিল্ড একটি প্রক্রিয়া তারপর সামগ্রিকভাবে ডাটাবেসে এবং তারপর ডাটাবেসের নির্দিষ্ট অংশে লক অর্জন করতে পারে। একটি অধস্তন সম্পদ লক করার আগে একটি মূল সংস্থানের উপর একটি লক অবশ্যই পেতে হবে। লক মোড একটি ভি. এম. এস. সি. ক্লাস্টারের মধ্যে চলমান একটি প্রক্রিয়া একটি সংস্থানের উপর একটি লক পেতে পারে। ছয়টি লক মোড রয়েছে যা মঞ্জুর করা যেতে পারে এবং এগুলি এক্সক্লুসিভিটির স্তর নির্ধারণ করে, লকটিকে উচ্চতর বা নিম্ন স্তরের লক মোডে রূপান্তর করা সম্ভব। যখন সমস্ত প্রক্রিয়া একটি সম্পদ আনলক করে, তখন সম্পদ সম্পর্কে সিস্টেমের তথ্য ধ্বংস হয়ে যায়। নাল (এনএল)। সম্পদের প্রতি আগ্রহ নির্দেশ করে, তবে অন্যান্য প্রক্রিয়াগুলি এটিকে লক করতে বাধা দেয় না। এর সুবিধা হল যে সম্পদ এবং এর লক ভ্যালু ব্লক সংরক্ষণ করা হয়, এমনকি যখন কোনও প্রক্রিয়া এটিকে লক করে না। সমবর্তী পাঠ (সি. আর)। সম্পদটি পড়ার (কিন্তু আপডেট না করার) ইচ্ছাকে নির্দেশ করে। এটি অন্যান্য প্রক্রিয়াগুলিকে সম্পদটি পড়তে বা আপডেট করার অনুমতি দেয়, তবে অন্যদের এটিতে একচেটিয়া প্রবেশাধিকার থেকে বিরত করে। এটি সাধারণত উচ্চ-স্তরের সংস্থানগুলিতে নিযুক্ত করা হয়, যাতে অধস্তন সংস্থানগুলিতে আরও সীমাবদ্ধ লক পাওয়া যায়। সমবর্তী লেখা (সিডব্লিউ)। সম্পদটি পড়ার এবং আপডেট করার ইচ্ছাকে নির্দেশ করে। এটি অন্যান্য প্রক্রিয়াগুলিকে সম্পদটি পড়তে বা আপডেট করার অনুমতি দেয়, তবে অন্যদের এটিতে একচেটিয়া প্রবেশাধিকার থেকে বিরত করে। এটি সাধারণত উচ্চ-স্তরের সংস্থানগুলিতেও নিযুক্ত করা হয়, যাতে অধস্তন সংস্থানগুলিতে আরও সীমাবদ্ধ লক পাওয়া যায়। প্রোটেক্টেড রিড (পিআর)। এটি ঐতিহ্যবাহী শেয়ার লক, যা সম্পদটি পড়ার ইচ্ছাকে নির্দেশ করে কিন্তু অন্যকে এটি আপডেট করতে বাধা দেয়। অন্যরাও অবশ্য এই উৎসটি পড়তে পারে। প্রোটেক্টেড রাইট (পিডব্লিউ)। এটি ঐতিহ্যবাহী আপডেট লক, যা সম্পদটি পড়ার এবং আপডেট করার ইচ্ছাকে নির্দেশ করে এবং অন্যদের এটি আপডেট করতে বাধা দেয়। সমবর্তী পাঠ অ্যাক্সেস সহ অন্যরা অবশ্য সংস্থানটি পড়তে পারে। এক্সক্লুসিভ (EX)। এটি ঐতিহ্যবাহী একচেটিয়া লক যা সম্পদে পড়া এবং আপডেট অ্যাক্সেসের অনুমতি দেয় এবং অন্যকে এটিতে কোনও অ্যাক্সেস পেতে বাধা দেয়। নিম্নলিখিত সত্য টেবিলটি প্রতিটি লক মোডের সাথে অন্যটির সামঞ্জস্যতা দেখায়ঃ একটি লক প্রাপ্ত করা একটি প্রক্রিয়া একটি লক অনুরোধের মাধ্যমে একটি সংস্থানের উপর একটি লক পেতে পারে। এটি আই/ও সম্পাদনের জন্য ব্যবহৃত কিউআইও কৌশলের অনুরূপ। এনকিউ লক অনুরোধটি হয় সিঙ্ক্রোনাসভাবে সম্পূর্ণ হতে পারে, যে ক্ষেত্রে প্রক্রিয়াটি লক মঞ্জুর না হওয়া পর্যন্ত অপেক্ষা করে, অথবা অ্যাসিঙ্ক্রোনাসভাবে, যে ক্ষেত্রে লক প্রাপ্ত হওয়ার পরে একটি এ. এস. টি ঘটে। একটি ব্লকিং এ. এস. টি স্থাপন করাও সম্ভব, যা ট্রিগার হয় যখন একটি প্রক্রিয়া একটি লক পায় যা অন্য প্রক্রিয়া দ্বারা সংস্থানটিতে অ্যাক্সেসকে বাধা দেয়। মূল প্রক্রিয়াটি তখন ঐচ্ছিকভাবে অন্য প্রবেশাধিকারের অনুমতি দেওয়ার জন্য পদক্ষেপ নিতে পারে (যেমন। তালা নামিয়ে বা ছেড়ে দিয়ে)। লক ভ্যালু ব্লক একটি লক ভ্যালু ব্লক প্রতিটি রিসোর্সের সঙ্গে যুক্ত। এটি যে কোনও প্রক্রিয়া দ্বারা পড়া যেতে পারে যা সংস্থানটিতে একটি লক পেয়েছে (একটি নাল লক ব্যতীত) এবং এমন একটি প্রক্রিয়া দ্বারা আপডেট করা যেতে পারে যা এটিতে একটি সুরক্ষিত আপডেট বা একচেটিয়া লক পেয়েছে। অ্যাপ্লিকেশন ডিজাইনার যে সংস্থানটি বেছে নেন সে সম্পর্কে যে কোনও তথ্য রাখার জন্য এটি ব্যবহার করা যেতে পারে। একটি সাধারণ ব্যবহার হল সম্পদের একটি সংস্করণ নম্বর রাখা। প্রতিবার সংশ্লিষ্ট সত্তা (যেমন। একটি ডাটাবেস রেকর্ড) আপডেট করা হয়, লকের ধারক লকের মান ব্লক বৃদ্ধি করে। যখন অন্য কোনও প্রক্রিয়া সংস্থানটি পড়তে চায়, তখন এটি উপযুক্ত লকটি অর্জন করে এবং বর্তমান লকের মানটিকে শেষবার প্রক্রিয়াটি সংস্থানটিকে লক করার মানের সাথে তুলনা করে। যদি মান একই হয়, তবে প্রক্রিয়াটি জানে যে সংশ্লিষ্ট সত্তাটি শেষবার এটি পড়ার পর থেকে আপডেট করা হয়নি এবং তাই এটি আবার পড়া অপ্রয়োজনীয়। অতএব, এই কৌশলটি একটি ডাটাবেস বা অনুরূপ অ্যাপ্লিকেশনে বিভিন্ন ধরনের ক্যাশে বাস্তবায়নের জন্য ব্যবহার করা যেতে পারে। ডেডলক সনাক্তকরণ যখন এক বা একাধিক প্রক্রিয়া সম্পদের উপর তালা পেয়েছে, তখন এমন একটি পরিস্থিতি তৈরি করা সম্ভব যেখানে প্রতিটি অন্যকে তালা পেতে বাধা দিচ্ছে এবং তাদের মধ্যে কেউই এগিয়ে যেতে পারবে না। এটি একটি অচলাবস্থা হিসাবে পরিচিত (ই. ডব্লিউ. ডিজকস্ট্রা মূলত এটিকে একটি মারাত্মক আলিঙ্গন বলে অভিহিত করেছিলেন)। একটি সহজ উদাহরণ হল যখন প্রসেস 1 রিসোর্স এ-তে একটি এক্সক্লুসিভ লক পেয়েছে এবং প্রসেস 2 রিসোর্স বি-তে একটি এক্সক্লুসিভ লক পেয়েছে। যদি প্রসেস 1 রিসোর্স বি-কে লক করার চেষ্টা করে, তবে প্রসেস 2-এর এটি প্রকাশের জন্য অপেক্ষা করতে হবে। কিন্তু যদি প্রসেস 2 রিসোর্স এ-কে লক করার চেষ্টা করে, তবে উভয় প্রক্রিয়া একে অপরের জন্য চিরকাল অপেক্ষা করবে। ওপেনভিএমএস ডি. এল. এম পর্যায়ক্রমে অচল অবস্থার জন্য পরীক্ষা করে। উপরের উদাহরণে, একটি প্রক্রিয়ার দ্বিতীয় লক এনকিউ অনুরোধটি অচল অবস্থার সাথে ফিরে আসবে। তারপরে অচলাবস্থা সমাধানের জন্য পদক্ষেপ নেওয়া এই প্রক্রিয়াটির উপর নির্ভর করবে-এই ক্ষেত্রে এটি প্রাপ্ত প্রথম লকটি ছেড়ে দিয়ে। রেড হ্যাট এবং ওরাকল উভয়ই লিনাক্সের জন্য ক্লাস্টারিং সফ্টওয়্যার তৈরি করেছে। ওসিএফএস2, ওরাকল ক্লাস্টার ফাইল সিস্টেম জানুয়ারী 2006 সালে সংস্করণ 2.6.16 সহ অফিসিয়াল লিনাক্স কার্নেলে যোগ করা হয়েছিল। ওসিএফএস2-এ আলফা-মানের কোড সতর্কতা 2.6.19-এ সরানো হয়েছে। রেড হ্যাটের ক্লাস্টার সফ্টওয়্যার, তাদের ডি. এল. এম এবং জি. এফ. এস2 সহ আনুষ্ঠানিকভাবে 2006 সালের নভেম্বরে সংস্করণ 2.6.19 সহ লিনাক্স কার্নেলে যোগ করা হয়েছিল। উভয় ব্যবস্থাই শ্রদ্ধেয় ভি. এম. এস. ডি. এল. এম-এর উপর ভিত্তি করে একটি ডি. এল. এম মডেল ব্যবহার করে। ওরাকলের ডি. এল. এম-এর একটি সহজ এপিআই রয়েছে। (মূল ফাংশন, ডি. এল. এম. লক ()-এর আটটি পরামিতি রয়েছে, যেখানে ভি. এম. এস. এস. ওয়াই. এস. $ই. এন. কিউ পরিষেবা এবং রেড হ্যাটের ডি. এল. এম. লক উভয়েরই 11টি রয়েছে।) অন্যান্য বাস্তবায়ন অন্যান্য ডি. এল. এম বাস্তবায়নের মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছেঃ গুগল চুবি তৈরি করেছে, যা আলগাভাবে সংযুক্ত বিতরণ ব্যবস্থার জন্য একটি লক পরিষেবা। এটি মোটা-দানাদার লকিংয়ের জন্য ডিজাইন করা হয়েছে এবং একটি সীমিত কিন্তু নির্ভরযোগ্য বিতরণকৃত ফাইল সিস্টেমও সরবরাহ করে। গুগল ফাইল সিস্টেম, বিগটেবল এবং ম্যাপরিডিউস সহ গুগলের পরিকাঠামোর মূল অংশগুলি ভাগ করা সংস্থানগুলিতে অ্যাক্সেসগুলি সিঙ্ক্রোনাইজ করতে চুবি ব্যবহার করে। যদিও চুবি একটি লক পরিষেবা হিসাবে ডিজাইন করা হয়েছিল, এটি এখন গুগলের অভ্যন্তরে একটি নাম সার্ভার হিসাবে ব্যাপকভাবে ব্যবহৃত হয়, ডিএনএস প্রতিস্থাপন করে। ইয়াহুতে তৈরি করা অ্যাপাচি জু-কিপার একটি ওপেন সোর্স সফ্টওয়্যার এবং এটি বিতরণকৃত লকগুলি সম্পাদন করতেও ব্যবহার করা যেতে পারে। ইত্যাদি হল ওপেন সোর্স সফ্টওয়্যার, যা অ্যাপাচি লাইসেন্সের অধীনে কোরওএসে তৈরি করা হয়েছে। এটি বিতরণ করা লকগুলি সম্পাদন করতেও ব্যবহার করা যেতে পারে। রেডিস একটি ওপেন সোর্স, বিএসডি লাইসেন্সপ্রাপ্ত, উন্নত কী-ভ্যালু ক্যাশে এবং স্টোর। বিতরণকৃত লক ব্যবস্থাপনার জন্য রেডলক অ্যালগরিদম বাস্তবায়নের জন্য রেডিস ব্যবহার করা যেতে পারে। হাশিকর্পের কনসাল, যা হাশিকর্প দ্বারা তৈরি করা হয়েছিল, এটি একটি ওপেন সোর্স সফ্টওয়্যার এবং বিতরণকৃত লকগুলি সম্পাদন করতেও ব্যবহার করা যেতে পারে। টাউকা ডিস্ট্রিবিউটেড লক ম্যানেজার ডেডলক এড়াতে "ট্রাই লক" পদ্ধতি ব্যবহার করে। এটি ন্যানোসেকেন্ড নির্ভুলতার সাথে প্রতিটি লকের জন্য একটি টিটিএল নির্দিষ্ট করতে পারে। একটি ডি. এল. এম ওপেনএসএসআই-এর মতো আরও উচ্চাকাঙ্ক্ষী একক সিস্টেম ইমেজ (এসএসআই) প্রকল্পের একটি মূল উপাদান। রেফারেন্স এইচপি ওপেনভিএমএস সিস্টেম সার্ভিসেস রেফারেন্স ম্যানুয়াল-$ইএনকিউ অফিসার-রুবি এফএলওএম-এ লেখা একটি সাধারণ ডিস্ট্রিবিউটেড লক ম্যানেজার-একটি ফ্রি ওপেন সোর্স ডিস্ট্রিবিউটেড লক ম্যানেজার যা শেল কমান্ড, স্ক্রিপ্ট এবং কাস্টম ডেভেলপ করা সি, সি + +, জাভা, পিএইচপি এবং পাইথন সফ্টওয়্যার ডিস্ট্রিবিউটেড কম্পিউটিং আর্কিটেকচার সিঙ্ক্রোনাইজ করতে ব্যবহার করা যেতে পারে।