GH GambleHub

Şekillendirme ve trafik yönlendirme

1) Bütün bunlar neden

Şekillendirme ve yönlendirme - yönetilen kullanılabilirlik ve öngörülebilir gecikme süresi temeli:
  • Kararlılık: kanalları puanlamak için "gürültülü komşular" vermeyin.
  • Adalet: Kiracılar/sınıflar arasındaki öncelikler ve kotalar.
  • Verimlilik: Talebi daha hızlı/daha ucuz işlendiği yere göndeririz.
  • Değişiklik kontrolü: Risk olmadan kanarya/ağırlıklı salımlar.
  • Tasarruf: çıkış/çıkış maliyetlerinin ve CDN-cache-hitrate optimizasyonu.

2) Temel kavramlar

2. 1 Trafik şekillendirme vs polislik

Şekillendirme - Paketleri hedef oranda tamponlayıp göndererek trafiği hizalar ("patlamaları" yumuşatır).
Polislik - tamponlama olmadan aşırılıkları "cezalandırır" (düşürme/işaretleme). Daha sert ama daha ucuz.

2. 2 Sınıflar, kuyruklar ve disiplinler

Priority Queues (PRIO), WFQ/DRR (Fair Allocation), HTB (Hiyerarşik Kotalar), CoDel/RED (Buffer Block Control), ECN (No Drop Congestion Signal).
L7'de - RPS limitleri/bağlantıları/baytları ve öncelik havuzları şeklinde "kuyruklar".

2. 3 Sınırlayıcı algoritmalar

Jeton Kovası (r oranı ile eklenen n jeton; Talep "harcıyor'k belirteçleri).
Sızdıran Kova (sabit çıkış; yumuşatmak için iyi).
Küresel/yerel sınırlar: yerel - hızlı, küresel - fuar (Redis/etcd/kiracı başına).

3) L3/L4 başına QoS

3. 1 DSCP/ToS ve Hizmet Sınıfları

Paketleri trafik türüne göre etiketleyin (etkileşimli, arka uç RPC, arka plan işleri).
Veri merkezlerinde, DSCP politikasını ağ yapısı/bulutu ile görüşün.

3. 2 Linux tc: HTB + fq_codel (küçük resim)

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/KIRMIZI/BBR

ECN zirvelerde düşmeleri azaltır; KIRMIZI/CoDel tamponlamayı kısıtlar.
BBR (Cubic yerine), özellikle WAN/ağır kuyrukların üstünde, genellikle p99 gecikmesini azaltır.

4) L7 yönlendirme (HTTP/gRPC/WS)

4. 1 Yönlendirme kriterleri

Yollar/yöntemler ('/api/v1/', 'POST'), başlıklar (istemci sürümü, özellik bayrakları, kanarya başlığı), çerezler (A/B, yapışkan), JWT damgaları (kiracı/rol), geo/ASN, zaman pencereleri, yük (aykırı algılama).
Protokol: HTTP/2 (çoğullama), HTTP/3/QUIC (paket kaybına karşı direnç), gRPC (bi-di akışları), WebSocket (uzun ömürlü bağlantılar).

4. 2 Ağırlıklı bölünmüş/kanarya bültenleri

Kök 'v1: %95', 'v2: %5','yeşil "metriklerle otomatik artış.
Kesintiler: hatalar/gecikme/iş değişmezleri.

Elçi (kroki)

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 Yapışkan oturumlar ve tutarlı karma

Çerez/IP/JWT tanımlayıcısı ile oturum yakınlığı.
Önbellek kümeleri, parçalı hizmetler, hız sınırı ağ geçitleri için tutarlı karma.

Nginx

nginx upstream api {
hash $cookie_user_id consistent;
server 10. 0. 0. 1;
server 10. 0. 0. 2;
}

4. 4 Coğrafi ve gecikmeye duyarlı yönlendirme

GeoIP/ASN kenarda (CDN/kenar) - en yakın POP/bölge.
Gecikmeye duyarlı: periyodik sağlık örnekleri + RTT ölçümleri -'en hızlı "kümeye trafik.

4. 5 Aykırı algılama/devre kesme

"Kötü" örnekleri devre dışı bırakma: max-ejection-yüzde, temel hatalar/gecikme.
Devre kesici: bağlantıların sınırları/RPS/kuyruklarda.

5) Ağ geçidi/mash yığını seviyesinde trafik şekillendirme

5. 1 Oran sınırlaması

Yerel (pod başına): Ucuz, ancak adil olmayan inter-replika.
Global (Redis/etcd): Kiracı/API anahtarı başına geçerlilik.
Politikacılar: rota başına, yöntem başına, kiracı başına, patlama.

Elçi RLS (kroki)

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 Adalet ve Öncelikler

Öncelikli havuzlar etkileşimli> sistem> arka plandır.
L7'deki DRR/WFQ eşdeğerleri: Müşteri/kiracı başına kotalar/ağırlıklar.

5. 3 Aşırı yük ve koruma

Load-shed: Bütçeler aşıldığında başarısızlık/bozulma.
Uyarlanabilir eşzamanlılık: p50/p95/queue-len sınırlarının dinamiği.
Sunucu tarafı geri basınç: 429/503 + Retry-After.

6) eBPF ve CNI seviyesi

6. 1 Cilium/eBPF

Çekirdekte filtreleme/yönlendirme: daha az bağlam anahtarı, ince L3-L7 politikaları.
Kararlı dağıtım için Maglev hashing.
Pod başına QoS (TC/XDP kancaları) için eBPF programları.

6. 2 Calico/Ağ Politikaları

L3/L4 erişim ilkeleri, temel öncelik sınıfları, Kubernetes QoS ile tümleştirme (Garantili/Burstable/BestEffort).

7) Kenar/CDN ve API ağ geçitleri

CDN: cache keys (normalization query/headers), stale-while-revalidate, origin protection (rate limit/bot filters).
API ağ geçitleri: kimlik doğrulama, kotalar/tarife planları (tüketici başına), SLA kısıtlamaları, coğrafi yönlendirme, API sürümü.
WAF: Çekirdeğin CPU'sunu boşa harcamamak için kenarda filtreleme.

8) Asenkron otobüsler/akış

Kafka/NATS/Pulsar: üretici/tüketici kotaları, parti büyüklüğü sınırı, gecikme yoluyla geri basınç.
Olay yönlendirme: kiracı/idempotency-key, tekdüzelik için titreyen bölümler.
Tam bir kez ≈'bir kez etkili ": işlemsel üreticiler + idempotent çürükler.

9) Zaman aşımları, geri çekilmeler, geri çekilme

Uçtan uca zaman aşımları: istemci <proxy <hizmeti (tersi değil).
Retrai: Jitterleştirilmiş üstel geri tepme ile sınırlı sayıda ancak fırtına yok.
Geri çekilmelerde idempotency zorunludur; Aksi takdirde - SAGA/tazminat.
Hedged/paralel istekler (dikkat): p99 geliştirir, genel trafiği artırır.

10) Gözlemlenebilirlik ve SLO

10. 1 Metrikler

, , , , , , ,

Sınıflar: sınıf = etkileşimlisistemArka plan, kiracı, rota.

10. 2 İzleme

Tarama Korelasyon-ID; Neden türü: 'retry' shed 'throttle' queue'ile işaret aralıkları.
Alt sistemler üzerindeki etkisini anlamak için retrays/hedges için bağlantılar.

10. 3 Günlükler/Raporlar

Damla/dökülme/sınırların özeti, rotaya göre ısı haritaları.
Adalet indeksi için ayrı paneller.

10. 4 SLO örneği

"p99 ≤ 95 persentil yükte 300 ms; 0 ≤ döküldü. 1%; error_ratio ≤ 0. 5%».
"Kotanın en az %95'i aşırı yüklendiğinde etkileşimli sınıfa garanti edilir".

11) Yapılandırma örnekleri

11. 1 Nginx: hız limiti + patlama + kanarya bölünmesi

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 Elçi: devre kesici + aykırı algılama

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: kota kiracısı (etiket yoluyla rezerv)

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 ipucu

Kritik dipler için garantilidir (istekler = limitler).
PodPriority & Preemption: Kritik dipler arka plan darboğazlarının yerini alacaktır.
Topoloji Yayılma Kısıtlamaları: Sürdürülebilirlik için imar.

12) Anti-desenler

Global göz limiti - önemli müşteriler için yanlış 429/zaman aşımı.
Jitter/idempotency olmadan Retrai - fırtına.
Zaman aşımlarının karışıklığı (istemci> sunucu) - donar ve "çift iş".
Prod ve deneyler için ortak önbellekler/kuyruklar - veri kirliliği.
"Her zaman yapışkan" sağduyu olmadan - düzensiz yük/sıcak düğümler.
Disabled outlier detection - rotten instance haftanın metriklerini bozar.

13) Uygulama kontrol listesi

  • Segment trafiği: sınıflar/kiracılar/rotalar.
  • Hedef bütçeleri RPS/connections/bytes ve p95/p99 olarak ayarlayın.
  • Hız sınırını etkinleştir (yerel + global), devre kesici, aykırı değer algılama.
  • Ölçütlerde kanarya bölünmesini + otomatik geri dönüşünü yapılandırın.
  • Üstel backoff + jitter ile zaman aşımları/retrays kaydedin.
  • Çıkış için ECN/BBR (varsa) ve fq_codel/HTB etkinleştirin.
  • Gölge ve deneyler için bireysel havuzlar/önbellekler/kuyruklar.
  • Gösterge tabloları: sınırların metrikleri, kuyruklar, gecikme, adalet.
  • SLO ve runbook: dökülme/geri alma/etkinleştirme kriterleri.

14) SSS

S: Ne seçmeli: şekillendirme veya polislik?
A: Özel yollar için - şekillendirme (damla olmadan kenar yumuşatma). Hizmet sınıfları için "arka plan "/" toplu "- kritik akışları korumak için polislik.

S: Geri çekilme fırtınalarından nasıl kaçınırsınız?
C: Jitterized backoff, deneme limiti, idempotency, sunucu 'Retry-After' komutları, global kotalar.

S: Yapışkan mı, hashing mi?
A: Yapışkan - bir oturum gerektiğinde/önbellek kullanıcı için yerel olduğunda; Hashing - yeknesaklığa ve sharding stabilitesine ihtiyacınız olduğunda.

S: HTTP/3/QUIC veren nedir?
C: TCP HOL kilitleri olmadan, daha iyi kayıp toleransı, daha hızlı kurtarma - p99/p999 kuyruklarını önemli ölçüde azaltır.

15) Toplam

Verimli şekillendirme ve L7 yönlendirme, tutarlı bir politikalar kümesidir: öncelikler ve kotalar, adil dağıtım, güvenli sınırlar ve akıllı yönlendirme, gözlemlenebilirlik ve SLO ile desteklenir. Açıklanan uygulamaları izleyerek (alt seviyelerde HTB/fq_codel/ECN ve üst kısımda Envoy/Istio/Nginx/eBPF), öngörülebilir gecikme kuyrukları, aşırı yüklenmeye karşı direnç ve kontrollü, güvenli sürümler elde edersiniz.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.