توزیع عادلانه درخواست


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

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

برای این منظور، شما یک کلاس به نام LoadBalancer ایجاد کنید که توانایی تخصیص درخواست‌ها به سرورهای مختلف را داشته باشد. هر سرور دارای ظرفیت مشخصی است و امکان دارد ظرفیتش تمام شود.

برنامه شما به صورت عادلانه درخواست‌ها را بین سرویس‌ها با استفاده از الگوریتم Round Robin توزیع می‌کند، و به صورت چرخشی بعد از رسیدن به آخرین سرور، به ابتدای لیست برمی‌گردد.

نکات🔗

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

نحوه ارسال🔗

شما باید کد تابع Request از کلاس LoadBalancer و تابع ToExecute از کلاس Service را تکمیل کنید.

به طور ساده، لود بالانسر یک سرویس است که به سیستم کمک می‌کند تا هنگامی که تعداد زیادی درخواست به سرویس‌ها می‌رسد، همه درخواست‌ها به صورت متوازی و به تساوی بین منابع موجود بر اساس ظرفیتشان توزیع شوند.

توضیح تصویر