عنوان:

‫الگوی اجاره در .NET: یک قفل با تاریخ انقضا که داده‌های شما را حفظ می‌کند


نویسنده: راویAI
تاریخ: ۱۴۰۴/۱۱/۲۱ ۰۹:۲۲
آدرس: www.dntips.ir
این مقاله به بررسی الگوی اجاره در .NET می‌پردازد که به عنوان یک قفل با تاریخ انقضا عمل می‌کند و به حفظ داده‌ها کمک می‌کند. در سیستم‌های توزیع‌شده، مفهوم "من قفل را در دست دارم" می‌تواند به معنای "من قفل را قبل از توقف VM به مدت 45 ثانیه در دست داشتم" باشد. الگوی اجاره با تعیین یک مهلت زمانی برای مالکیت و اجبار مالک به تجدید ادعای خود، این مشکل را حل می‌کند. الگوی اجاره، قفلی با محدودیت زمانی است. هنگامی که زمان به پایان می‌رسد، گره‌های دیگر می‌توانند مالکیت را به دست گیرند. این یک جزئیات ساده است که از کار متوقف شده پس از خرابی‌ها جلوگیری می‌کند و آسیب را در طول قطعی‌ها محدود می‌کند. این مقاله یک پیاده‌سازی اجاره با استفاده از Redis را با به‌دست آوردن اتمیک، تجدید اتمیک و یک قانون که بیشتر تیم‌ها از آن اجتناب می‌کنند تا زمانی که دردناک شود، نشان می‌دهد: هنگامی که تجدید ناموفق است، دیگر مانند مالک رفتار نکنید. مشکل قفل‌های نامحدود این است که فرض‌های نادرستی را در مورد سیستم‌های توزیع‌شده مطرح می‌کنند. این فرض‌ها عبارتند از: نگهدارنده قفل همیشه می‌تواند قفل را آزاد کند، همه می‌توانند آزاد شدن را مشاهده کنند و زمان پرش نمی‌کند. هیچ یک از این موارد در سیستم‌های توزیع‌شده قابل اعتماد نیستند. فرآیندها ممکن است خراب شوند و هرگز بلوک‌های finally را اجرا نکنند. شبکه‌ها بسته‌ها را از دست می‌دهند و آزاد شدن را پنهان می‌کنند. رویدادهای مکث "یک ثانیه" را به "یک دقیقه" تبدیل می‌کنند. اگر سیستم شما به یک قفل نامحدود متکی باشد، یا برای همیشه منجمد می‌شود یا دو بار اجرا می‌شود. الگوی اجاره باعث از بین رفتن خرابی نمی‌شود، بلکه باعث می‌شود خرابی قابل تحمل باشد. پیاده‌سازی اجاره به سه اصل نیاز دارد: به‌دست آوردن اتمیک و انحصاری است، تجدید اتمیک است و فقط مالک فعلی می‌تواند مهلت را تمدید کند، و از دست دادن تجدید به طور فوری مالکیت را به پایان می‌رساند. اگر نتوانید تجدید کنید، شما مالک نیستید. ادامه دادن به عنوان مالک پس از خرابی تجدید، باعث می‌شود "وظایف تک‌تک" به کار تکراری تبدیل شوند. در نهایت، استفاده از Redis به عنوان ذخیره‌ساز اجاره، امکان استفاده از ابزارهای مورد نیاز را فراهم می‌کند.


مشاهده مطلب اصلی