Εξισορρόπηση φορτίου
1) Γιατί και πού βρίσκεται στην αρχιτεκτονική
Ο ισολογισμός είναι ένα «turnstille» μεταξύ του πελάτη και του στόλου υποστήριξης. Οι στόχοι της είναι οι εξής:- διαθεσιμότητα (χωρίς ένα μόνο σημείο αστοχίας), καθυστέρηση (p95 προς τα κάτω), κλίμακα (οριζόντια), ασφάλεια (TLS/WAF), δυνατότητα διαχείρισης της απελευθέρωσης (καναρίνι/μπλε-πράσινο).
- Edge/Global: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS.
- L4 (TCP/UDP): NLB, maglev, πληρεξούσιος χωρίς διακοπή.
- L7 (HTTP/2, gRPC, WebSocket, QUIC): δρομολόγηση διαδρομής/κεφαλίδες/γραμματόσημα, μνήμη/συμπίεση/retrays.
- Βαθμίδα δεδομένων: DB- прокси (PgBouncer/ProxySQL), σύμπλεγμα Redis/συνεπής Hash, κατάτμηση Kafka.
2) Μοντέλα εξισορρόπησης και αλγόριθμοι
Round-Robin (RR): απλή ομοιόμορφη.
Ελάχιστες συνδέσεις (LC): Καλό για μακριές συνδέσεις (WS, gRPC).
Ελάχιστο αίτημα/ισχύς δύο (P2C): Η σύγκριση δύο τυχαίων είναι μια καλή ισορροπία ταχύτητας/ποιότητας.
Σταθμισμένη RR/LC: βάρη για καναρίνια/θερμούς κόμβους.
Συνεκτικό Hashing (CH): κολλητική συνεδρία χωρίς τραπέζι (κάρο, Redis).
Maglev/Flow-hash: γρήγορη κατανομή L3/L4 με αντίσταση πτερυγισμού.
Καθυστέρηση γνώσης: Επιλογή με ολίσθηση p50/p95.
EWMA: Λαμβάνει υπόψη το ιστορικό των καθυστερήσεων.
Σύσταση: εξ ορισμού P2C (ελάχιστο αίτημα) για την L7, για stateful/caches - συνεπής hash· WS/gRPC - λιγότερο συνδέσεις.
3) Ανάντη υγεία: έλεγχοι και «εξώσεις»
Υγειονομικοί έλεγχοι: TCP, HTTP 200/匹配 тела, καθεστώς gRPC. διαστήματα/χρονοδιαγράμματα/όριο σφάλματος.
Outlier Ejection: αυτόματος αποκλεισμός των «θορυβωδών» περιπτώσεων (διαδοχικό-5xx, επιτυχής-ρυθμός εξώθησης).
Αργή εκκίνηση και προθέρμανση: ήπια είσοδος νέων περιπτώσεων (σταδιακή αύξηση βάρους).
Αποστράγγιση σύνδεσης: όταν απενεργοποιείται/επαναρυθμίζεται - «ανάκτηση» ενεργών συνδέσεων χωρίς διακοπή.
4) Συνεδρίες και εμμονή (εμμονή)
Cookie-stickiness (L7): 'Set-Cookie: lb = <id>; SameSite; Ασφαλής '.
CH ανά κλειδί: 'hash (userI surementId' cartId) '.
IP-hash - μόνο σε κλειστά δίκτυα (διαλείμματα NAT).
TTL stickiness + οπισθοδρόμηση στην κομβική έξωση.
Σημαντικό: ελαχιστοποίηση της ανάγκης για εμμονή → αποθήκευση της κατάστασης εκτός της περίπτωσης (Redis/DB/JWT).
5) Παγκόσμια εξισορρόπηση (GTM/GSLB)
Anycast + ανιχνευτής υγείας: ένα IP, κίνηση προς το πλησιέστερο PoP· αυτόματο feilover.
GeoDNS/Latency-DNS: Απάντηση Geo/Latency.
Περιφερειακοί όμιλοι: «δεδομένα κατοίκων» παραμένουν στην περιοχή (GDPR)· διαπεριφερειακή αποτυχία με αντιγραφή.
Πολιτικοί: geo-blocks, «stickeregion» από λογαριασμό/σύμβολο.
6) Πρωτόκολλα και χαρακτηριστικά
: πολυπλέκτης, προτεραιότητες· χρειάζονται κατάλληλη δεξαμενή σύνδεσης για τα ανάντη.
GRPC: μακρόβια ρεύματα → ελάχιστες συνδέσεις, επιθετικοί υγειονομικοί έλεγχοι.
WebSocket/SSE: εμμονή στη σύνδεση, μεγάλα χρονοδιαγράμματα σε αδράνεια, TCP συνεχή.
: γρήγορη εκκίνηση, αντίσταση στην απώλεια· παρακολούθηση MTU/patch-MTU.
Τερματισμός TLS/mTLS: τερματισμός στις edge/L7-LB. από του στόματος mTLS/ταυτότητα (SPIFFE).
7) Έλεγχος υπερφόρτωσης
Όριο ταχύτητας: ανά IP, ανά κλειδί, ανά διαδρομή· διάρρηξη + διατήρηση.
Προσαρμοστικό νόμισμα (απεσταλμένος) - δυναμικό όριο των ταυτόχρονων αιτήσεων.
Σειρά αναμονής/προσκρουστήρας: περιορισμένο μέγεθος αναμονής με δίκαιη άρνηση 503.
Αντιστάθμιση/Παράλληλες αγωνιστικές: αναπαραγωγή αργών ερωτήσεων (μόνο idempotent).
Προϋπολογισμός timeout: ξεχωριστή σύνδεση/ανάγνωση/εγγραφή.
Backpressure: '503 + Retry-After', jitter client exponential retreas.
Προστασία αργής λωρίδας: ανάγνωση/εγγραφή χρονοδιαγραμμάτων, ελάχιστη ταχύτητα.
8) Ελευθερώσεις και διαχείριση της κυκλοφορίας
Καναρίνι (σταθμισμένο): 1-5-10-25-50-100% с guardrails (p95, 5xx, timeouts).
Γαλάζιο-πράσινο: στιγμιαίος διακόπτης, rollback - DNS/LB.
Σκιά/Καθρέφτης: αντίγραφο των αιτήσεων χωρίς να επηρεάζεται η απάντηση. Μάσημα PII.
Κεφαλίδα/δρομολόγηση ισχυρισμών: 'X-Canary: 1' или 'JWT. απαιτήσεις. περιφέρεια/ρόλος ".
9) Αυτόματη κλιμάκωση και αποστράγγιση
HPA/ASG по CPU + RPS + p95 + βάθος αναμονής.
PreStop γάντζο: Περιμένετε να ολοκληρωθούν οι συνδέσεις.
Θερμή δεξαμενή/παράδειγμα επαναχρησιμοποίησης: συντόμευση εκκίνησης ψυχρού.
Σχεδιασμός χωρητικότητας: ο στόχος «χρησιμοποίηση 60-70%» στο p95 είναι κανονικός.
10) Παρατηρησιμότητα και SLO
Μετρήσεις LB: RPS, p50/p95/p99, 4xx/5xx, ανοικτές συνδέσεις, ουρά-len, εκτοξεύσεις, επαναλήψεις, κρύπτες hit-ratio.
Ιχνηλάτηση: «traceparent/x-request-id» μέσω LB → services → databases.
Καταγραφές: δομικές, μάσκες PII/PAN, συσχέτιση με ανάντη.
Διαδρομή SLO: για παράδειγμα, «latency p95 300 m », διαθεσιμότητα 99. 9% ',' 5xx ≤ 0. 5%`.
Ειδοποιήσεις: κατά αποκλίσεις (ρυθμός καύσης SLO, αύξηση εκτίναξης, ανάπτυξη 5xx/timeout).
11) Δεδομένα και κρυψώνες εξισορρόπησης
PostgreSQL/MySQL:- Διαβάστε/γράψτε split (ProxySQL/pgpool) + read-replicas; κολλώδες-txn.
- Αποτυχία: συγχρονισμένο αντίγραφο για RPO = 0 (ακριβότερο).
- Redis Cluster + hash-slot; για συνεδριάσεις - CH· Χρονοδιαγράμματα/Ανακτήσιμα σφάλματα.
- ισορροπία μέσω διαχωρισμού και ομάδων καταναλωτών· να μην συγχέεται με την HTTP-LB.
- Αποθήκευση αντικειμένων (S3/MinIO): πολυπεριφερειακή αποτυχία через GSLB/αντιγραφή.
12) LB K8s και νέφους
Υπηρεσία (ClusterIP/NodePort/ Balancer) - βάση L4.
Είσοδος/Πύλη API - δρομολόγηση L7, βάρος καναρινιού, TLS.
AWS: NLB (L4, υψηλό εύρος ζώνης), ALB (L7, WAF, sticky, header-routing).
GCP: Global LB (L7/HTTP (S) с Anycast), TCP/UDP proxy LB.
Azure: Εμπρόσθια πόρτα (παγκόσμια), πύλη εφαρμογής (L7), εξισορροπητής φορτίου (L4).
13) Παραδείγματα διαμόρφωσης
13. 1 NGINX (L7, least_conn, κολλώδες, καναρίνι)
nginx upstream api_pool {
least_conn;
server api-1:8080 max_fails=3 fail_timeout=10s;
server api-2:8080 max_fails=3 fail_timeout=10s;
sticky cookie lb_id expires=30m path=/ secure httponly;
}
map $http_x_canary $dst {
default api_pool;
1 canary_pool;
}
upstream canary_pool {
least_conn;
server api-canary:8080 weight=1;
}
server {
listen 443 ssl http2;
location /api/ {
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_set_header X-Request-Id $request_id;
proxy_pass http://$dst;
}
}
13. 2 HAProxy (P2C, υγεία, βραδύτητα, stick-table)
haproxy backend api balance leastconn option httpchk GET /health default-server inter 3s fall 3 rise 2 slowstart 10s server s1 10. 0. 0. 11:8080 check server s2 10. 0. 0. 12:8080 check stick-table type ip size 100k expire 30m http-request track-sc0 src rate limit per IP http-request deny deny_status 429 if { sc_http_req_rate(0) gt 50 }
13. 3 Απεσταλμένος (P2C, ακραίος, διαγραφές, προσαρμοστικό νόμισμα)
yaml load_assignment: {... }
lb_policy: LEAST_REQUEST least_request_lb_config: { choice_count: 2 }
outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s typed_extension_protocol_options:
envoy. extensions. filters. http. adaptive_concurrency. v3. AdaptiveConcurrency:
gradient_controller_config:
sample_aggregate_percentile: PERCENTILE_50 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 1s
13. 4 Kubernetes (Πύλη API, σταθμισμένο καναρίνι)
yaml apiVersion: gateway. networking. k8s. io/v1 kind: HTTPRoute spec:
rules:
- matches: [{ path: { type: PathPrefix, value: /api }}]
backendRefs:
- name: api-v1 weight: 90 port: 8080
- name: api-v2-canary weight: 10 port: 8080
14) Κατάλογοι ελέγχου
Πριν από την απελευθέρωση LB/route
- Επιλεγμένος αλγόριθμος (P2C/LC/CH) για τον τύπο κυκλοφορίας.
- Οι υγειονομικοί έλεγχοι και τα κατώτατα όρια εκτίναξης είναι διαμορφωμένα.
- Επιβράδυνση της εκκίνησης, προθέρμανση, αποστράγγιση σύνδεσης.
- TLS/mTLS, HSTS, ασφαλή κρυπτογραφήματα· εάν είναι απαραίτητο.
- Κολλώδες/CH μόνο εφόσον απαιτείται· TTL и οπισθοδρόμηση.
- Όριο/διάρρηξη επιτοκίου, χρονοδιαγράμματα, επαναπροσδιορισμός προϋπολογισμού, προσαρμοστικό νόμισμα.
- Αρχεία καταγραφής/μονοπάτια: ρίχνεται το «trace-id». Μάσημα PII.
- SLO/ειδοποιήσεις από p95/5xx/εκλογές/ουρά-len.
- Κανάριοι συντελεστές στάθμισης + σχέδιο ανατροπής· σκιάζει με μεγάλες αλλαγές.
Για τις διαδρομές πληρωμής/συμμόρφωσης
- Idempotency-Key.
- Αποτυχία μεταξύ παρόχων υπηρεσιών πληρωμών. έλεγχοι της ίδιας μεθόδου.
- Οι κωδικοί σφάλματος είναι κανονικοποιημένοι. ΕΤΑ/λόγοι ανά πελάτη.
Για DB/Caches
- RW-split/αντίγραφα· timeouts, επαναδραστηριοποίηση δικτύου.
- CH/slot-hash για Redis· προστασία από «θερμά κλειδιά».
- Υστέρηση παρακολούθησης και αντιγραφής.
15) Μετρήσεις ποιότητας (ελάχιστες)
Καθυστέρηση p50/p95/p99 ανά διαδρομή/μέθοδο.
Ρυθμός σφάλματος 4xx/5xx, χρονοδιάγραμμα/υπερχείλιση.
Ανοικτές/ενεργές συνδέσεις, βάθος αναμονής, επαναπροσδιορισμός.
Πιο ακραίες εκτοξεύσεις και αιτίες.
Sticky hit-ratio/cache hit-ratio.
GSLB: περιφερειακή διανομή, faylovers, διαθεσιμότητα PoP.
16) Αντι-μοτίβα
Μια απροστάτευτη μονολιθική LB.
Κολλώδεις συνεδρίες «για τα πάντα», αντί να αφαιρέσει την πολιτεία.
Παγκόσμιες άπειρες ουρές (απόκρυψη του προβλήματος, ανάπτυξη p99).
Το Retrai χωρίς νευρικότητα/προϋπολογισμό είναι μια «καταιγίδα» αιτημάτων.
Trust 'X-Forwarded-For' without μια λίστα αξιόπιστων πληρεξουσίων.
Έλλειψη αποστράγγισης κατά τη διάρκεια της εξάντλησης → διαλείμματα WS/gRPC.
Αδυναμία συνεκτίμησης των μακρόβιων συνδέσεων κατά την αυτόματη κλιμάκωση.
17) Ιδιαιτερότητα iGaming
Κορυφές και τουρνουά: micro-cache σε καταλόγους/καταχωρήσεις (1-5 s), αυτόματη κλίμακα με τη σειρά.
Live games/streams: LC για μεγάλες συνδέσεις, προτεραιότητα του πλησιέστερου PoP.
Πληρωμές: geo/νόμισμα/ποσό/δρομολόγηση παρόχου· αυστηρά χρονικά περιθώρια και ιδεατότητα.
Υπεύθυνο παιχνίδι και συμμόρφωση: προτεραιότητα στην παράλειψη αιτήσεων για όρια/κλειδαριές ακόμη και με υποβάθμιση (αποτυχία-ανοικτή/κοντά στην πολιτική).
18) Διαδικασία εφαρμογής (4 σπριντ)
1. Χάρτης κυκλοφορίας: πρωτόκολλα, φορτία p95/p99, κρίσιμες διαδρομές.
2. Διαμόρφωση LB: αλγόριθμοι, υγεία/ακραίες τιμές, TLS, όρια/χρονοδιαγράμματα, παρατηρησιμότητα.
3. GSLB/Edge: Anycast/GeoDNS, υποστήριξη PoP, περιφερειακές πολιτικές δεδομένων.
4. Στρατηγική απελευθέρωσης: καναρίνι/σκιά, συναγερμοί SLO, αυτοκλίμακα + αποχέτευση, ανάλυση μετά το συμβάν.
Τελικό φύλλο εξαπάτησης
Επιλέξτε έναν αλγόριθμο για τον τύπο της κίνησης (P2C/LC/CH) και τη διάρκεια της σύνδεσης.
Διατήρηση της «υγιεινής» ανάντη: υγειονομικοί έλεγχοι + ακραίες τιμές + βραδεία εκκίνηση + αποστράγγιση.
Διαχείριση φορτίου αιχμής: όριο ταχύτητας, προσαρμοστικό νόμισμα, ουρές με αποτυχία.
Χρήση GSLB/Anycast για παγκόσμια διαθεσιμότητα και συμμόρφωση ανά περιοχή.
Η παρατηρησιμότητα και η SLO είναι υποχρεωτικές· απελευθερώσεις - μέσω καναρινιού/σκιάς με σχέδιο ανατροπής.
Όπου είναι δυνατόν, αφαιρέστε τη συνεδρία από τα κρούσματα και την εμμονή από την LB.