بهینه سازی عملکرد API – قسمت 2: تعادل بار

API ها ستون فقرات برنامه های مدرن هستند و روزانه هزاران (یا حتی میلیون ها نفر) درخواست می کنند. اما با رشد ترافیک ، یک سرور واحد می تواند به سرعت غرق شود و منجر به آن شود پاسخ های آهسته ، زمان ، تصادفات و در نهایت ضرر در درآمد کسب و کاربشر
اینجاست تعادل بار وارد می شود. تعادل بار قادر به توزیع ترافیک در چندین سرور، اطمینان از باقی ماندن API شما سریع ، مقیاس پذیر و بسیار در دسترسبشر این آموزش بخشی از یک سری در بهینه سازی عملکرد API است. می توانید قسمت 1 این سری را در ذخیره سازی در اینجا بخوانید
در این راهنما ، ما بررسی خواهیم کرد:
- چه موقع باید تعادل بار را در برنامه خود در نظر بگیرید
- تعادل بار چگونه کار می کند
- استراتژی های تعادل بار
- مطالعه موردی در دنیای واقعی: payu
- مسائل و رفع کننده های متعادل بار مشترک
- بهترین روشها
- نتیجه گیری و منابع
1. چه موقع باید تعادل بار را در نظر بگیرم؟
هر API از روز اول به تعادل بار نیاز ندارد. اما اگر:
✅ API شما 1000+ درخواست در هر ثانیه دریافت می کند.
✅ استفاده از CPU سرور شما به طور مداوم از 70 ٪ فراتر می رود.
✅ شما به در دسترس بودن بالا نیاز دارید (به عنوان مثال ، معاملات مالی ، جریان)
✅ شما به دلیل سنبله های ترافیکی ، خرابی را تجربه کرده اید – آیا نمودارها چیزی به شما می گویند
✅ قابلیت اطمینان – بالانسر بار قوی مانند متعادل کننده بار الاستیک قبل از توزیع درخواست ، قادر به انجام بررسی های بهداشتی در سرورهای بالادست هستند – به حداکثر رساندن عملکرد و انعطاف پذیری کمک می کنند.
✅ شما به یک لایه امنیتی اضافه شده نیاز دارید – توازن بار قادر به ایفای نقش اساسی در امنیت هستند. آنها قادر به عمل به عنوان یک بافر در برابر حملات DDOS هستند و ویژگی هایی مانند رمزگذاری SSL و ادغام WAF را قادر می سازند.
به همین ترتیب ، می توان به توازن بار دستور داد تا درخواست های منبع مشکوک را رها کنند. اطمینان از این درخواست های مخرب به منابع اصلی کاربردی شما نمی رسد.
اگر هر یک از این موارد در مورد سیستم شما اعمال می شود ، وقت آن است که یک بالانسر بار.
2. چگونه تعادل بار کار می کند
یک متعادل کننده بار به عنوان یک لایه میانی بین مشتری و سرورهای پس زمینه عمل می کند. این شبکه های ورودی یا درخواست های برنامه را در چندین سرور یا “اهداف” بر اساس قوانین از پیش تعریف شده توزیع می کند.
Balancer از اضافه بار جلوگیری می کند و عملکرد ، در دسترس بودن و مقیاس پذیری یک برنامه را بهبود می بخشد. Balancer Load به عنوان یک نقطه تماس برای مشتری ، مسیریابی درخواست به سرورهای سالم و نظارت بر سلامت آنها عمل می کند.
📌 مثال:
- بدون تعادل بار: درخواست ها به یک سرور، که می تواند بیش از حد بارگیری شود.
- با تعادل بار: درخواست ها هستند در چندین سرور پخش شده است، بهبود سرعت و قابلیت اطمینان و مقیاس آن را آسان کنید.
در اینجا تجسم اساسی از نحوه عملکرد آن:
Client Requests ---> Load Balancer ---> Server 1
---> Server 2
---> Server 3
- nginx به عنوان یک متعادل کننده بار *
http {
upstream backend_servers {
server api-server-1.local;
server api-server-2.local;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
}
}
}
این تنظیم درخواست ها را بین توزیع می کند API-Server-1.Local وت API-server-2.localبشر
3. استراتژی های متعادل کننده بار
استراتژی های متعادل کننده بار روشها یا تکنیک هایی است که در توزیع شبکه یا ترافیک برنامه در چندین هدف استفاده می کنند. این استراتژی قوانینی را برای بهینه سازی استفاده از منابع ، بهبود عملکرد و تقویت قابلیت اطمینان سیستم به عنوان یک کل تعریف می کند. ما تعداد کمی از استراتژی های مشترک را در زیر بررسی خواهیم کرد.
1. دور رابین (پیش فرض و ساده)
درخواست ها را به طور مساوی در همه سرورها توزیع می کند.
بهترین برای: API ها با ظرفیت های سرور مشابه.
تصویر nginx:
upstream backend {
server api1.example.com;
server api2.example.com;
}
2. حداقل اتصالات (عالی برای درخواست های سنگین)
با کمترین اتصالات فعال ، ترافیک را به سرور می فرستد.
بهترین برای: API با طولانی یا فقر درخواست ها
تصویر nginx:
upstream backend {
least_conn;
server api1.example.com;
server api2.example.com;
}
3. IP Hash (برای تداوم جلسه خوب است)
درخواست هر مشتری را به همان سرور بر اساس IP آنها
بهترین برای: API هایی که نیاز دارند قوام جلسه (به عنوان مثال احراز هویت ، جلسات چسبنده).
تصویر nginx:
upstream backend {
ip_hash;
server api1.example.com;
server api2.example.com;
}
4. متعادل کننده بار وزنه برداری (کنترل ترافیک تنظیم شده)
برخی از سرورها هستند قدرتمندتر از دیگران– این روش ترافیک بیشتری را به سرورهای قوی تر می فرستد.
بهترین برای: API ها روی سرورهای با ظرفیت مختلط کار می کنند.
مثال:
upstream backend {
server api1.example.com weight=3;
server api2.example.com weight=1;
}
در اینجا:
4. مطالعه موردی در دنیای واقعی: PAYU
Payu یکی از شرکتهای پیشرو در هند و شرکتهای fintech *بیش از 450،000 بازرگان با استفاده از بیش از 100+ روش پرداخت * خدمت می کند * و نمی تواند API را کند کند. Payu از ترازو بار برنامه برای مقیاس خدمات خود 10 برابر برای پاسخگویی به خواسته ها در دوره های اوج استفاده می کند.
5. مسائل و رفع تعادل بار مشترک
صادر کردن | ثابت کردن |
---|---|
برخی از سرورها نسبت به سایرین ترافیک بیشتری دارند | استفاده کردن حداقل اتصالات به جای دور رابین. |
تأخیر زیاد حتی با تعادل بار | فعال کردن جغرافیایی برای هدایت کاربران به سرورهای اطراف. |
کاربران به طور تصادفی از سیستم خارج می شوند | استفاده کردن پایداری جلسه (جلسات چسبنده). |
سرورهای هدف ناسالم | اجرا بررسی های سلامتی و استفاده کنید گروه های مقیاس گذاری خودکار برای اطمینان از چرخش سرورهای جدید هنگامی که یک یا چند سرور ناسالم می شوند. |
6 بهترین شیوه های API های متعادل کننده بار
✅ استراتژی مناسب را انتخاب کنید – دور رابین ساده است ، اما حداقل اتصالات یا تعادل بار وزنی ممکن است بهتر باشد.
✅ بررسی های بهداشتی را فعال کنید – به طور خودکار سرورهای ناکام را از استخر خارج کنید.
✅ در کنار تعادل بار از حافظه پنهان استفاده کنید – ترکیب هر دو باعث افزایش عملکرد می شود.
✅ نظارت و تغییر – از ابزاری مانند Prometheus & Grafana برای ردیابی سلامت متعادل کننده بار استفاده کنید.
7. نتیجه گیری و منابع
تعادل بار است برای مقیاس بندی API ضروری است و اطمینان از در دسترس بودن بالا این که آیا شما یک برنامه کوچک SaaS را اداره می کنید یا یک بستر جهانی مانند پودو، استراتژی تعادل بار مناسب از کندی جلوگیری می کند ، هزینه ها را کاهش می دهد و تجربه کاربر را بهبود می بخشد.
منابع
https://www.ibm.com/think/topics/load-balancing
https://aws.amazon.com/elasticloadlancancing/application-load-balancer
https://www.appviewx.com/education-center/load-balancer-and-types/
https://learn.microsoft.com/en-us/azure/well-architected/service-guides/azure-load-balancer
تصویر هدر از AWS