Διαμόρφωση και δρομολόγηση της κυκλοφορίας
1) Γιατί όλα αυτά
Διαμόρφωση και δρομολόγηση - βάση διαθέσιμης διαχείρισης και προβλέψιμης καθυστέρησης:- Σταθερότητα: μην δίνετε «θορυβώδεις γείτονες» για να σκοράρουν κανάλια.
- Δίκαιη μεταχείριση: Προτεραιότητες και ποσοστώσεις μεταξύ ενοικιαστών/τάξεων.
- Αποτελεσματικότητα: στέλνουμε το αίτημα εκεί όπου γίνεται η επεξεργασία γρηγορότερα/φθηνότερα.
- Έλεγχος αλλαγών: εκπομπές καναρινιού/σταθμισμένες χωρίς κίνδυνο.
- Εξοικονόμηση: βελτιστοποίηση του κόστους εξόδου/εξόδου και CDN-cache-hitrate.
2) Βασικές έννοιες
2. 1 Διαμόρφωση της κυκλοφορίας έναντι αστυνόμευσης
Διαμόρφωση - ευθυγραμμίζει την κυκλοφορία ρυθμίζοντας και αποστέλλοντας πακέτα με το ρυθμό-στόχο (εξομάλυνση «εκρήξεων»).
Αστυνόμευση - «τιμωρεί» τις υπερβολές (πτώση/σήμανση) χωρίς ρυθμιστικό πλαίσιο. Σκληρότερο, αλλά φθηνότερο.
2. 2 Τάξεις, ουρές αναμονής και επιστημονικοί κλάδοι
Σειρά αναμονής προτεραιότητας (PRIO), WFQ/DRR (δίκαιη κατανομή), HTB (ιεραρχικές ποσοστώσεις), CoDel/RED (ρυθμιστικό σύστημα ελέγχου), ECN (χωρίς σήμα συμφόρησης πτώσης).
Για L7 - «ουρές αναμονής» υπό μορφή ορίων/συνδέσεων/ψηφιολέξεων RPS και ομάδων προτεραιότητας.
2. 3 Περιοριστικοί αλγόριθμοι
Token Bucket (n μάρκες που προστίθενται με συντελεστή r; ζητούν «δαπανήσεις» k μάρκες).
Διαρροή κουβά (σταθερή εκροή· καλό για την εξομάλυνση).
Παγκόσμια/τοπικά όρια: τοπική - γρήγορη, παγκόσμια - έκθεση (Redis/etcd/ανά ενοικιαστή).
3) QoS ανά L3/L4
3. 1 DSCP/TOS και κλάσεις υπηρεσίας
Πακέτα ετικετών ανά τύπο κυκλοφορίας (διαδραστικό, υποστηριζόμενο RPC, θέσεις εργασίας υποβάθρου).
Στα κέντρα δεδομένων, διαπραγματευθείτε την πολιτική DSCP με το δικτυακό ύφασμα/σύννεφο.
3. 2 Linux tc: HTB + fq_codel (μικρογραφία)
bash
Clearing tc qdisc del dev eth0 root 2 >/dev/null true
Корневая HTB с 1Gbit tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 1gbit
Класс latency-critical 200Mbit tc class add dev eth0 parent 1:1 classid 1:10 htb rate 200mbit ceil 1gbit prio 0 tc qdisc add dev eth0 parent 1:10 handle 10: fq_codel
Класс background 100Mbit tc class add dev eth0 parent 1:1 classid 1:30 htb rate 100mbit ceil 1gbit prio 2 tc qdisc add dev eth0 parent 1:30 handle 30: fq_codel
3. 3 ECN/RED/BBR
Το ΕΔΑ μειώνει τις σταγόνες στις κορυφές· Το RED/CoDel περιορίζει το ρυθμιστικό διάλυμα.
Η BBR (αντί της Cubic) συχνά μειώνει την καθυστέρηση p99, ειδικά πάνω από WAN/βαριές ουρές.
4) Δρομολόγηση L7 (HTTP/gRPC/WS)
4. 1 Κριτήρια δρομολόγησης
Μονοπάτια/μέθοδοι ('/api/v1/', 'POST'), κεφαλίδες (έκδοση πελάτη, σημαίες χαρακτηριστικών, κεφαλίδα καναρινιού), cookies (A/B, sticky), γραμματόσημα JWT (ενοικιαστής/ρόλος), geo/ASN, παράθυρα χρόνου, φορτίο (ανίχνευση εξωτερικού).
Πρωτόκολλο: HTTP/2 (multiplexing), HTTP/3/QUIC (αντίσταση στην απώλεια πακέτων), gRPC (bi-di streams), WebSocket (μακρόβιες συνδέσεις).
4. 2 Σταθμισμένη διαίρεση/απελευθέρωση καναρινιού
Ρίζα 'v1: 95%', 'v2: 5%', αυτόματη αύξηση με «πράσινες» μετρήσεις.
Περικοπές: σφάλματα/καθυστερήσεις/επιχειρηματικές αναλλοίωτες.
Απεσταλμένος (σκίτσο)
yaml route:
weighted_clusters:
clusters:
- name: svc-v1 weight: 95
- name: svc-v2 weight: 5
Istio
yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService spec:
hosts: ["svc"]
http:
- route:
- destination: { host: svc, subset: v1, weight: 95 }
- destination: { host: svc, subset: v2, weight: 5 }
4. 3 Κολλώδεις συνεδρίες και συνεπής hashing
Συγγένεια συνεδρίας με cookie/αναγνωριστικό IP/JWT.
Συνεκτική διείσδυση συστάδων κρυφής μνήμης, παραγκωνισμένες υπηρεσίες, πύλες ορίου επιτοκίου.
Nginx
nginx upstream api {
hash $cookie_user_id consistent;
server 10. 0. 0. 1;
server 10. 0. 0. 2;
}
4. 4 Διαδρομή με γνώσεις γεω- και καθυστέρησης
GeoIP/ASN στο άκρο (CDN/άκρο) → το πλησιέστερο POP/περιοχή.
Καθυστερημένη γνώση: περιοδικά δείγματα υγείας + μετρήσεις RTT → κυκλοφορία στο «ταχύτερο» σύμπλεγμα.
4. 5 Ακραία ανίχνευση/θραύση κυκλώματος
«Κακές» περιπτώσεις: μέγιστο ποσοστό εκτίναξης, βασικά σφάλματα/καθυστέρηση.
Διακόπτης κυκλώματος: όρια συνδέσεων/RPS/σε ουρές αναμονής.
5) Διαμόρφωση της κυκλοφορίας σε επίπεδο πύλης/στοίβας mash
5. 1 Περιορισμός επιτοκίου
Τοπικό (per-pod): φθηνό, αλλά όχι δίκαιο inter-replica.
Global (Redis/etcd): ισχύς ανά ενοικιαστή/πλήκτρο API.
Πολιτικοί: ανά διαδρομή, ανά μέθοδο, ανά ενοικιαστή, έκρηξη.
Απεσταλμένος RLS (σκίτσο)
yaml typed_per_filter_config:
envoy. filters. http. ratelimit:
"@type": type. googleapis. com/envoy. extensions. filters. http. ratelimit. v3. RateLimit domain: "api"
rate_limit_service:
grpc_service: { envoy_grpc: { cluster_name: rate_limit_cluster } }
5. 2 Δικαιοσύνη και προτεραιότητες
Οι ομάδες προτεραιότητας είναι διαδραστικές> σύστημα> φόντο.
Ισοδύναμα DRR/WFQ για L7: ποσοστώσεις/βάρη ανά πελάτη/ενοικιαστή.
5. 3 Υπερφόρτωση και προστασία
Διαρροή φορτίου: αστοχία/υποβάθμιση σε περίπτωση υπέρβασης των προϋπολογισμών.
Προσαρμοστικό νόμισμα: δυναμική ορίων από p50/p95/queue-len.
Ανταπόκριση εξυπηρετητή: 429/503 + Retry-After.
6) επίπεδο eBPF και CNI
6. 1 Κίλιο/eBPF
Φιλτράρισμα/δρομολόγηση στον πυρήνα: λιγότεροι διακόπτες πλαισίου, λεπτές πολιτικές.
Maglev hashing για σταθερή κατανομή.
Προγράμματα EBPF για per-pod QoS (αγκίστρια TC/XDP).
6. 2 Πολιτικές Calico/NetworkPolicies
πολιτικές πρόσβασης, βασικές τάξεις προτεραιότητας, ενσωμάτωση με Kubernetes QoS (Εγγυημένη/Burstable/BestStright).
7) Πύλες ακμής/CDN και API
CDN: πλήκτρα κρυφής μνήμης (ερωτήματα κανονικοποίησης/κεφαλίδες), μπαγιάτικη επανεπικύρωση, προστασία προέλευσης (όριο ταχύτητας/φίλτρα ρομπότ).
Πύλες API: επαλήθευση ταυτότητας, ποσοστώσεις/δασμολογικά σχέδια (ανά καταναλωτή), περιορισμοί SLA, γεωγραφική δρομολόγηση, έκδοση API.
WAF: φιλτράρισμα στην άκρη ώστε να μην σπαταλάται η ΚΜΕ του πυρήνα.
8) Ασύγχρονα λεωφορεία/ροή
Kafka/NATS/Pulsar: ποσοστώσεις παραγωγού/καταναλωτή, όριο μεγέθους παρτίδας, αντίθλιψη μέσω καθυστέρησης.
Δρομολόγηση γεγονότων: ενοικιαστής/idempotency-κλειδί, τρεμοπαίζοντας χωρίσματα για ομοιομορφία.
Ακριβώς μία φορά ≈ «αποτελεσματική μία φορά»: παραγωγοί συναλλαγών + μώλωπες idempotent.
9) Χρονοδιαγράμματα, υποχωρήσεις, οπισθοδρόμηση
Timeouts από τέλος σε τέλος: πελάτης <πληρεξούσιος <υπηρεσία (όχι αντίστροφα).
Ρετράι: Περιορισμένος αριθμός με εκθετική οπισθοδρόμηση αλλά χωρίς καταιγίδες.
Η ευελιξία είναι υποχρεωτική στις υποχωρήσεις. διαφορετικά - SAGA/αποζημίωση.
Αντισταθμισμένα/παράλληλα αιτήματα (προσοχή): βελτιώνει το p99, αυξάνει τη συνολική κίνηση.
10) Παρατηρησιμότητα και SLO
10. 1 Μετρήσεις
, , , , , , .
10. 2 Ιχνηλάτηση
Αναγνωριστικό συσχέτισης σάρωσης. μεγέθη σημάτων με τύπο αιτίας: "retriby" ρίχνει "γκάζι" ουρά ".
Σύνδεσμοι για ρετράι/αντισταθμίσεις για την κατανόηση των επιπτώσεων στα υποσυστήματα.
10. 3 Αρχεία καταγραφής/εκθέσεις
Περίληψη σταγόνων/ορίων έκπτωσης, χάρτες θερμότητας ανά διαδρομή.
Χωριστές ομάδες για τον δείκτη δίκαιης μεταχείρισης.
10. 4 παραδείγματα SLO
"p99 ≤ 300 ms με φορτίο 95%· χύμα ≤ 0. 1%; 0. 5%».
«Τουλάχιστον το 95% της ποσόστωσης είναι εγγυημένη για τη διαλογική κλάση όταν υπερφορτώνεται».
11) Παραδείγματα διαμόρφωσης
11. 1 Nginx: όριο ταχύτητας + διάρρηξη + διαίρεση καναρινιού
nginx map $http_x_canary $canary { default 0; 1 1; }
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
upstream api_v1 { server 10. 0. 0. 1; }
upstream api_v2 { server 10. 0. 0. 2; }
server {
location /api/ {
limit_req zone=perip burst=20 nodelay;
if ($canary) { proxy_pass http://api_v2; break; }
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_pass http://api_v1;
}
}
11. 2 Απεσταλμένος: διακόπτης κυκλώματος + εξώτερη ανίχνευση
yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1000 max_pending_requests: 500 max_requests: 2000 outlier_detection:
consecutive_5xx: 5 interval: 10s max_ejection_percent: 50 base_ejection_time: 30s
11. 3 Istio: ενοικιαστής ποσοστώσεων (απόθεμα μέσω ετικέτας)
yaml apiVersion: security. istio. io/v1 kind: AuthorizationPolicy spec:
selector: { matchLabels: { app: api } }
rules:
- when:
- key: request. headers[x-tenant]
values: ["gold"]
Next - RateLimitPolicy in the limit provider with a large quota pool for "gold."
11. 4 υποδείξεις Kubernetes QoS
Εγγυημένα για κρίσιμους πυθμένας (αιτήματα = όρια).
PodPriority & Preemption: Οι κρίσιμοι πυθμένας θα εκτοπίσουν τα σημεία συμφόρησης υποβάθρου.
Περιορισμοί εξάπλωσης τοπολογίας: ζώνες για την αειφορία.
12) Αντι-μοτίβα
Το παγκόσμιο όριο οφθαλμών → εσφαλμένα 429/timeouts για σημαντικούς πελάτες.
Ρετράι χωρίς νευρικότητα/ιδεατότητα → καταιγίδα.
Σύγχυση χρονοδιαγραμμάτων (πελάτης> διακομιστής) → παγώνει και «διπλή εργασία».
Κοινές ουρές/ουρές για prod και πειράματα → μόλυνση δεδομένων.
«Πάντα κολλώδες» χωρίς κοινή λογική → άνισο φορτίο/καυτούς κόμβους.
Η ανίχνευση των ατόμων με ειδικές ανάγκες → σάπιο παράδειγμα χαλάει τις μετρήσεις της εβδομάδας.
13) Κατάλογος ελέγχου εφαρμογής
- Κυκλοφορία τμήματος: τάξεις/ενοικιαστές/διαδρομές.
- Καθορισμός των στοχευόμενων προϋπολογισμών σε RPS/συνδέσεις/ψηφιολέξεις και p95/p99.
- Ενεργοποιήστε το όριο ταχύτητας (τοπικό + παγκόσμιο), διακόπτη κυκλώματος, ανίχνευση ακραίων τιμών.
- Ρύθμιση διαίρεσης καναρινιού + αυτόματη ανατροπή σε μετρήσεις.
- Καταγραφή χρονοδιαγραμμάτων/retrays με εκθετική backoff + jitter.
- Ενεργοποίηση ECN/BBR (κατά περίπτωση) και fq_codel/HTB για έξοδο.
- Ατομικές δεξαμενές/κρύπτες/ουρές για σκιές και πειράματα.
- Ταμπλό: μετρήσεις των ορίων, ουρές, καθυστέρηση, δικαιοσύνη.
- SLO και runbook: κριτήρια ρίψης/ανατροπής/ενεργοποίησης.
14) ΣΥΧΝΈΣ ΕΡΩΤΉΣΕΙΣ
Ε: Τι να επιλέξετε: διαμόρφωση ή αστυνόμευση
A: Για προσαρμοσμένες διαδρομές - διαμόρφωση (αντι-ψευδώνυμο χωρίς σταγόνες). Για τις κατηγορίες υπηρεσιών «υπόβαθρο «/» χύμα «- αστυνόμευση για την προστασία κρίσιμων ροών.
Ε: Πώς αποφεύγετε τις καταιγίδες υποχώρησης
A: Το jitterized backoff, το όριο των προσπαθειών, η ταυτότητα, ο διακομιστής υποκινεί το 'Retry-After', τις παγκόσμιες ποσοστώσεις.
Ε: Κολλώδες ή hashing
A: Sticky - όταν χρειάζεται μια συνεδρία/η κρύπτη είναι τοπική για το χρήστη? hashing - όταν χρειάζεστε ομοιομορφία και σταθερότητα του θραύσματος.
Ε: Τι HTTP/3/QUIC δίνει
A: Χωρίς κλειδαριές HOL TCP, καλύτερη ανοχή απώλειας, ταχύτερη ανάκτηση - μειώνει σημαντικά p99/p999 ουρές.
15) Σύνολα
Η αποτελεσματική διαμόρφωση και η δρομολόγηση του L7 είναι ένα συνεκτικό σύνολο πολιτικών: προτεραιότητες και ποσοστώσεις, δίκαιη κατανομή, ασφαλή όρια και έξυπνη διαδρομή, υποστηριζόμενη από παρατηρησιμότητα και SLO. Ακολουθώντας τις πρακτικές που περιγράφονται (HTB/fq_codel/ECN στα χαμηλότερα επίπεδα και απεσταλμένος/Istio/Nginx/eBPF στο ανώτερο επίπεδο), θα έχετε προβλέψιμες ουρές καθυστέρησης, αντίσταση στην υπερφόρτωση και ελεγχόμενες, ασφαλείς εκλύσεις.