Failure detector
একটি ডিস্ট্রিবিউটেড কম্পিউটিং সিস্টেমে, একটি ব্যর্থতা আবিষ্কারক হল একটি কম্পিউটার অ্যাপ্লিকেশন বা একটি সাবসিস্টেম যা নোড ব্যর্থতা বা ক্র্যাশ সনাক্তকরণের জন্য দায়ী। চন্দ্রা এবং টুয়েগ 1996 সালে তাদের বই আনরিলিএবল ফেইলার ডিটেক্টরস ফর রিলায়েবল ডিস্ট্রিবিউটেড সিস্টেমস-এ প্রথম ব্যর্থতা সনাক্তকারী যন্ত্র চালু করেন। বইটিতে ব্যর্থতা সনাক্তকারীকে বিতরণ ব্যবস্থায় ঐকমত্য (নির্ভরযোগ্যতা অর্জন) এবং পারমাণবিক সম্প্রচার (বার্তাগুলির একই ক্রম) উন্নত করার একটি হাতিয়ার হিসাবে চিত্রিত করা হয়েছে। অন্য কথায়, ব্যর্থতা সনাক্তকারীগুলি প্রক্রিয়াটিতে ত্রুটি চায় এবং সিস্টেমটি নির্ভরযোগ্যতার একটি স্তর বজায় রাখবে। বাস্তবে, ব্যর্থতা সনাক্তকারী ক্র্যাশগুলি চিহ্নিত করার পরে, সিস্টেমটি এমন প্রক্রিয়াগুলি নিষিদ্ধ করবে যা আরও গুরুতর ক্র্যাশ বা ত্রুটি রোধ করতে ভুল করছে। একবিংশ শতাব্দীতে, অ্যাপ্লিকেশন ত্রুটিগুলি সনাক্ত করতে ডিস্ট্রিবিউটেড কম্পিউটিং সিস্টেমে ব্যর্থতা সনাক্তকারীগুলি ব্যাপকভাবে ব্যবহৃত হয়, যেমন একটি সফ্টওয়্যার অ্যাপ্লিকেশন সঠিকভাবে কাজ করা বন্ধ করে দেয়। ডিস্ট্রিবিউটেড কম্পিউটিং প্রকল্পগুলি (ডিস্ট্রিবিউটেড কম্পিউটিং প্রকল্পগুলির তালিকা দেখুন) আরও বেশি জনপ্রিয় হয়ে ওঠার সাথে সাথে ব্যর্থতা সনাক্তকরণের ব্যবহারও গুরুত্বপূর্ণ এবং সমালোচনামূলক হয়ে ওঠে। অরিজিন আনরিলিয়েবল ফেইলার ডিটেক্টর চন্দ্র এবং টুয়েগ, আনরিলিয়েবল ফেইলার ডিটেক্টরস ফর রিলিয়েবল ডিস্ট্রিবিউটেড সিস্টেমস (1996) বইয়ের সহ-লেখক, অবিশ্বস্ত ব্যর্থতা সনাক্তকারী প্রবর্তন করে ব্যর্থতা নোড সনাক্তকরণের ধারণার কাছে গিয়েছিলেন। তারা একটি ডিস্ট্রিবিউটেড কম্পিউটিং সিস্টেমে একটি অবিশ্বস্ত ব্যর্থতা সনাক্তকারীর আচরণকে বর্ণনা করেঃ সিস্টেমের প্রতিটি প্রক্রিয়া একটি স্থানীয় ব্যর্থতা সনাক্তকারী উপাদান প্রবেশ করার পরে, প্রতিটি স্থানীয় উপাদান সিস্টেমের মধ্যে সমস্ত প্রক্রিয়ার একটি অংশ পরীক্ষা করবে। উপরন্তু, প্রতিটি প্রক্রিয়ায় অবশ্যই এমন প্রোগ্রাম থাকতে হবে যা বর্তমানে ব্যর্থতা সনাক্তকারী দ্বারা সন্দেহ করা হয়। ব্যর্থতা সনাক্তকারী চন্দ্র এবং টুয়েগ দাবি করেছেন যে একটি অবিশ্বস্ত ব্যর্থতা সনাক্তকারী এখনও সিস্টেমের দ্বারা করা ত্রুটিগুলি সনাক্ত করতে নির্ভরযোগ্য হতে পারে। তারা সমস্ত ধরনের ব্যর্থতা সনাক্তকারীগুলিতে অবিশ্বস্ত ব্যর্থতা সনাক্তকারীগুলিকে সাধারণীকরণ করে কারণ অবিশ্বস্ত ব্যর্থতা সনাক্তকারী এবং ব্যর্থতা সনাক্তকারী একই বৈশিষ্ট্য ভাগ করে নেয়। উপরন্তু, চন্দ্র এবং টুয়েগ একটি গুরুত্বপূর্ণ বিষয় তুলে ধরেছেন যে ব্যর্থতা সনাক্তকারী সিস্টেমে কোনও ক্র্যাশ রোধ করে না, যদিও ক্র্যাশ হওয়া প্রোগ্রামটি আগে সন্দেহ করা হয়েছিল। একটি ব্যর্থতা সনাক্তকারী নির্মাণ একটি অপরিহার্য, কিন্তু একটি খুব কঠিন সমস্যা যা একটি বিতরণকৃত কম্পিউটার সিস্টেমে ত্রুটি-সহনশীল উপাদানের বিকাশে ঘটেছিল। ফলস্বরূপ, ডিস্ট্রিবিউটেড কম্পিউটিং সিস্টেমে ব্যাপক তথ্য লেনদেনে ত্রুটি সনাক্ত করার প্রয়োজনের কারণে ব্যর্থতা আবিষ্কারক উদ্ভাবিত হয়েছিল। ব্যর্থতা সনাক্তকারীগুলির শ্রেণীগুলি দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য দ্বারা আলাদা করা হয়ঃ সম্পূর্ণতা এবং নির্ভুলতা। সম্পূর্ণতার অর্থ হল যে ব্যর্থতা সনাক্তকারীগুলি এমন প্রোগ্রামগুলি খুঁজে পাবে যা শেষ পর্যন্ত একটি প্রক্রিয়ায় ক্র্যাশ হয়ে যায়, যেখানে নির্ভুলতার অর্থ হল যে ব্যর্থতা সনাক্তকারীগুলি একটি প্রক্রিয়ায় সঠিক সিদ্ধান্ত নেয়। সম্পূর্ণতার ডিগ্রি সম্পূর্ণতার ডিগ্রি নির্ভর করে ক্র্যাশ হওয়া প্রক্রিয়ার সংখ্যার উপর যা একটি নির্দিষ্ট সময়ের মধ্যে ব্যর্থতা সনাক্তকারী দ্বারা সন্দেহ করা হয়। দৃঢ় সম্পূর্ণতাঃ "প্রতিটি ত্রুটিপূর্ণ প্রক্রিয়া অবশেষে প্রতিটি অ-ত্রুটিপূর্ণ প্রক্রিয়া দ্বারা স্থায়ীভাবে সন্দেহ করা হয়।" দুর্বল সম্পূর্ণতাঃ "প্রতিটি ত্রুটিপূর্ণ প্রক্রিয়া অবশেষে কিছু অ-ত্রুটিপূর্ণ প্রক্রিয়া দ্বারা স্থায়ীভাবে সন্দেহ করা হয়"। নির্ভুলতার ডিগ্রি নির্ভুলতার ডিগ্রি নির্ভর করে একটি নির্দিষ্ট সময়ের মধ্যে ব্যর্থতা সনাক্তকারী কতগুলি ভুল করেছে তার উপর। দৃঢ় নির্ভুলতাঃ "ক্র্যাশ হওয়ার আগে কোনও প্রক্রিয়া (কারও দ্বারা) সন্দেহ করা হয় না"। দুর্বল নির্ভুলতাঃ "কিছু অ-ত্রুটিপূর্ণ প্রক্রিয়া কখনই সন্দেহ করা হয় না"। ঘটনাগত দৃঢ় নির্ভুলতাঃ "বিশৃঙ্খলার প্রাথমিক সময়কাল শেষ হওয়ার পর থেকে কিছু সময়ের পরে কোনও অ-ত্রুটিপূর্ণ প্রক্রিয়া সন্দেহ করা হয় না।" ঘটনাগত দুর্বল নির্ভুলতাঃ "কিছু প্রাথমিক সময়ের বিভ্রান্তির পরে, কিছু অ-ত্রুটিপূর্ণ প্রক্রিয়া কখনই সন্দেহ করা হয় না"। শ্রেণীবিভাগ ব্যর্থতা সনাক্তকারী যন্ত্রগুলিকে নিম্নলিখিত আটটি শ্রেণীতে ভাগ করা যেতে পারেঃ নিখুঁত ব্যর্থতা সনাক্তকারী যন্ত্র (পি) অবশেষে নিখুঁত ব্যর্থতা সনাক্তকারী যন্ত্র (পি) শক্তিশালী ব্যর্থতা সনাক্তকারী যন্ত্র (এস) অবশেষে শক্তিশালী ব্যর্থতা সনাক্তকারী যন্ত্র (এস) দুর্বল ব্যর্থতা সনাক্তকারী যন্ত্র (ডাব্লু) অবশেষে দুর্বল ব্যর্থতা সনাক্তকারী যন্ত্র (ডাব্লু) আধা-নিখুঁত ব্যর্থতা সনাক্তকারী যন্ত্র (কিউ) অবশেষে আধা-নিখুঁত ব্যর্থতা সনাক্তকারী যন্ত্র (কিউ) এই ব্যর্থতা সনাক্তকারী যন্ত্রগুলির বৈশিষ্ট্যগুলি নীচে বর্ণনা করা হয়েছেঃ সংক্ষেপে, ব্যর্থতা সনাক্তকারী যন্ত্রগুলির বৈশিষ্ট্যগুলি নির্ভর করে কতটা দ্রুত ব্যর্থতা সনাক্তকারী প্রকৃত ব্যর্থতা সনাক্ত করে এবং কতটা ভালভাবে মিথ্যা সনাক্তকরণ এড়ায় তার উপর। একটি নিখুঁত ব্যর্থতা সনাক্তকারী কোনও ভুল ছাড়াই সমস্ত ত্রুটি খুঁজে পাবে, যেখানে একটি দুর্বল ব্যর্থতা সনাক্তকারী কোনও ত্রুটি খুঁজে পাবে না এবং অসংখ্য ভুল করবে। অ্যাপ্লিকেশন ব্যর্থতা সনাক্তকারীগুলির বৈশিষ্ট্য পরিবর্তন করে বিভিন্ন ধরনের ব্যর্থতা সনাক্তকারী পাওয়া যেতে পারে। প্রথম উদাহরণগুলি দেখায় যে কীভাবে একটি ব্যর্থতা সনাক্তকারীর সম্পূর্ণতা বাড়ানো যায়, এবং দ্বিতীয় উদাহরণটি দেখায় যে কীভাবে এক ধরনের ব্যর্থতা সনাক্তকারীকে অন্যটিতে পরিবর্তন করা যায়। সম্পূর্ণতা বৃদ্ধি নিম্নলিখিত একটি উদাহরণ ইয়েল বিশ্ববিদ্যালয়ের কম্পিউটার বিজ্ঞান বিভাগ থেকে বিমূর্ত। এটি ব্যর্থতার সম্পূর্ণতা বাড়িয়ে কাজ করেঃ প্রতিটি প্রক্রিয়ার জন্য পিঃ যদি আমার দুর্বল-সনাক্তকারী পি সন্দেহ করে, তবে কোনও প্রক্রিয়া থেকে পি পাওয়ার পরে সমস্ত প্রক্রিয়াতে পি পাঠান q: সন্দেহভাজনঃ = সন্দেহভাজন + পি-কিউ উপরের উদাহরণ থেকে, যদি পি ক্র্যাশ হয়, তবে দুর্বল-সনাক্তকারী শেষ পর্যন্ত এটি সন্দেহ করবে। ব্যর্থতা সনাক্তকারী দ্বারা তৈরি অসীম লুপের কারণে সিস্টেমের সমস্ত ব্যর্থতা সনাক্তকারী অবশেষে পি-কে সন্দেহ করবে। এই উদাহরণটি আরও দেখায় যে একটি দুর্বল সম্পূর্ণতা ব্যর্থতা আবিষ্কারক শেষ পর্যন্ত সমস্ত ক্র্যাশকে সন্দেহ করতে পারে। ক্র্যাশ হওয়া প্রোগ্রামগুলির পরিদর্শন সম্পূর্ণতার উপর নির্ভর করে না। একটি ব্যর্থতা সনাক্তকারী ডাব্লু-কে ব্যর্থতা সনাক্তকারী এস-এ হ্রাস করা ব্যর্থতা সনাক্তকারী ডাব্লু-কে ব্যর্থতা সনাক্তকারী এস-এ পরিবর্তন করার অ্যালগরিদমকে সন্তুষ্ট করার জন্য নিম্নলিখিতগুলি সঠিকতার যুক্তি। ব্যর্থতা সনাক্তকারী ডাব্লু সম্পূর্ণতায় দুর্বল, এবং ব্যর্থতা সনাক্তকারী এস সম্পূর্ণতায় শক্তিশালী। তারা দুজনেই নির্ভুলতার দিক থেকে দুর্বল। এটি দুর্বল সম্পূর্ণতাকে শক্তিশালী সম্পূর্ণতায় রূপান্তরিত করে। এটি চিরস্থায়ী নির্ভুলতা বজায় রাখে। এটি চূড়ান্ত নির্ভুলতা বজায় রাখে। যদি উপরের সমস্ত যুক্তি সন্তুষ্ট হয়, তবে একটি দুর্বল ব্যর্থতা সনাক্তকারী ডাব্লু-কে একটি শক্তিশালী ব্যর্থতা সনাক্তকারী এস-এ হ্রাস করা ডিস্ট্রিবিউটেড কম্পিউটিং সিস্টেমের মধ্যে অ্যালগরিদমের সাথে একমত হবে। আরও দেখুন ডিস্ট্রিবিউটেড কম্পিউটিং ডিস্ট্রিবিউটেড কম্পিউটিং প্রজেক্টের তালিকা এস. ডব্লিউ. আই. এম প্রোটোকল ক্র্যাশ (কম্পিউটিং) ফল্ট টলারেন্স কনসেনসাস পারমাণবিক সম্প্রচার রেফারেন্স এক্সটার্নাল লিঙ্ক <আই. ডি. 2> <আই. ডি. 1> ডিস্ট্রিবিউটেড কম্পিউটিং ফল্ট-টলারেন্ট কম্পিউটার সিস্টেম