উত্তর:
সাধারণভাবে, বাল্কহেড প্যাটার্নের লক্ষ্য হ'ল পুরো সিস্টেমটিকে নীচে নেওয়ার জন্য কোনও একটি অংশের ত্রুটিগুলি এড়ানো। এই শব্দটি জাহাজগুলি থেকে আসে যেখানে একটি জাহাজ পৃথক জলরোধী অংশে বিভক্ত হয় যাতে পুরো জাহাজটি বন্যার জন্য একক পশুর লঙ্ঘন এড়ায়; এটি কেবল একটি বাল্কহেড বন্যা করবে।
আপনি সিস্টেমকে কী ধরণের ত্রুটি থেকে রক্ষা করতে চান তার উপর নির্ভর করে বাল্কহেড প্যাটার্নের প্রয়োগগুলি অনেকগুলি রূপ নিতে পারে। আমি কেবল এই উত্তরে হায়স্ট্রিক্স যে ধরণের ত্রুটিগুলি পরিচালনা করে তা নিয়ে আলোচনা করব।
আমি মনে করি বাল্কহেড প্যাটার্নটি রিলিজ ইট বইটি জনপ্রিয় করেছে ! মাইকেল টি। নাইগার্ড দ্বারা।
হায়স্ট্রিক্সে বাল্কহেড বাস্তবায়ন কোনও উপাদানকে সমবর্তী কলগুলির সংখ্যা সীমাবদ্ধ করে । এই উপাদানটি থেকে জবাবের অপেক্ষায় থাকা সংখ্যার (সাধারণত থ্রেড) সীমাবদ্ধ।
ধরে নিন আপনার কাছে একটি অনুরোধ ভিত্তিক, মাল্টি থ্রেডেড অ্যাপ্লিকেশন রয়েছে (উদাহরণস্বরূপ একটি সাধারণ ওয়েব অ্যাপ্লিকেশন) যা তিনটি পৃথক উপাদান, এ , বি এবং সি ব্যবহার করে । যদি উপাদান সি এর জন্য অনুরোধগুলি হ্যাং হতে শুরু করে, অবশেষে সমস্ত অনুরোধ হ্যান্ডলিং থ্রেডগুলি সি এর থেকে উত্তরের জন্য অপেক্ষা করতে থাকবে । এটি অ্যাপ্লিকেশনটিকে সম্পূর্ণ অ-প্রতিক্রিয়াশীল করে তুলবে। সি-এর অনুরোধগুলি ধীরে ধীরে হ্যান্ডল করা হলে আমাদের বোঝা যথেষ্ট পরিমাণে বেশি হলে একই ধরণের সমস্যা হয়।
বাল্কহেড প্যাটার্নের হাইস্ট্রিক্সের প্রয়োগকরণ একটি উপাদানটির সাথে একযোগে কলগুলির সংখ্যা সীমাবদ্ধ করে এবং এক্ষেত্রে অ্যাপ্লিকেশনটি সংরক্ষণ করতে পারত। ধরুন আমাদের কাছে 30 টি অনুরোধ হ্যান্ডলিং থ্রেড রয়েছে এবং সেখানে সি তে 10 সমবর্তী কলগুলির সীমা রয়েছে । তারপর সবচেয়ে 10 অনুরোধ সামলাচ্ছে থ্রেড যখন কলিং ঘুরে দেখতে পারেন সি , অন্যান্য 20 থ্রেড এখনো অনুরোধ এবং ব্যবহারের উপাদান সব ব্যবস্থা করতে সক্ষম একটি এবং বি ।
হাইড্রিক্স'র বাল্কহেড, থ্রেড বিচ্ছিন্নতা এবং সেমফোর বিচ্ছিন্নতার দুটি পৃথক পদ্ধতি রয়েছে।
মান পদ্ধতির উপাদানের সমস্ত অনুরোধ হাতে তুলে দেওয়ার সি থ্রেডের একটি নির্দিষ্ট সংখ্যা এবং কোন (বা একটি ছোট) অনুরোধ কিউ সঙ্গে একটি পৃথক থ্রেডে পুল।
অন্যান্য পদ্ধতির সব কলারের অনুরোধ সামনে (0 সময়সীমার সঙ্গে) একটি পারমিট অর্জন থাকতে হয় সি । যদি সেমফোর থেকে অনুমতি নেওয়া যায় না, সি তে কলগুলি পাস করা হয় না।
থ্রেড পুল পদ্ধতির সুবিধাটি হ'ল সিতে দেওয়া অনুরোধগুলির সময়সীমা শেষ করা যেতে পারে, যা এমন কিছু যা সেমোফোরগুলি ব্যবহার করার সময় সম্ভব নয়।
নেটফ্লিক্স হায়স্ট্রিক্স দ্বারা অনুপ্রাণিত রেজিলিয়েন্স 4 জে বাল্কহেডের রানটাইম ব্যাখ্যা সহ একটি ভাল উদাহরণ এখানে ।
উদাহরণস্বরূপ নীচে কনফিগারেশন ব্যবহারের কিছু স্পষ্টতা দিতে পারে।
উদাহরণ কনফিগারেশন: যে কোনও সময় সর্বাধিক 5 সমবর্তী কলগুলিতে মঞ্জুরি দিন। প্রসেস 5 সমবর্তী একের শেষ না হওয়া পর্যন্ত বা সর্বোচ্চ 2 সেকেন্ড পর্যন্ত অপেক্ষারত অন্য কলগুলি রাখুন।
আইডিয়া কোনও সিস্টেমে তারা বোঝাতে পারে না তার চেয়ে বেশি বোঝা। যদি ইনকামিং লোডটি গ্রাহকের চেয়ে বেশি হয়, তবে যুক্তিসঙ্গত সময়ের জন্য অপেক্ষা করুন বা সময়সীমা শেষ করুন এবং বিকল্প পথে যাবেন।