Redis Sharding

Redis Sharding



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

পরিমাপযোগ্যতা

একটি সার্ভার স্কেলিং করার জন্য দুটি সাধারণ পদ্ধতি রয়েছে: উল্লম্ব স্কেলিং এবং অনুভূমিক স্কেলিং। উল্লম্ব স্কেলিং বা স্কেলিং আপ যেখানে আপনি আপনার সার্ভারে আরও শক্তি এবং সংস্থান যোগ করেন, যেমন আরও CPU, মেমরি এবং স্টোরেজ, যা ব্যয়বহুল। অন্যদিকে, অনুভূমিক স্কেলিং আপনার বিদ্যমান রিসোর্স পুলে একাধিক নোড যোগ করছে। একে বলে স্কেলিং আউট। সুতরাং, আপনার সীমাবদ্ধতা এবং প্রয়োজনীয়তার উপর ভিত্তি করে, একটি একক বড় সার্ভারের উদাহরণ বা একাধিক সার্ভার নোড স্থাপন করা আপনার উপর নির্ভর করে।

ধরে নিন আপনার 100 গিগাবাইট RAM আছে এবং 200 গিগাবাইট ডেটা রাখতে হবে। এই ক্ষেত্রে, আপনার দুটি পছন্দ আছে:







  • সিস্টেমে আরও RAM যোগ করে স্কেল আপ করুন
  • 100 গিগাবাইট RAM এর সাথে অন্য সার্ভারের উদাহরণ যোগ করে স্কেল আউট করুন

আপনি যদি আপনার পরিকাঠামোর মধ্যে সর্বোচ্চ RAM সীমাতে পৌঁছে থাকেন, তাহলে স্কেল আউট করাই হল আদর্শ পদ্ধতি। উপরন্তু, স্কেল আউট ডাটাবেস থ্রুপুট একটি বিশাল ব্যবধানে বৃদ্ধি করবে।





Redis Sharding

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





স্কেলিংকে মাথায় রেখে একাধিক সার্ভারের মধ্যে ডেটা বিভক্ত বা বিতরণের এই পদ্ধতিকে বলা হয় শার্ডিং . যে সমস্ত সার্ভার ডেটার অংশগুলি সঞ্চয় করে সেগুলিকে বলা হয় shards .



কিভাবে Sharding করা হয় — অ্যালগরিদমিক Sharding

শার্ডিংয়ের প্রধান উদ্বেগের মধ্যে একটি হল একাধিক রেডিস নোডের মধ্যে একটি প্রদত্ত কী কীভাবে সনাক্ত করা যায়। যেহেতু একটি প্রদত্ত কী যেকোন উপলব্ধ শার্ডগুলিতে সংরক্ষণ করা যেতে পারে, একটি নির্দিষ্ট কী খুঁজতে সমস্ত শার্ডগুলি অনুসন্ধান করা সর্বোত্তম বিকল্প নয়। সুতরাং, একটি নির্দিষ্ট শার্ডে প্রতিটি কী ম্যাপ করার একটি উপায় থাকা উচিত এবং রেডিস একটি অ্যালগরিদমিক শার্ডিং কৌশল ব্যবহার করে।

রেডিস কী নাম এবং মডিউল ব্যবহার করে একটি হ্যাশ মান গণনা করা সবচেয়ে সাধারণ পদ্ধতি। তারপরে, সিস্টেমে উপলব্ধ Redis shards দ্বারা এটি ভাগ করুন।

HASH_SLOT = CRC16(কী) মোড 16384

যতক্ষণ পর্যন্ত মোট শার্ডের সংখ্যা স্থির থাকে ততক্ষণ এটি বেশ ভাল সমাধান। যখনই আপনি একটি নতুন Reids সার্ভারের উদাহরণ যোগ করেন, একটি প্রদত্ত কী-এর ফলাফলের মান পরিবর্তিত হতে পারে যেহেতু শার্ডের মোট সংখ্যা বৃদ্ধি পেয়েছে। এটি ভুল রেডিস শার্ডকে জিজ্ঞাসা করা শেষ করবে। তাই, প্রতিটি কী-এর জন্য নতুন শার্ড গণনা করে এবং সঠিক সার্ভারে ডেটা স্থানান্তর করার মাধ্যমে আপনার রিশার্ডিং প্রক্রিয়া অনুসরণ করা উচিত, যা কষ্টকর এবং একটি তুচ্ছ কাজ নয় যদি আপনার মোট শার্ডের সংখ্যা সময়ে সময়ে বাড়তে থাকে।

রেডিস একটি নতুন যৌক্তিক সত্তা ব্যবহার করে যার নাম a হ্যাশ স্লট এই সমস্যা প্রতিরোধ করতে। একটি প্রদত্ত শার্ডের জন্য বেশ কয়েকটি হ্যাশ স্লট উপলব্ধ, এবং একটি একক হ্যাশ স্লট একাধিক Redis কী ধরে রাখতে পারে। একটি রেডিস ডাটাবেস ক্লাস্টারে 16384টি হ্যাশ স্লট রয়েছে যা অপরিবর্তিত রয়েছে। শার্ড গণনার পরিবর্তে হ্যাশ স্লটের সংখ্যা দিয়ে মডুলো বিভাগ করা হয়। এটি নির্দিষ্ট কীটির জন্য হ্যাশ স্লটের সঠিক অবস্থান প্রদান করে এমনকি শার্ডের সংখ্যা বৃদ্ধি পেলেও। এটি হ্যাশ স্লটগুলিকে একটি শার্ড থেকে নতুনটিতে স্থানান্তর করার মাধ্যমে রিশার্ডিং প্রক্রিয়াটিকে সহজ করে যা প্রয়োজন অনুসারে বিভিন্ন রেডিস দৃষ্টান্ত জুড়ে ডেটা বিভক্ত করে।

Redis Sharding এর সুবিধা

রেডিস শার্ডিং ন্যূনতম পরিবর্তনের সাথে আপনার ডাটাবেস সিস্টেমে বিভিন্ন সুবিধা সক্ষম করে।

উচ্চ থ্রুপুট

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

উচ্চ প্রাপ্যতা

শার্ডিং পদ্ধতির সাথে, রেডিস ক্লাস্টার একটি মাস্টার-রেপ্লিকা আর্কিটেকচার সেট আপ করতে পারে যা উচ্চ প্রাপ্যতা এবং স্থায়িত্ব নিশ্চিত করে।

প্রতিলিপি পড়ুন

Sharding আপনাকে আপনার ডেটার একটি সঠিক কপি রাখতে এবং পৃথক Redis দৃষ্টান্তের মাধ্যমে পঠিত ক্রিয়াকলাপ প্রদান করতে সক্ষম করে, যা আপনার পঠিত ক্যোয়ারী সম্পাদনের কার্যক্ষমতা বাড়ায়।

এই সুবিধাগুলি ছাড়াও, রেডিস ক্লাস্টারে আপনার সমান সংখ্যক শার্ড থাকলে শার্ডিং বিভক্ত-মস্তিষ্কের পরিস্থিতি সৃষ্টি করতে পারে। সুতরাং, আপনার রেডিস ক্লাস্টারে বিজোড় সংখ্যক শার্ডগুলি রাখার সুপারিশ করা হয়।

উপসংহার

সংক্ষেপে বলতে গেলে, রেডিস শার্ডিং একাধিক সার্ভারের মধ্যে ডেটা বিভক্ত করছে, যা আপনার ডাটাবেসের জন্য স্কেলিং এবং উচ্চ থ্রুপুট সক্ষম করে। যেমন আলোচনা করা হয়েছে, রেডিস একটি অ্যালগরিদমিক শার্ডিং কৌশল ব্যবহার করে ক্লায়েন্টের অনুরোধগুলিকে সঠিক শার্ডে নির্দেশ করতে। শার্ডের মোট সংখ্যা বেড়ে গেলে এর কিছু ত্রুটি রয়েছে। সুতরাং, মোট শার্ড সংখ্যার পরিবর্তে, রেডিস উপযুক্ত শার্ড গণনা করতে হ্যাশ স্লটের সংখ্যা ব্যবহার করে। শার্ডিং চালু করার সাথে, রেডিস ডাটাবেসগুলি উচ্চ প্রাপ্যতা, উচ্চ থ্রুপুট এবং উচ্চ কার্যকারিতা প্রদান করে।