হাইস্ট্রিক্স দ্বারা ব্যবহৃত বাল্কহেড প্যাটার্নটি কী?


104

জটিল বিতরণ সিস্টেমে বিলম্বিতা এবং ফল্ট সহনশীলতার জন্য নেটফ্লিক্স এপিআই হাইড্রিক্স থ্রেড বিচ্ছিন্নতার জন্য বাল্কহেড প্যাটার্ন কৌশল ব্যবহার করে। কেউ দয়া করে এটি বিস্তারিত বলতে পারেন।

উত্তর:


193

সাধারণ

সাধারণভাবে, বাল্কহেড প্যাটার্নের লক্ষ্য হ'ল পুরো সিস্টেমটিকে নীচে নেওয়ার জন্য কোনও একটি অংশের ত্রুটিগুলি এড়ানো। এই শব্দটি জাহাজগুলি থেকে আসে যেখানে একটি জাহাজ পৃথক জলরোধী অংশে বিভক্ত হয় যাতে পুরো জাহাজটি বন্যার জন্য একক পশুর লঙ্ঘন এড়ায়; এটি কেবল একটি বাল্কহেড বন্যা করবে।

আপনি সিস্টেমকে কী ধরণের ত্রুটি থেকে রক্ষা করতে চান তার উপর নির্ভর করে বাল্কহেড প্যাটার্নের প্রয়োগগুলি অনেকগুলি রূপ নিতে পারে। আমি কেবল এই উত্তরে হায়স্ট্রিক্স যে ধরণের ত্রুটিগুলি পরিচালনা করে তা নিয়ে আলোচনা করব।

আমি মনে করি বাল্কহেড প্যাটার্নটি রিলিজ ইট বইটি জনপ্রিয় করেছে ! মাইকেল টি। নাইগার্ড দ্বারা।

হাইড্রিক্স কী সমাধান করে

হায়স্ট্রিক্সে বাল্কহেড বাস্তবায়ন কোনও উপাদানকে সমবর্তী কলগুলির সংখ্যা সীমাবদ্ধ করে । এই উপাদানটি থেকে জবাবের অপেক্ষায় থাকা সংখ্যার (সাধারণত থ্রেড) সীমাবদ্ধ।

ধরে নিন আপনার কাছে একটি অনুরোধ ভিত্তিক, মাল্টি থ্রেডেড অ্যাপ্লিকেশন রয়েছে (উদাহরণস্বরূপ একটি সাধারণ ওয়েব অ্যাপ্লিকেশন) যা তিনটি পৃথক উপাদান, , বি এবং সি ব্যবহার করে । যদি উপাদান সি এর জন্য অনুরোধগুলি হ্যাং হতে শুরু করে, অবশেষে সমস্ত অনুরোধ হ্যান্ডলিং থ্রেডগুলি সি এর থেকে উত্তরের জন্য অপেক্ষা করতে থাকবে । এটি অ্যাপ্লিকেশনটিকে সম্পূর্ণ অ-প্রতিক্রিয়াশীল করে তুলবে। সি-এর অনুরোধগুলি ধীরে ধীরে হ্যান্ডল করা হলে আমাদের বোঝা যথেষ্ট পরিমাণে বেশি হলে একই ধরণের সমস্যা হয়।

বাল্কহেড প্যাটার্নের হাইস্ট্রিক্সের প্রয়োগকরণ একটি উপাদানটির সাথে একযোগে কলগুলির সংখ্যা সীমাবদ্ধ করে এবং এক্ষেত্রে অ্যাপ্লিকেশনটি সংরক্ষণ করতে পারত। ধরুন আমাদের কাছে 30 টি অনুরোধ হ্যান্ডলিং থ্রেড রয়েছে এবং সেখানে সি তে 10 সমবর্তী কলগুলির সীমা রয়েছে । তারপর সবচেয়ে 10 অনুরোধ সামলাচ্ছে থ্রেড যখন কলিং ঘুরে দেখতে পারেন সি , অন্যান্য 20 থ্রেড এখনো অনুরোধ এবং ব্যবহারের উপাদান সব ব্যবস্থা করতে সক্ষম একটি এবং বি

হায়স্ট্রিক্স 'এপ্রোচ

হাইড্রিক্স'র বাল্কহেড, থ্রেড বিচ্ছিন্নতা এবং সেমফোর বিচ্ছিন্নতার দুটি পৃথক পদ্ধতি রয়েছে।

থ্রেড বিচ্ছিন্নতা

মান পদ্ধতির উপাদানের সমস্ত অনুরোধ হাতে তুলে দেওয়ার সি থ্রেডের একটি নির্দিষ্ট সংখ্যা এবং কোন (বা একটি ছোট) অনুরোধ কিউ সঙ্গে একটি পৃথক থ্রেডে পুল।

সেমফোর বিচ্ছিন্নতা

অন্যান্য পদ্ধতির সব কলারের অনুরোধ সামনে (0 সময়সীমার সঙ্গে) একটি পারমিট অর্জন থাকতে হয় সি । যদি সেমফোর থেকে অনুমতি নেওয়া যায় না, সি তে কলগুলি পাস করা হয় না।

পার্থক্য

থ্রেড পুল পদ্ধতির সুবিধাটি হ'ল সিতে দেওয়া অনুরোধগুলির সময়সীমা শেষ করা যেতে পারে, যা এমন কিছু যা সেমোফোরগুলি ব্যবহার করার সময় সম্ভব নয়।


10
সংযোজন হিসাবে, আসল হাইস্ট্রিক্স উইকিতে এখন উভয় পদ্ধতির বিশদ বিবরণ রয়েছে: github.com/Netflix/Hystrix/wiki/How-it-Works
দিমিত্রি

1
সার্কিট ব্রেকার এবং বাল্কহেডের মধ্যে পার্থক্য কী?
ভয়েপ

4
@ ভিআইপি সার্কিট ব্রেকার একটি সম্পূর্ণ ভিন্ন জিনিস। কোনও পরিষেবা যখন অস্বাস্থ্যকর অবস্থায় থাকে তখন তারা সনাক্ত করে এবং কলকারীদের "ব্যর্থ দ্রুত" অবস্থায় নিয়ে যায় যেখানে তারা অস্বাস্থ্যকর পরিষেবা না বলে, তবে পরিষেবাটি ঠিক না হওয়া পর্যন্ত পরিবর্তে একটি ত্রুটি কোড ফেরত দেয়। এটি অস্বাস্থ্যকর পরিষেবাটি অতিরিক্ত লোড করা এড়ানো যায় যাতে এটি পুনরুদ্ধার করতে পারে এবং কলাররা ধীরগতি না হওয়ায় এটি ক্যাসকেডিং ব্যর্থতাগুলি রোধ করে।
কে এরল্যান্ডসন

1

নেটফ্লিক্স হায়স্ট্রিক্স দ্বারা অনুপ্রাণিত রেজিলিয়েন্স 4 জে বাল্কহেডের রানটাইম ব্যাখ্যা সহ একটি ভাল উদাহরণ এখানে ।

উদাহরণস্বরূপ নীচে কনফিগারেশন ব্যবহারের কিছু স্পষ্টতা দিতে পারে।

উদাহরণ কনফিগারেশন: যে কোনও সময় সর্বাধিক 5 সমবর্তী কলগুলিতে মঞ্জুরি দিন। প্রসেস 5 সমবর্তী একের শেষ না হওয়া পর্যন্ত বা সর্বোচ্চ 2 সেকেন্ড পর্যন্ত অপেক্ষারত অন্য কলগুলি রাখুন।

আইডিয়া কোনও সিস্টেমে তারা বোঝাতে পারে না তার চেয়ে বেশি বোঝা। যদি ইনকামিং লোডটি গ্রাহকের চেয়ে বেশি হয়, তবে যুক্তিসঙ্গত সময়ের জন্য অপেক্ষা করুন বা সময়সীমা শেষ করুন এবং বিকল্প পথে যাবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.