Cassandra রেপ্লিকেশন ফ্যাক্টর সম্পর্কে
নির্ভরযোগ্যতা ও ফল্ট টলারেন্স নিশ্চিত করতে Cassandra একাধিক নোডে ডেটা রেপ্লিকা স্টোর করে। প্রতিটি এজ কীস্পেসের জন্য রেপ্লিকেশন স্ট্র্যাটেজি নির্ধারণ করে যে নোডগুলিতে রেপ্লিকা রাখা হয়।
Cassandra ক্লাস্টার জুড়ে একটি কীস্পেসের জন্য রেপ্লিকার মোট সংখ্যাকে কীস্পেসের রেপ্লিকেশন ফ্যাক্টর বলা হয়। রেপ্লিকেশন ফ্যাক্টর এক হলে বুঝতে হবে যে Cassandra ক্লাস্টারে প্রতিটি সারির একটি করে কপি আছে। রেপ্লিকেশন ফ্যাক্টর দুই হলে, এর অর্থ হল প্রতিটি সারির দুটি কপি আছে, যেখানে প্রতিটি কপি আলাদা আলাদা নোডে আছে। সব রেপ্লিকা সমান গুরুত্বপূর্ণ; কোনও প্রাথমিক বা মাস্টার রেপ্লিকা নেই।
প্রতিটি ডেটা সেন্টারে তিন বা তার বেশি Cassandra নোড সহ প্রোডাকশন সিস্টেমে, Edge কীস্পেসের জন্য ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল তিন। সাধারণ নিয়ম অনুযায়ী, রেপ্লিকেশন ফ্যাক্টর ক্লাস্টারে ক্যাসান্ড্রা নোডের সংখ্যার থেকে বেশি হওয়া উচিত নয়।
Cassandra স্কিমা দেখতে নিম্নলিখিত পদ্ধতি ব্যবহার করুন, যা প্রতিটি Edge কীস্পেসের জন্য রেপ্লিকেশন ফ্যাক্টর দেখায়:
- Cassandra নোডে লগ-ইন করুন।
- নিম্নলিখিত কমান্ড রান করুন:
/opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"
যেখানে
$(hostname -i)Cassandra নোডের IP অ্যাড্রেসে সমাধান করে। অথবা আপনি নোডের IP অ্যাড্রেস দিয়ে$(hostname -i)পাল্টে দিতে পারেন।
প্রতিটি কীস্পেসের জন্য, আপনি এই ফর্ম্যাটে আউটপুট দেখতে পাবেন:
create keyspace kms
with placement_strategy = 'NetworkTopologyStrategy'
and strategy_options = {dc-1 : 3}
and durable_writes = true;আপনি দেখতে পাবেন যে ডেটা সেন্টার ১, dc-1-এর জন্য, তিনটি ক্যাসান্ড্রা নোড সহ
ইনস্টলেশনের জন্য kms কীস্পেসের ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল তিন।
আপনি ক্লাস্টারে অতিরিক্ত Cassandra নোড যোগ করলে, ডিফল্ট রেপ্লিকেশন ফ্যাক্টর প্রভাবিত হয় না।
যেমন, আপনি যদি Cassandra নোডের সংখ্যা বাড়িয়ে ছয় করেন, কিন্তু রেপ্লিকেশন ফ্যাক্টর তিনই রেখে দেন, তাহলে আপনি নিশ্চিত করতে পারবেন না যে সব Cassandra নোডে সব ডেটার কপি আছে। কোনও নোড ডাউন হয়ে গেলে, বেশি রেপ্লিকেশন ফ্যাক্টর মানে হল, নোডের ডেটা বাকি নোডগুলির মধ্যে কোনও একটিতে থাকার সম্ভাবনা বেশি। রেপ্লিকেশন ফ্যাক্টর বেশি হলে ডেটা লেখার ক্ষেত্রে লেটেন্সি বেড়ে যায়।
Cassandra কনসিস্টেন্সি লেভেল সম্পর্কে
Cassandra কনসিস্টেন্সি লেভেলকে Cassandra নোডের ন্যূনতম সংখ্যা হিসেবে সংজ্ঞায়িত করা হয় যা কোনও অপারেশন সফল হয়েছে বলে বিবেচনা করার আগে অবশ্যই রিড বা রাইট অপারেশন স্বীকার করতে হবে। Edge-এর বিভিন্ন কীস্পেসে আলাদা আলাদা কনসিস্টেন্সি লেভেল অ্যাসাইন করা যেতে পারে।
রিড ও রাইট অপারেশনের জন্য Cassandra-র সাথে কানেক্ট করার সময়, মেসেজ প্রসেসর ও ম্যানেজমেন্ট
সার্ভার নোড সাধারণত LOCAL_QUORUM-এর Cassandra ভ্যালু ব্যবহার করে
কীস্পেসের জন্য কনসিস্টেন্সি লেভেল নির্দিষ্ট করে। তবে, কিছু কীস্পেসকে একটি
কনসিস্টেন্সি লেভেল ব্যবহার করার জন্য সংজ্ঞায়িত করা হয়।
ডেটা সেন্টারের জন্য LOCAL_QUORUM-এর ভ্যালু গণনা করার পদ্ধতি হল:
LOCAL_QUORUM = (replication_factor/2) + 1
উপরে বর্ণিত, তিনটি Cassandra নোড সহ Edge প্রোডাকশন এনভায়রনমেন্টের জন্য ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল তিন।
তাই, LOCAL_QUORUM-এর ডিফল্ট ভ্যালু =
(৩/২) +১ = ২ (ভ্যালু পূর্ণসংখ্যায় রাউন্ড ডাউন করা হয়েছে)।
LOCAL_QUORUM = 2 হলে, ডেটা সেন্টারের মধ্যে থাকা তিনটি Cassandra নোডের মধ্যে অন্তত দুটিকে
রিড/রাইট অপারেশনের উত্তর দিতে হবে, তবেই অপারেশনটি সফল হবে। তিনটি নোড
Cassandra ক্লাস্টারের ক্ষেত্রে, ক্লাস্টারটি তাই প্রতিটি ডেটা সেন্টার পিছু একটি নোড ডাউন হয়ে যাওয়া সহ্য করতে পারে।
কনসিস্টেন্সি লেভেল LOCAL_QUORUM হিসেবে নির্দিষ্ট করার মাধ্যমে, একাধিক ডেটা সেন্টার জুড়ে অপারেশন যাচাই করার জন্য Edge-এর প্রয়োজনীয় লেটেন্সি
এড়িয়ে যায়। কোনও কীস্পেস কনসিস্টেন্সি লেভেল হিসেবে Cassandra
QUORUM ভ্যালু ব্যবহার করলে, রিড/রাইট অপারেশনকে
সব ডেটা সেন্টার জুড়ে যাচাই করতে হবে।
Edge Message Processor বা ম্যানেজমেন্ট সার্ভার নোড দ্বারা ব্যবহৃত ধারাবাহিকতার লেভেল দেখতে:
- Message Processor নোডে লগ-ইন করুন।
- /opt/apigee/edge-message-processor/conf ডিরেক্টরিতে পরিবর্তন করুন:
cd /opt/apigee/edge-message-processor/conf
- রাইট কনসিস্টেন্সির জন্য:
grep -ri "write.consistencylevel" *
- রিড কনসিস্টেন্সির জন্য:
grep -ri "read.consistencylevel" *
- ম্যানেজমেন্ট সার্ভার নোডে লগ-ইন করুন।
- /opt/apigee/edge-management-server/conf ডিরেক্টরিতে পরিবর্তন করুন:
cd /opt/apigee/edge-management-server/conf
- ৩ ও ৪ নম্বর ধাপ আবার করুন।
আপনি ক্লাস্টারে অতিরিক্ত Cassandra নোড যোগ করলে, কনসিস্টেন্সি লেভেল প্রভাবিত হয় না।