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

Edge for Private Cloud v. 4.17.05

درباره عامل تکثیر 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) به نشانی 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»:

  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 بیشتری به خوشه اضافه کنید، سطح سازگاری تحت تأثیر قرار نمی‌گیرد.