استراتيجيات موازنة الحمل
تعلّم كيف توزّع موازنات الحمل حركة المرور على عدة خوادم لتمكين التوسع الأفقي، واستكشف خوارزميات التوجيه الشائعة وفحوصات الصحة.
استراتيجيات موازنة الحمل درس مجاني في System Design Basics for Backend Developers على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في System Design Basics for Backend Developers، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة System Design Basics for Backend Developers 4 دروس في المجموع.
بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.
Why Load Balancing?
Once you scale horizontally, you have many identical servers. But how do clients know which one to hit? A load balancer sits in front of your servers and spreads incoming requests across them.
- Prevents any single server from being overwhelmed
- Enables seamless scaling up and down
- Improves availability if one server fails
Where the Balancer Sits
A load balancer is a reverse proxy: clients connect to one address, and the balancer forwards the request to a healthy backend. The client never sees the internal topology.
This indirection is what makes adding or removing servers invisible to users.
Client --> [Load Balancer] --> Server A
--> Server B
--> Server CRound Robin
Round robin is the simplest algorithm: requests are handed to servers in rotation. Server A, then B, then C, then back to A.
It works well when all servers are equally powerful and requests cost roughly the same.
requests = ['r1','r2','r3','r4']
servers = ['A','B','C']
for i, r in enumerate(requests):
print(r, '->', servers[i % len(servers)])Least Connections
Least connections routes each new request to the server with the fewest active connections. This is smarter when request durations vary widely.
A server stuck on slow requests will not keep receiving new ones.
Weighted Algorithms
If servers have different capacity, assign weights. A server with weight 3 receives roughly three times as many requests as a server with weight 1.
- Weighted round robin
- Weighted least connections
IP Hash & Sticky Sessions
IP hash routes a given client consistently to the same server based on a hash of its IP. This creates sticky sessions, useful when a server holds in-memory session state.
Note: stickiness undermines stateless design. Prefer external session stores when possible.
def pick(ip, n):
return hash(ip) % n
print('192.168.0.5 ->', pick('192.168.0.5', 3))Health Checks
A load balancer periodically pings each backend with a health check (e.g. GET /health). Unhealthy servers are removed from rotation automatically.
This is how the system survives a server crash without manual intervention.
Layer 4 vs Layer 7
Layer 4 balancing operates on TCP/UDP, routing by IP and port — fast but blind to content. Layer 7 operates on HTTP, so it can route by URL path, headers, or cookies.
- L4: high throughput, simple
- L7: content-aware, supports path-based routing
DNS Load Balancing
At the largest scale, a single load balancer becomes a bottleneck. DNS-based balancing returns different server IPs to different clients, spreading load before traffic even reaches a balancer.
Often combined with regional balancers for global apps.
Avoiding the Single Point of Failure
The load balancer itself must not be a single point of failure. Run it in an active-passive or active-active pair, with a floating virtual IP that fails over if the primary dies.
Putting It Together
A typical scalable setup: DNS spreads clients across regions, regional L7 balancers do health-checked path routing, and least-connections distributes to a fleet of stateless app servers behind them.
Each layer removes a bottleneck and adds resilience.
Quick Check
Test your understanding of load balancing algorithms.
Recap
You learned how load balancing makes horizontal scaling practical:
- Round robin, least connections, weighted, and IP hash algorithms
- Health checks remove failed servers automatically
- Layer 4 vs Layer 7, plus DNS balancing at scale
- The balancer must itself be redundant
الأسئلة الشائعة
هل درس «استراتيجيات موازنة الحمل» مجاني؟
نعم — نص درس «استراتيجيات موازنة الحمل» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة System Design Basics for Backend Developers، انتقل إلى CoddyKit PRO. تتضمن دورة System Design Basics for Backend Developers 4 دروس في المجموع.
ماذا ستتعلم في «استراتيجيات موازنة الحمل»؟
تعلّم كيف توزّع موازنات الحمل حركة المرور على عدة خوادم لتمكين التوسع الأفقي، واستكشف خوارزميات التوجيه الشائعة وفحوصات الصحة. تتمرن على System Design Basics for Backend Developers مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ System Design Basics for Backend Developers؟
لا تُشترط خبرة سابقة. System Design Basics for Backend Developers على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «استراتيجيات موازنة الحمل»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس System Design Basics for Backend Developers هذا؟
نعم. كل درس في System Design Basics for Backend Developers يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- التوسع الرأسي مقابل الأفقي
- الخدمات عديمة الحالة وذات الحالة
- مقدمة إلى الأنظمة الموزعة
- استراتيجيات موازنة الحمل