درباره عامل تکثیر Cassandra و سطح سازگاری

درباره فاکتور تکرار Cassandra

Cassandra نسخه‌های تکراری داده‌ها را در چندین گره ذخیره می‌کند تا اطمینان‌پذیری و تحمل خطا را تضمین کند. استراتژی تکرار برای هر فضای کلید Edge گره‌هایی را که تکرارها در آن قرار می‌گیرند تعیین می‌کند.

تعداد کل نسخه‌های تکراری برای یک فضای کلید در سراسر خوشه کاساندرا به‌عنوان عامل تکرار فضای کلید شناخته می‌شود. عامل تکرار یک یعنی فقط یک نسخه از هر ردیف در خوشه Cassandra وجود دارد. عامل تکرار دو یعنی دو نسخه از هر ردیف وجود دارد که هر نسخه در گره متفاوتی قرار دارد. همه نسخه‌های تکراری به یک اندازه مهم هستند؛ نسخه تکراری اصلی یا مرجع وجود ندارد.

در سیستم تولیدی با سه یا چند گره Cassandra در هر مرکز داده، عامل تکرار پیش‌فرض برای فضای کلید Edge سه است. به‌عنوان یک قانون کلی، عامل تکرار نباید از تعداد گره‌های Cassandra در خوشه فراتر رود.

از روش زیر برای مشاهده طرح‌واره Cassandra استفاده کنید که ضریب تکرار را برای هر فضای کلید Edge نشان می‌دهد:

  1. به سیستم گره Cassandra وارد شوید.
  2. فرمان زیر را اجرا کنید:
    /opt/apigee/apigee-cassandra/bin/cassandra-cli -h $(hostname -i) <<< "show schema;"

    که $(hostname -i) به نشانی IP گره Cassandra تبدیل می‌شود. یا می‌توانید $(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 برای عملیات خواندن و نوشتن، گره‌های «پردازشگر پیام» و «سرور مدیریت» معمولاً از مقدار Cassandra LOCAL_QUORUM برای مشخص کردن سطح سازگاری برای فضای کلید استفاده می‌کنند. بااین‌حال، برخی‌از فضاهای کلید به‌گونه‌ای تعریف شده‌اند که از سطح سازگاری یک استفاده کنند.

محاسبه مقدار LOCAL_QUORUM برای مرکز داده عبارت است از:

LOCAL_QUORUM = (replication_factor/2) + 1

همان‌طور که در بالا توضیح داده شد، ضریب تکرار پیش‌فرض برای محیط تولید Edge با سه گره Cassandra سه است. بنابراین، مقدار پیش‌فرض LOCAL_QUORUM = (3/2) +1 = 2 (مقدار به عدد صحیح گرد می‌شود).

با LOCAL_QUORUM = 2، حداقل دو گره از سه گره Cassandra در مرکز داده باید به عملیات خواندن/نوشتن پاسخ دهند تا عملیات موفقیت‌آمیز باشد. بنابراین، برای خوشه Cassandra با سه گره، خوشه می‌تواند ازکارافتادن یک گره در هر مرکز داده را تحمل کند.

با مشخص کردن سطح سازگاری به‌عنوان LOCAL_QUORUM، Edge از تأخیر موردنیاز برای اعتبارسنجی عملیات در چندین مرکز داده جلوگیری می‌کند. اگر فضای کلید از مقدار Cassandra QUORUM به‌عنوان سطح سازگاری استفاده می‌کرد، عملیات خواندن/نوشتن باید در همه مراکز داده اعتبارسنجی می‌شد.

برای دیدن سطح سازگاری استفاده‌شده توسط گره‌های Edge Message Processor یا Management Server:

  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. به گره Management Server وارد شوید.
  6. به فهرست راهنمای /opt/apigee/edge-management-server/conf بروید:
    cd /opt/apigee/edge-management-server/conf
  7. مراحل ۳ و ۴ را تکرار کنید.

اگر گره‌های Cassandra بیشتری به خوشه اضافه کنید، سطح سازگاری تحت‌تأثیر قرار نمی‌گیرد.