الگوریتم Weighted Round Robin برای اولین بار در دهه 1960 توسط دو مخترع به نام های Bernard D. P. و Edsger W. Dijkstra ارائه شد و برای توزیع بار در بین چندین دستگاه ورودی-خروجی در یک کامپیوتر مورد استفاده قرار گرفت. در سال های بعدی، این الگوریتم به عنوان یکی از راهکارهای محبوب تقسیم بار در شبکه های کامپیوتری و سیستم های توزیع شده، شناخته شد و هنوز هم در شبکه های کامپیوتری و اینترنت برای تقسیم بار و توزیع بار بین سرورها و دستگاه های مختلف و به طور گسترده ای در سیستم های توزیع شده مانند سیستم های توزیع فایل و پایگاه داده ها استفاده میشود.
الگوریتم Weighted Round Robin چیست ؟
راهکار برای تقسیم بار میان چندین سرور است که در آن، سرورها به صورت دورهای مورد استفاده قرار میگیرند. به عنوان مثال، در صورتی که ما دارای ۳ سرور باشیم، ابتدا درخواست به سرور اول ارسال میشود، درخواست دوم به سرور دوم و سپس درخواست سوم به سرور سوم. بعد از ارسال درخواست سوم، سرور اول مجددا به کار گرفته میشود. در این الگوریتم، برای توزیع بار بین سرورها، از وزندهی استفاده میشود. به این معنی که هر سرور با وزن مشخصی شناخته شده و هر دور، درخواست به سرور با وزن بالاتر ارسال میشود. به طور مثال، اگر سرور ۱ و سرور ۲ و سرور ۳ وزنهای ۱۰، ۵ و ۲ داشته باشند، درخواست اول به سرور ۱، درخواست دوم به سرور ۱، درخواست سوم به سرور ۱، درخواست چهارم به سرور ۲، درخواست پنجم به سرور ۱ و به همین ترتیب.
پیشنهاد مطالعه: آموزش جامع تنظیمات HAProxy
نحوه عملکرد این الگوریتم :
فرمول محاسباتی به صورت زیر است:
WRR(i) = Ri / gcd(R)
در این فرمول، `WRR(i)` وزن نسبی سرور `i` را نشان می دهد، `Ri` نرخ ترافیک یا بار کاری سرور `i` در یک بازه زمانی مشخص است و `gcd(R)` بیشترین مقسوم علیه مشترک میان تمامی `Ri` ها است.
این فرمول وزن نسبی سرورها را بر اساس بار کاری و ترافیک کنونی آنها تعیین می کند، هر سرور بر اساس بار کاری خود در بازه زمانی مشخصی وزن نسبی خود را به دست می آورد و در هر دور از تقسیم بار، سرور با بیشترین وزن نسبی انتخاب می شود تا بار کاری آن را به سرور دیگری منتقل کند.
مقسوم علیه مشترک بین تمامی `Ri` ها (که با `gcd(R)` نشان داده شده است) مقداری است که با اعمال آن به هر یک از `Ri` ها، آنها را به مقدار صحیحی کوچکتر تبدیل کرده که برای تقسیم همسان باشد. این مقدار مشترک به عنوان یک ثابت محاسباتی استفاده شده تا وزن نسبی سرورها را به صورت مناسب تعیین شود. به این صورت که `Ri` های بزرگتر مقسوم علیه مشترک را دارای وزن نسبی کوچکتری خواهند بود و سرورهای با بار کاری کمتر دارای وزن نسبی بیشتری خواهند بود.
پیشنهاد مطالعه: الگوریتم Least Load
چه زمانی از این الگوریتم استفاده می کنیم ؟
در اینجا چند مورد از موارد کاربرد این الگوریتم را میتوان نام برد:
1. سیستم های بارگذاری وب : در سیستم های بار گذاری وب که شامل سرورهای وب، نرم افزارهای کنترلر بار و یا دیگر راه حل های مشابه میشود.
2. سیستم های ابری : در سیستم های ابری که شامل مراکز داده ابری، سرویس دهنده های ابری و نرمافزارهای ابری میشود.
3. سیستم های ایمیل سرور : در سیستم های ایمیل سرور که شامل سرورهای ایمیل، مدیریت ایمیل، وب میل و سایر راه حل های مشابه میشود.
4. سیستم های امنیتی : در سیستم های امنیتی که شامل فایروال ها، سیستم های تشخیص نفوذ و سیستم های مدیریت ترافیک و توزیع بار به صورت مساوی بین دستگاههای امنیتی استفاده میشود.
پیشنهاد مطالعه: کاوش در CSRF: چگونه حملات مخرب وب را شناسایی کنیم؟
مثالی از استفاده از این الگوریتم در تکنولوژی
این فهرست صرفاً مثال هایی از نرم افزارهایی است که از الگوریتم WRR استفاده می کنند و لیست کاملی از آنها نیست. به طور کلی، الگوریتم WRR در بسیاری از نرم افزارها و سخت افزارها برای توزیع بار استفاده می شود. در زیر، به برخی از نرم افزارهایی که این الگوریتم را پشتیبانی می کنند، اشاره کرده ایم:
1. LoadMaster : نرم افزار کنترلر بار است که توسط شرکت KEMP Technologies توسعه داده شده است.
2. HAProxy : این یک نرم افزار کنترلر بار باز و منبع باز است که مورد استفاده بسیاری از سازمان هاست.
3. Nginx: این یک وب سرور منبع باز که برای بارگذاری صفحات وب استفاده می شود. Nginx نیز از الگوریتم WRR به عنوان یکی از الگوریتم های توزیع بار استفاده می کند.
4. F5 BIG-IP: این یک سرور بار و فایروال با مجموعه ای از ویژگی های امنیتی که توسط شرکت F5 Networks توسعه داده شده.
5. Citrix NetScaler: این یک سرور بار و شبکه است که توسط شرکت Citrix Systems توسعه داده شده.
پیشنهاد مطالعه: حملات روز صفر (Zero-Day) چیست: تهدید امنیتی خطرناک!
این الگوریتم چه مشکلی رو بر طرف می کنه ؟
Weighted Round Robin نقایصی را که برای توزیع بار در شبکه های کامپیوتری، در الگوریتم های توزیع بار معمولی وجود دارد را برطرف می کند. مثالی از این مشکلات این است که دستگاه های با توان پردازش بیشتر، بار بیشتری دریافت میکنند و به نوعی سنگین ترین بار را بر عهده دارند. اما با استفاده از این الگوریتم و تعیین وزن مختلف برای هر دستگاه، میتوان توزیع بار را به نحوی تنظیم کرد که دستگاه های با توان پردازش بیشتر، بار بیشتری دریافت نکنند و همچنین دستگاههای با توان پردازش کمتر هم، بار مناسبی را دریافت کنند. علاوه بر این، در صورت بروز اختلال در یکی از دستگاه ها میتوان ، بار را به صورت خودکار به دستگاه های دیگر منتقل کرده و به برطرف کردن نقص در شبکه کمک کرد.
بنابراین، استفاده از الگوریتم Weighted Round Robin در توزیع بار، مشکلاتی را که در الگوریتم های سنتی وجود دارد، برطرف می کند و عملکرد بهتری را در توزیع بار در شبکه های کامپیوتری ارائه میدهد.
پیشنهاد مطالعه :شبکه تحویل محتوا (CDN) چیست؟ افزایش سرعت لود سایت!
نتیجه گیری :
الگوریتم Weighted Round Robin یکی از راهکارهای محبوب توزیع بار در شبکه های کامپیوتری است که برای توزیع بار بین دستگاه های شبکه، به کار میرود. با استفاده از وزن های مختلف برای هر دستگاه، بار را به صورت متناسب با قدرت و ظرفیت دستگاهها توزیع میکند. در این الگوریتم، دستگاه با وزن بیشتر، بیشترین بار را دریافت میکند و دستگاه با وزن کمتر، کمترین بار را دریافت میکند. این الگوریتم در سیستم های بارگذاری وب، سیستم های ابری، سیستم های ایمیل سرور و سیستم های امنیتی مورد استفاده قرار میگیرد. با توجه به عملکرد موثر و قابلیت اعمال وزن های مختلف برای دستگاه ها، این الگوریتم در توزیع بار در شبکه های کامپیوتری، یکی از الگوریتم های پرکاربرد است.