⚙️ Scaling Out با YARP Load Balancing
هستهی اصلی مقیاسپذیری افقی (Horizontal Scaling) با استفاده از YARP در استراتژیهای مختلف Load Balancing آن نهفته است.YARP چندین Load Balancing Strategy مختلف ارائه میدهد که هر کدام رفتار متفاوتی در توزیع درخواستها دارند:
⚖️ PowerOfTwoChoices:
دو مقصد تصادفی را انتخاب میکند و درخواستی را به سروری ارسال میکند که کمترین تعداد درخواست تخصیص دادهشده را دارد.
🔤 FirstAlphabetical:
اولین سرور در دسترس را بر اساس ترتیب الفبایی انتخاب میکند.
🔁 LeastRequests:
درخواستها را به سرورهایی ارسال میکند که کمترین تعداد درخواست فعال دارند.
🔄 RoundRobin:
درخواستها را بهصورت یکنواخت بین تمام سرورهای backend توزیع میکند.
🎲 Random:
برای هر درخواست، بهصورت تصادفی یک سرور backend را انتخاب میکند.
شما میتوانید این استراتژیها را در فایل تنظیمات YARP پیکربندی کنید.
استراتژی Load Balancing با استفاده از ویژگی LoadBalancingPolicy در بخش Cluster مشخص میشود.
🧩 پیکربندی YARP با RoundRobin Load Balancing
در ادامه، نسخهی بهروزشدهی فایل تنظیمات YARP را میبینید که از استراتژی RoundRobin برای توزیع بار استفاده میکند:
{
"ReverseProxy": {
"Routes": {
"api-route": {
"ClusterId": "api-cluster",
"Match": {
"Path": "{**catch-all}"
},
"Transforms": [{ "PathPattern": "{**catch-all}" }]
}
},
"Clusters": {
"api-cluster": {
"LoadBalancingPolicy": "RoundRobin",
"Destinations": {
"destination1": {
"Address": "http://api-1:8080"
},
"destination2": {
"Address": "http://api-2:8080"
},
"destination3": {
"Address": "http://api-3:8080"
}
}
}
}
}
}🧭 ساختار سیستم با YARP Load Balancer
در تصویر، ساختار کلی سیستم ما با یک YARP Load Balancer و مجموعهای از Application Serverهای مقیاسپذیر افقی نشان داده شده است.
درخواستهای ورودی به API ابتدا به YARP ارسال میشوند، و سپس YARP بر اساس استراتژی انتخابشدهی Load Balancing، ترافیک را بین سرورهای اپلیکیشن توزیع میکند.
در این مثال، یک پایگاه داده (Database) داریم که به چندین نمونه از اپلیکیشن سرویسدهی میکند. 🗄
🧪 حالا نوبت تست عملکرد است (Performance Testing)
در ادامه، با استفاده از ابزار K6 به بررسی عملکرد سیستم در شرایط بار بالا خواهیم پرداخت تا اطمینان حاصل شود که استراتژی Load Balancing ما به درستی کار میکند و مقیاسپذیری بهینه حاصل شده است. 🚀