যদি আপনার কোনও কাজ থাকে যা আপনি কেবল একবার সার্ভারের ক্লাস্টারে একবার চালাতে চেয়েছিলেন, নিয়মিত বিরতিতে এটি অর্জনের সর্বোত্তম উপায় কী হবে? এক্ষেত্রে ক্লাস্টারের সংজ্ঞাটি 2 বা ততোধিক অভিন্ন সার্ভারগুলি বন্টনকারী সেশনগুলির সাথে লোড ব্যালেন্সারের পিছনে বসে থাকে।
কেস ব্যবহার করুন: আপনার এমন একটি টাস্ক রয়েছে যা চালানো ব্যয়বহুল যা প্রতি X ঘন্টার মধ্যে একবার চালানো উচিত। এই কাজটি উদাহরণস্বরূপ একাধিক রেকর্ডের মাধ্যমে পুনরাবৃত্তি করতে পারে এবং তাদের স্থিতি আপডেট করে।
- সবচেয়ে খারাপ পরিস্থিতি হ'ল চাকরি চালানো আপনার ডেটাটিকে দু'বার অকার্যকর করে দেয়।
- সর্বোত্তম ক্ষেত্রে পরিস্থিতি হ'ল চাকরিটি আপনার সমস্ত সার্ভারে সংস্থান ব্যবহার করে util
প্রয়োজনীয়তার সংক্ষিপ্তসার:
- নোডের একটি নিচে থাকলেও কাজটি এখনও চালাতে হবে।
- কাজটি শিডিউল অনুযায়ী একবার চালাতে হবে।
- যদি একাধিক কাজ একই সময়ে বা ওভারল্যাপিং সময়ে নির্ধারিত হয় যে চলমান কাজের সংখ্যা সার্ভারগুলির মধ্যে সমানভাবে বিতরণ করা হয়।
- মেশিনগুলির অবশ্যই একই কোড বেস থাকতে হবে এবং এনটিপির মাধ্যমে সিঙ্ক্রোনাইজ করা উচিত।
- কনফিগারেশন নোড এবং নোডের মধ্যে, পরিবেশের ভেরিয়েবলের দ্বারা পৃথক হতে পারে।
- কাজটি সময়মতো বা নির্ধারিত সময়ের একটি নির্দিষ্ট ব্যবধানের মধ্যে শুরু করতে হয়। (উদাহরণস্বরূপ 5 মিনিট বলুন)
সম্ভাব্য সমাধান
- একটি নোডকে মাস্টার নোড হিসাবে সেট করুন, এটি উপরে 1 টি লঙ্ঘন করায় এটি কাজ করে না।
- একটি অনুরোধ করুন যে লোড ব্যালান্সার ভারসাম্য বজায় রেখে কাজটি সরিয়ে দেয়। দুর্ভাগ্যক্রমে এর পার্শ্ব প্রতিক্রিয়া রয়েছে যে আপনার যদি একই সাথে একাধিক কাজ চলমান থাকে তবে সেগুলি সমস্ত একই মেশিন দ্বারা চালিত হতে পারে।
এটি জাভাতে চালাতে হবে, একটি সার্লেট পাত্রে। তবে আমি যে চাকরিগুলি সন্ধান করছি তাতে কোডিং করা হয় না।
অবশ্যই এটি জ্ঞাত সেরা সমাধান সহ একটি সমাধান সমস্যা।
সম্পর্কিত প্রশ্ন। /programming/5949038/schedule-job-executes-twice-on-cluster
উপরে বর্ণিত 5 টি প্রয়োজনীয়তা অনুসারে সমাধানটি অপর্যাপ্ত হওয়ায় এটি কোনও সদৃশ নয়। সর্বাধিক উত্সাহিত দ্রবণটি একটি রেসের সমস্যাতে ভুগছে এবং দ্বিতীয় সমাধানটি প্রয়োজনীয়তা 3 লঙ্ঘন করে