درباره عامل تکثیر Cassandra
Cassandra برای اطمینان از قابلیت اطمینان و تحمل خطا، رونوشتهای داده را در چندین گره ذخیره میکند. استراتژی تکثیر برای هر فضای کلید Edge تعیین میکند که رونوشتها در کدام گرهها قرار میگیرند.
تعداد کل رونوشتها برای یک فضای کلید در سراسر خوشه Cassandra بهعنوان عامل تکثیر فضای کلید نامیده میشود. عامل تکثیر یک به این معنی است که فقط یک نسخه از هر ردیف در خوشه Cassandra وجود دارد. عامل تکثیر دو به این معنی است که دو نسخه از هر ردیف وجود دارد و هر نسخه در گرهای متفاوت است. همه رونوشتها به یک اندازه مهم هستند؛ رونوشت اصلی یا سرپرست وجود ندارد.
در سیستم تولید با سه یا چند گره Cassandra در هر مرکز داده، عامل تکثیر پیشفرض برای فضای کلید Edge سه است. بهطورکلی، عامل تکثیر نباید از تعداد گرههای Cassandra در خوشه بیشتر باشد.
از روش زیر برای مشاهده طرحواره Cassandra استفاده کنید که عامل تکثیر را برای هر فضای کلید Edge نشان میدهد:
- به سیستم گره Cassandra وارد شوید.
- فرمان زیر را اجرا کنید:
/opt/apigee/apigee-cassandra/bin/cqlsh $(hostname -i) [-u
cassuser-pcasspass] -e "select keyspace_name, replication from system_schema.keyspaces;"که در آن
$(hostname -i)به نشانی IP گره Cassandra حل میشود. یا میتوانید$(hostname -i)را با نشانی IP گره جایگزین کنید.
cassuser: اگر اصالتسنجی Cassandra را فعال کردهاید، نام کاربری Cassandra را ارسال کنید. این مرحله اختیاری است و اگر اصالتسنجی Cassandra را فعال نکردهاید میتوانید از آن رد شوید.
casspass: اگر اصالتسنجی Cassandra را فعال کردهاید، گذرواژه Cassandra را ارسال کنید. این مرحله اختیاری است و اگر اصالتسنجی Cassandra را فعال نکردهاید میتوانید از آن رد شوید.
بروندادی مانند برونداد زیر خواهید دید که در آن هر ردیف نشاندهنده یک فضای کلید است:
keyspace_name | replication kms | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'} system_distributed | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} apprepo | {'class': 'org.apache.cassandra.locator.NetworkTopologyStrategy', 'dc-1': '3'}
میبینید که برای مرکز داده ۱، dc-1، عامل تکثیر پیشفرض برای فضای کلید kms در نصب با سه گره Cassandra سه است. برای برخیاز فضاهای کلید داخلی Cassandra (مثل system، system_schema، و غیره)، استراتژی تکثیر و عامل تکثیر ممکن است متفاوت باشد. این رفتار عمدی سیستم است.
اگر گرههای 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 بهعنوان سطح سازگاری استفاده کند، عملیات خواندن/نوشتن باید در همه مراکز داده
اعتبارسنجی شود.
برای دیدن سطح سازگاری استفادهشده توسط گرههای «پردازشگر پیام لبهای» یا «سرور مدیریت»:
- به سیستم گره «پردازشگر پیام» وارد شوید.
- به فهرست راهنمای
/opt/apigee/edge-message-processor/confتغییر دهید:cd /opt/apigee/edge-message-processor/conf
- برای سازگاری خواندن و نوشتن:
grep -ri "consistency.level" *
- به سیستم گره «سرور مدیریت» وارد شوید.
- به فهرست راهنمای
/opt/apigee/edge-management-server/confتغییر دهید:cd /opt/apigee/edge-management-server/conf
- مرحله ۳ را تکرار کنید.
اگر گرههای Cassandra بیشتری به خوشه اضافه کنید، سطح سازگاری تحت تأثیر قرار نمیگیرد.