আমার একটি সিস্টেম রয়েছে যেখানে কোনও ক্লায়েন্ট (এটি ক্লায়েন্টা বলুন) একটি নির্দিষ্ট এমকিটিটি বিষয়টিতে অনুরোধগুলি প্রকাশ করতে পারে। ব্রোকার, যদি বিষয়টি বিবেচিত হয় তবে তা হ'ল অ্যামাজন ওয়েব সার্ভিসেস। তারপরে আমার আরেকটি ক্লায়েন্ট রয়েছে (আসুন একে মেইনসউসক্রাইবার বলি) যা সর্বদা একই বিষয়ে সাবস্ক্রাইব থাকে যাতে এটি ক্লায়েন্টের কাছ থেকে অনুরোধগুলি গ্রহণ করতে পারে এবং এমন কিছু কাজ করতে পারে যা শেষ পর্যন্ত একটি ডাটাবেস অপারেশনে পরিণত হয়। ডাটাবেস, এটি বিবেচনার ক্ষেত্রে ডায়নামোডিবি।
যেহেতু মেইন সাবস্ক্রাইবার সর্বদা অ্যাক্সেসযোগ্য / অনলাইনে নাও থাকতে পারে, তাই মূল গ্রাহকের ব্যর্থ ব্যাকআপ হয়ে ফেইলওভার গ্রাহক হওয়ার ইচ্ছা আছে। ধারণাটিটি হ'ল যদি প্রধান গ্রাহকরা সময়মত অনুরোধটি পরিচালনা না করে তবে ব্যর্থ গ্রাহকরা সমতুল্য কাজ / ডাটাবেস অপারেশনটি শুরু করবেন। চ্যালেঞ্জটি হ'ল "কাজ" এবং ফলস্বরূপ "ডাটাবেস অপারেশন" অবশ্যই মূল এবং ব্যর্থ উভয় গ্রাহকের দ্বারা নকল করা উচিত নয়।
এই সিস্টেমের জন্য এখানে একটি লজিকাল সিস্টেম আর্কিটেকচার অঙ্কন।
-----> MainSubscriber ----
/ \
ClientA --> Broker ---> Database
\ /
---> FailoverSubscriber --
স্পষ্টতই, এই জাতীয় সিস্টেমের সাথে কিছু চ্যালেঞ্জ রয়েছে:
- মূল গ্রাহক কীভাবে ব্যর্থতার গ্রাহককে অনুরোধে কাজ করছে তা নির্দেশ করে?
- ফেলোভার গ্রাহক কীভাবে সনাক্ত করতে পারবেন যে প্রধান গ্রাহক অনুরোধটি গ্রহণ করেন নি এবং এটিতে কাজ শুরু করা দরকার?
- হঠাৎ করে অনলাইনে ফিরে এসে অনুরোধটি গ্রহণের ক্ষেত্রে ব্যর্থতা গ্রাহক কীভাবে মূল গ্রাহককে আটকে রাখবেন?
- প্রধান এবং ফেইলওভার গ্রাহকদের মধ্যে কীভাবে সমকালীন সমস্যাগুলি মোকাবেলা করতে হবে?
এই জাতীয় প্রকল্পের জন্য যদি ইতিমধ্যে একটি বিদ্যমান সমাধান উপস্থিত থাকে তবে আমাকে চাকাটি পুনরায় উদ্ভাবন করতে হবে না। সুতরাং, আমার প্রথম প্রশ্নটি এখানে ইতিমধ্যে কিছু আছে কিনা?
যদি তা না হয় তবে আমি স্ট্রংলি কনসিস্টেন্ট রিড সহ ডায়নামোডিবি ব্যবহার করার কথা ভাবছিলাম মেইন এবং ফেইলওভার গ্রাহকের মধ্যে মধ্যস্থতার ভূমিকা পালন করার জন্য। সুতরাং, আমার দ্বিতীয় প্রশ্নটি এটি করার জন্য কোনও সুপ্রতিষ্ঠিত স্কিম আছে কি না?