
প্রোডাকশন সিস্টেমে Redis-এর ব্যবহার বড়ার সাথে সাথে, টিমরা অবশেষে একটি ক্রিটিক্যাল আর্কিটেকচারাল সিদ্ধান্তের সম্মুখীন হয়। Redis-কে স্কেল করা উচিত Redis Sentinel দিয়ে নাকি Redis Cluster দিয়ে?
এই সিদ্ধান্ত প্রায়শই দেরি হয়, এবং প্রেশার আন্ডারে, সাধারণত পারফরম্যান্স ইস্যু, মেমরি এক্সহাস্টশন, বা অভেইলেবিলিটি ইনসিডেন্টের পরে। দুর্ভাগ্যক্রমে, Redis Sentinel এবং Redis Cluster খুব ভিন্ন সমস্যা সমাধান করে, এবং ভুলটি বেছে নেওয়া পেইনফুল রিডিজাইনത്തলে নিয়ে যায়।
Redis Sentinel হলো অভেইলেবিলিটির জন্য। Redis Cluster হলো স্কেলেবিলিটির জন্য। দুটোকে গুলিয়ে ফেলা Redis আর্কিটেকচারের সবচেয়ে সাধারণ ভুলগুলির মধ্যে একটি।
Redis Sentinel যা সমাধান করে মূল সমস্যা
Redis Sentinel ডিজাইন করা হয়েছে একটি সিঙ্গেল Redis ডেটাসেটের জন্য হাই অভেইলেবিলিটি প্রোভাইড করার জন্য।
তার প্রাইমারি দায়িত্বগুলো হলো:
Redis মাস্টার এবং রেপ্লিকা নোডস মনিটর করা
ফেইলিউর ডিটেক্ট করা
অটোমেটিক ফেইলোভার পারফর্ম করা
নতুন মাস্টারের সম্পর্কে ক্লায়েন্টদের আপডেট করা
Redis Sentinel ডেটা শার্ড করে না। এখনও একটিই লজিক্যাল Redis ইনস্ট্যান্স থাকে যেটি সব কী ধারণ করে।
যদি মাস্টার ফেইল করে, Sentinel একটি রেপ্লিকাকে প্রোমোট করে। একটি অ্যাপ্লিকেশন পერსপেক্টিভ থেকে, Redis মিনিমাল ইন্টারাপশন সহ কাজ চালিয়ে থাকে।
Redis Sentinel কীভাবে ইন্টারনালি কাজ করে
একটি টিপিক্যাল Redis Sentinel সেটআপ شامل:
একটি Redis মাস্টার
এক বা একাধিক Redis রেপ্লিকা
একাধিক Sentinel প্রসেস সেগুলো মনিটরিং
Sentinel-রা কনস্ট্যান্টলি মাস্টারের হেলথ চেক করে। যখন Sentinel-র একটি কোরম সম্মত হয় যে মাস্টার ডাউন, তখন একটি ফেইলোভার ট্রিগার হয়।
একটি রেপ্লিকা মাস্টার হিসেবে প্রোমোট হয়, এবং বাকি রেপ্লিকাগুলো সেটিকে ফলো করতে রিকনফিগার হয়।
মূল পয়েন্ট হলো ডেটা একই সাইজ এবং শেপে থাকে। কীগুলোর কোনো রিডিস্ট্রিবিউশন নেই।
Redis Sentinel যা করে না
Redis Sentinel করে না:
একটি সিঙ্গেল নোডের ব-delà মেমরি ক্যাপাসিটি বাড়ানো
একটি কোরের ব-delà রাইট থ্রুপুট বাড়ানো
ডেটা শার্ড বা ডিস্ট্রিবিউট করা
যদি আপনার Redis ইনস্ট্যান্স মেমরি বা CPU-র বাইরে চলে যায়, Sentinel যোগ করলে কিছু হবena। Sentinel Redis-কে উপলব্ধ রাখে, বড় করে না।
Redis Cluster যা সমাধান করে মূল সমস্যা
Redis Cluster অভেইলেবিলিটি মাত্র নয়, স্কেলেবিলিটি সমাধান করে।
এটি সমাধান করে:
একটি সিঙ্গেল মেশিনের মেমরি লিমিট
সিঙ্গেল-থ্রেডেড এক্সিকিউশনের কারণে থ্রুপুট লিমিট
Redis Cluster ডেটা শার্ড করে একাধিক মাস্টার নোড জুড়ে। প্রতিটি মাস্টার কীস্পেসের একটি সাবসেট অধিকার করে।
রেপ্লিকেশন অভেইলেবিলিটির জন্য ব্যবহার হয়, কিন্তু শার্ডিংই определяকারী ফিচার।
Redis Cluster হাই লেভেলে কীভাবে কাজ করে
Redis Cluster কীস্পেসকে ১৬,৩৮৪ হ্যাশ স্লটে ভাগ করে।
প্রতিটি মাস্টার নোড এই স্লটের একটি অংশ অধিকার করে। কীগুলো একটি হ্যাশ ফাংশন বেসডে স্লটে অ্যাসাইন হয়।
যখন একটি ক্লায়েন্ট একটি কমান্ড ইস্যু করে, এটি সেই স্লটের জন্য দায়বদ্ধ নোডে রাউট হয়।
যদি একটি মাস্টার ফেইল করে, তার রেপ্লিকাগুলোর একটি সেলফ-প্রোমোট হয় অটোমেটিক্যালি, Sentinel-এর মত, কিন্তু শুধু সেই শার্ডের জন্য।
অভেইলেবিলিটি মডেল তুলনা
Redis Sentinel প্রোভাইড করে:
এক সময়ে একটি এক্টিভ মাস্টার
ফুল ডেটাসেট একটি সিঙ্গেল নোডে
অটোমেটিক ফেইলোভার
Redis Cluster প্রোভাইড করে:
একাধিক মাস্টার
নোড জুড়ে ডেটা ডিস্ট্রিবিউটেড
শার্ড লেভেলে ফেইলোভার
Sentinel নোড ফেইলিউর থেকে রক্ষা করে। Cluster নোড ফেইলিউর এবং ক্যাপাসিটি লিমিট দুটো থেকে রক্ষা করে।
স্কেলিং ক্যারেক্টারিস্টিক্স
Redis Sentinel ভার্টিক্যালি স্কেল করে।
আপনি Redis-কে একটি বড় মেশিনে মুভ করতে পারেন, আরও মেমরি যোগ করতে পারেন, বা ফাস্টার CPU ব্যবহার করতে পারেন, কিন্তু আপনি একটি সিলিং-এ পৌঁছাবেন।
Redis Cluster হরিজেন্টালি স্কেল করে।
আপনি নোড যোগ করে মেমরি এবং থ্রুপুট বাড়াতে পারেন। প্রতিটি নোড ডেটার একটি অংশ হ্যান্ডেল করে।
একবার একটি সিঙ্গেল Redis নোড পর্যাপ্ত না হলে, Sentinel একা অপর্যাপ্ত।
অ্যাপ্লিকেশন ডিজাইন ইমপ্যাক্ট
Redis Sentinel অ্যাপ্লিকেশনের জন্য মোটামুটি ট্রান্সপারেন্ট।
অ্যাপ্লিকেশনগুলো এখনও মনে করে তারা একটি Redis ইনস্ট্যান্সের সাথে কথা বলছে। ক্লায়েন্টরা ফেইলোভারের পর নতুন মাস্টারের সাথে রিকানেক্ট করে।
Redis Cluster ক্লায়েন্ট-অয়ের ক্লায়েন্টস দরকার।
অ্যাপ্লিকেশনগুলোকে অবশ্যই:
রিডাইরেকশন হ্যান্ডেল করতে হবে
হ্যাশ স্লট বাউন্ডারি মেনে চলতে হবে
অনসাপোর্টেড মাল্টি-কী অপারেশন এড়াতে হবে
Cluster অ্যাডপশন কী ডিজাইন এবং ডেটা মডেলিং-এ উল্লেখযোগ্যভাবে প্রভাব ফেলে।
মাল্টি-কী অপারেশন এবং ট্রানজ্যাকশন
Redis Sentinel-র সাথে:
সব কী এক মাস্টারে থাকে
মাল্টি-কী অপারেশন নরমালি কাজ করে
ট্রানজ্যাকশন এবং Lua স্ক্রিপ্ট এক্সপেক্টেড ভাবে behave করে
Redis Cluster-র সাথে:
কীগুলো ভিন্ন নোডে থাকতে পারে
মাল্টি-কী অপারেশন শুধু সেম হ্যাশ স্লটের মধ্যে কাজ করে
ক্রস-স্লট অপারেশন ফেইল করে
এই একক পার্থক্যই প্রায়শই টিমরা Redis Cluster-এ মাইগ্রেট করার সময় সবচেয়ে বড় শক পান।
অপারেশনাল কমপ্লেক্সিটি
Redis Sentinel মডারেট অপারেশনাল কমপ্লেক্সিটি আনে।
আপনি ম্যানেজ করেন:
মাস্টার এবং রেপ্লিকাস
Sentinel কোরম
ফেইলোভার বিহেভিয়র
Redis Cluster উল্লেখযোগ্যভাবে বেশি কমপ্লেক্সিটি আনে।
আপনি ম্যানেজ করেন:
একাধিক মাস্টার এবং রেপ্লিকাস
স্লট অ্যালোকেশন এবং ব্যালেন্সিং
রিশার্ডিং অপারেশন
ক্লায়েন্ট কম্প্যাটিবিলিটি
Cluster শক্তিশালী অপারেশনাল ডিসিপ্লিন ডিমান্ড করে।
Redis Sentinel কখন সঠিক চয়েস
Redis Sentinel একটি ভালো ফিট যখন:
ডেটাসেট এক মেশিনে কমফরটেবলি ফিট হয়
রাইট থ্রুপুট একটি সিঙ্গেল কোরের মধ্যে ফিট হয়
হাই অভেইলেবিলিটি রিকোয়ার্ড
অ্যাপ্লিকেশন লজিক মাল্টি-কী অপারেশনে ডিপেন্ড করে
অনেক সিস্টেম سال ধরে Sentinel একা দিয়ে সফলতার সাথে চলে।
Redis Cluster কখন সঠিক চয়েস
Redis Cluster উপযুক্ত যখন:
মেমরি রিকোয়ার্ডমেন্ট এক সিঙ্গেল নোডকে ছাড়িয়ে যায়
থ্রুপুট नीডস বৃদ্ধি পায়
হরিজেন্টাল স্কেলিং রিকোয়ার্ড
অ্যাপ্লিকেশন শার্ডিংয়ের জন্য ডিজাইন করা যেতে পারে
Cluster একটি স্কেলিং স্ট্র্যাটেজি, শুধু ফেইলোভার মেকানিজম নয়।
সাধারণ মাইগ্রেশন মিস্টেক
টিমরা প্রায়শই:
Redis Cluster খুব আর্লি অ্যাডপ্ট করে
ধরে নেয় Sentinel এবং Cluster ইন্টারচেঞ্জেবল
কী ডিজাইন ইমপ্লিকেশন উপেক্ষা করে
মাল্টি-কী লিমিটেশন খুব লেটে ডিসকভার করে
এই মিস্টেকগুলো সাধারণত রাশ রিফ্যাক্টরিং-এ ফলাফল দেয়।
একটি সিম্পল ডিসিশন রুল
Redis Sentinel ব্যবহার করুন যখন:
আপনি হাই অভেইলেবিলিটি চান আপনার ডেটা মডেল পরিবর্তন ছাড়া
Redis Cluster ব্যবহার করুন যখন:
আপনাকে Redis-কে এক মেশিনের বeyond স্কেল করতে হবে
আপনি যদি Cluster বেছে নেন, তাহলে এর জন্য ডিজাইন করুন আর্লি, যদিও আপনি তৎক্ষণেটা ইনএবল না করুন।
সারসংক্ষেপ
Redis Sentinel এবং Redis Cluster কমপ্লিমেন্টারি টেকনোলজি যেগুলো ভিন্ন সিস্টেম প্রেশার অ্যাড্রেস করে। Sentinel একটি সিঙ্গেল ডেটাসেটের জন্য সার্ভিস কন্টিনিউইটি নিশ্চিত করে। Cluster Redis-কে মেশিন জুড়ে স্কেল করতে সক্ষম করে। সঠিক পদ্ধতি বেছে নেওয়া নির্ভর করে যে অভেইলেবিলিটি নাকি স্কেলেবিলিটি আর্কিটেকচারাল ড্রাইভার।