Cassandra রেপ্লিকেশন ফ্যাক্টর ও কনসিস্টেন্সি লেভেল সম্পর্কে

Cassandra রেপ্লিকেশন ফ্যাক্টর সম্পর্কে

নির্ভরযোগ্যতা এবং ত্রুটি সহনশীলতা নিশ্চিত করতে Cassandra একাধিক নোডে ডেটা রেপ্লিকা স্টোর করে। প্রতিটি Edge কীস্পেসের জন্য রেপ্লিকেশন স্ট্র্যাটেজি নির্ধারণ করে যে রেপ্লিকাগুলি কোন নোডে রাখা হবে।

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

প্রতিটি ডেটা সেন্টারে তিন বা তার বেশি Cassandra নোড সহ প্রোডাকশন সিস্টেমে, Edge কীস্পেসের জন্য ডিফল্ট রেপ্লিকেশন ফ্যাক্টর হল তিন। সাধারণ নিয়ম হিসেবে, রেপ্লিকেশন ফ্যাক্টর ক্লাস্টারে Cassandra নোডের সংখ্যাকে অতিক্রম করা উচিত নয়।

Cassandra স্কিমা দেখতে নিম্নলিখিত পদ্ধতি ব্যবহার করুন, যা প্রতিটি Edge কীস্পেসের জন্য রেপ্লিকেশন ফ্যাক্টর দেখায়:

  1. Cassandra নোডে লগ-ইন করুন।
  2. এই কমান্ড রান করুন:
    /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"

    যেখানে $(hostname -i) Cassandra নোডের IP অ্যাড্রেসে রিজলভ করে। অথবা আপনি $(hostname -i)-এর পরিবর্তে নোডের IP অ্যাড্রেস ব্যবহার করতে পারেন।

প্রতিটি কীস্পেসের জন্য, আপনি এই ফর্ম্যাটে আউটপুট দেখতে পাবেন:

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 কনসিস্টেন্সি লেভেলকে 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 ভ্যালু ব্যবহার করে, তাহলে সব ডেটা সেন্টার জুড়ে রিড/রাইট অপারেশন যাচাই করতে হবে।

এজ মেসেজ প্রসেসর বা ম্যানেজমেন্ট সার্ভার নোড দ্বারা ব্যবহৃত কনসিস্টেন্সি লেভেল দেখতে:

  1. মেসেজ প্রসেসর নোডে লগ-ইন করুন।
  2. /opt/apigee/edge-message-processor/conf ডিরেক্টরিতে পরিবর্তন করুন:
    cd /opt/apigee/edge-message-processor/conf
  3. লেখার ধারাবাহিকতার জন্য:
    grep -ri "write.consistencylevel" *
  4. পড়ার ধারাবাহিকতার জন্য:
    grep -ri "read.consistencylevel" *
  5. ম্যানেজমেন্ট সার্ভার নোডে লগ-ইন করুন।
  6. /opt/apigee/edge-management-server/conf ডিরেক্টরিতে পরিবর্তন করুন:
    cd /opt/apigee/edge-management-server/conf
  7. ৩ ও ৪ নম্বর ধাপ আবার করুন।

আপনি ক্লাস্টারে অতিরিক্ত Cassandra নোড যোগ করলে, কনসিস্টেন্সি লেভেল প্রভাবিত হয় না।