یک توسعهدهنده که در حال آزمایش یک سیستم مسیریابی صوتی بود، یک قرنطینه موقت اضافه کرد که باعث میشود تماس بعدی پس از یک خطا، به مدت ۳۰۰ ثانیه از مسیر متفاوتی استفاده کند. این تغییر کوچک مانع از تلاش مکرر نرمافزار برای استفاده از همان مسیر خراب میشود و احتمال وقوع خرابی زنجیرهای (cascade outage) را کاهش میدهد.
چرا منطق قدیمی مشکلساز بود
مسیریاب اصلی از یک قانون سختگیرانه پیروی میکرد: وقتی یک ایستگاه کاری مشغول بود، صرفاً دوباره همان مسیر را امتحان میکرد. اگر آن مسیر مدام با خطا مواجه میشد، سیستم خطا را ثبت میکرد اما هرگز رفتار خود را تغییر نمیداد. در عمل، یک نقطه شکست واحد میتوانست با تکرار حلقه روی همان بنبست، به مسدود کردن تماسها ادامه دهد.
مکانیسم قرنطینه جدید
این بهروزرسانی سه محدودیت را اضافه میکند:
- غیردائمی – نشانگر قرنطینه پس از یک بازه زمانی کوتاه منقضی میشود.
- غیرجهانی – این محدودیت فقط برای مسیر خاصی که با خطا مواجه شده اعمال میشود، نه برای تمام مسیرها.
- حافظه محدود – سیستم خطا را در یک فایل محلی ثبت میکند و به محض اینکه یک مسیر جدید با موفقیت انجام شد، آن را فراموش میکند.
هنگامی که یک تلاش برای برقراری گفتار با شکست مواجه میشود، مسیریاب یک پرچم (flag) «قرنطینه شده» برای آن مسیر مینویسد. برای ۳۰۰ ثانیه بعدی، هر درخواست ورودی بهطور خودکار به یک مسیر جایگزین تغییر مسیر میدهد. به محض اینکه درخواستی در مسیری متفاوت با موفقیت انجام شود، پرچم پاک میشود تا اطمینان حاصل شود که این اصلاح بیش از حد نیاز باقی نمیماند.
مزایا و چالشها
دستاورد اصلی، تابآوری (resilience) است: یک اختلال گذرا دیگر کل سرویس را از کار نمیاندازد. با محدود کردن قرنطینه به پنج دقیقه، سیستم از قطع طولانیمدت سرویس جلوگیری میکند و در عین حال به شبکه فرصت بازیابی میدهد.
این رویکرد با ریسکهایی همراه است. یک نوسان کوتاه در شبکه میتواند باعث فعال شدن قرنطینه شود که تماسها را مجبور به استفاده از مسیری با کیفیت کمتر میکند و باعث افزایش تأخیر (latency) یا هزینه میشود. اگر مسیر جایگزین نیز دچار افت کیفیت شود، سیستم ممکن است بین مسیرها جابهجا شود و باعث بیثباتی گردد. اپراتورها برای تشخیص اینکه آیا تغییر مسیر عمدی است یا نشانهای از یک مشکل عمیقتر، نیاز به مشاهده نشانگرهای قرنطینه دارند.
موارد بعدی برای بررسی
- معیارها (Metrics): فراوانی و مدت زمان قرنطینهها را زیر نظر بگیرید تا ببینید آیا بازه ۳۰۰ ثانیهای مناسب است یا خیر.
- دامنه (Scope): تیمها ممکن است سعی کنند این منطق را به سایر سرویسهایی که از الگوهای تکرار استاتیک رنج میبرند، تعمیم دهند.
- خودکارسازی (Automation): زمانی که یک مسیر مکرراً وارد وضعیت قرنطینه میشود، هشدارهایی اضافه کنید تا پیش از آنکه کاربران متوجه مشکل شوند، نگهداری پیشگیرانه انجام شود.
درس اصلی ساده است: سیستمی که شکستهای اخیر خود را ثبت نمیکند، نمیتواند با محیط در حال تغییر سازگار شود. مهندسان با قابل مشاهده کردن تاریخچه خطاها و واکنش نشان دادن به آنها — به صورت موقت — سرویسهای صوتی را بدون نیاز به بازطراحی کامل، به آرامی و بدون وقفه نگه میدارند.
منبع: پست اصلی توسعهدهنده در dev.to.
در بحث شرکت کنید: https://t.me/GyaanSetuAi
