JavadAgha
JavadAgha
خواندن ۳ دقیقه·۶ ماه پیش

الگوهای خواندن replica

دو روش رایج برای پیاده سازی الگوی نسخه replica خواندن وجود دارد:

  1. تعبیه منطق مسیریابی در کد برنامه.
  2. استفاده از میان‌افزار پایگاه داده.


استفاده از میان‌افزار پایگاه داده


میان‌افزار مسیریابی واضحی بین برنامه و سرورهای پایگاه داده را فراهم می‌کند. می‌توانیم منطق مسیریابی را بر اساس قواعد خاصی مانند کاربر، طرح، دستورات و غیره سفارشی کنیم.


  1. زمانی که آلیس سفارشی در آمازون ثبت می‌کند، درخواست به سرویس سفارش ارسال می‌شود.
  2. سرویس سفارش به طور مستقیم با پایگاه داده تعامل ندارد. در عوض، آن درخواست‌های پایگاه داده را به میان‌افزار پایگاه داده ارسال می‌کند.
  3. میان‌افزار پایگاه داده نوشتن‌ها را به پایگاه داده اصلی هدایت می‌کند. داده‌ها به دو نسخه تکراری تکثیر می‌شوند.
  4. آلیس جزئیات سفارش را مشاهده می‌کند (خواندن). درخواست از طریق میان‌افزار ارسال می‌شود.
  5. آلیس سابقه سفارش‌های اخیر را مشاهده می‌کند (خواندن). درخواست از طریق میان‌افزار ارسال می‌شود.

میان‌افزار پایگاه داده به عنوان یک پروکسی بین برنامه و پایگاه داده‌ها عمل می‌کند. آن از پروتکل شبکه استاندارد MySQL برای ارتباط استفاده می‌کند.

مزایا:

کد برنامه ساده‌تر می‌شود. برنامه نیازی به آگاهی از توپولوژی پایگاه داده و مدیریت دسترسی مستقیم به پایگاه داده ندارد.

سازگاری بهتر. میان‌افزار از پروتکل شبکه MySQL استفاده می‌کند. هر کلاینت سازگار با MySQL می‌تواند به راحتی به میان‌افزار متصل شود. این امر انتقال پایگاه داده را آسان‌تر می‌کند.

معایب:

افزایش پیچیدگی سیستم. یک میان افزار پایگاه داده یک سیستم پیچیده است. از آنجایی که تمام درخواست های پایگاه داده از طریق میان افزار می گذرند، معمولا نیاز به یک تنظیم با قابلیت دسترسی بالا برای جلوگیری از یک نقطه شکست تک دارد.

لایه میان افزار اضافی به معنای تاخیر شبکه اضافی است. بنابراین، این لایه نیازمند عملکرد عالی است.



تعبیه منطق مسیریابی در کد برنامه



در این تنظیمات، تمام دستورات تغییردهنده داده مانند درج، حذف یا به‌روزرسانی به پایگاه داده اصلی ارسال می‌شوند و خواندن‌ها به نسخه‌های تکراری و تکثیر شده جهت خواندن فرستاده می‌شوند.

  1. زمانی که آلیس در آمازون سفارشی ثبت می‌کند، درخواست به سرویس سفارش ارسال می‌شود.
  2. سرویس سفارش یک رکورد درباره سفارش در پایگاه داده اصلی ایجاد می‌کند (نوشتن). داده‌ها به دو نسخه تکراری تکثیر می‌شوند.
  3. آلیس جزئیات سفارش را مشاهده می‌کند. داده‌ها از یک نسخه تکثیر شده سرویس داده می‌شوند (خواندن).
  4. آلیس سابقه سفارش‌های اخیر را مشاهده می‌کند. داده‌ها از یک نسخه تکثیر شده سرویس داده می‌شوند (خواندن).


یک مشکل عمده در این تنظیمات وجود دارد: تاخیر تکثیر (𝐫𝐞𝐩𝐥𝐢𝐜𝐚𝐭𝐢𝐨𝐧 𝐥𝐚𝐠).

در شرایط خاصی (تاخیر شبکه، اشباع سرور و غیره)، ممکن است داده‌ها در نسخه‌های تکثیر شده، چند ثانیه یا حتی چند دقیقه عقب باشند. در این حالت، اگر آلیس بلافاصله پس از ثبت سفارش، وضعیت سفارش را بررسی کند (درخواست پرس و جو از نسخه تکثیر شده سرویس داده می‌شود) و حتی ممکن است اصلاً سفارشی را مشاهده نکند. این باعث سردرگمی آلیس می‌شود. در این حالت، ما به "هماهنگی خواندن پس از نوشتن" نیاز داریم.

راه‌حل‌های ممکن برای کاهش این مشکل:

  1. خواندن‌های حساس به تاخیر به پایگاه داده اصلی ارسال می‌شوند.
  2. خواندن‌هایی که بلافاصله پس از نوشتن‌ها انجام می‌شوند، به پایگاه داده اصلی هدایت می‌شوند.
  3. یک پایگاه داده رابطه‌ای معمولاً راهی برای بررسی اینکه آیا یک نسخه تکراری با اصلی همگام شده است یا خیر، فراهم می‌کند. اگر داده‌ها به‌روز هستند، از نسخه تکثیر شده پرس و جو کنید. در غیر این صورت، درخواست خواندن را رد کنید یا از پایگاه داده اصلی بخوانید.


پایگاه دادهreplicationطراحی سیستم های نرم افزاریمهندسی نرم افزارdeveloper
کنجکاو در مباحث مهندسی نرم افزار
شاید از این پست‌ها خوشتان بیاید