형성 및 트래픽 라우팅
1) 왜이 모든 것
형성 및 라우팅-관리 가용성 및 예측 가능한 대기 시간의 기반:- 안정성: 채널을 득점하기 위해 "시끄러운 이웃" 을주지 마십시오.
- 공정성: 세입자/클래스 간의 우선 순위 및 할당량.
- 효율성: 요청을보다 빠르고 저렴한 곳으로 보냅니다.
- 제어 변경: 위험없이 카나리아/가중 릴리스.
- 저축: 출구/출구 비용 및 CDN- 캐시 히트 레이트의 최적화.
2) 기본 개념
2. 1 교통 형성 대 치안
형성-목표 속도로 패킷을 버퍼링하고 전송하여 트래픽을 조정합니다 ("폭발" 스무딩).
치안- 버퍼링없이 "처벌" 초과 (드롭/마킹). 더 단단하지만 저렴합니다.
2. 2 개의 수업, 대기열 및 분야
우선 순위 대기열 (PRIO), WFQ/DRR (Fair Allocation), HTB (Hierarchical Quotas), CoDel/RED (버퍼 블록 제어), ECN (드롭 혼잡 신호 없음).
L7에서 RPS 제한/연결/바이트 및 우선 순위 풀의 형태로 "대기열".
2. 3 제한 알고리즘
토큰 버킷 (비율 r로 추가 된 토큰); 토큰을 "사용" 요청).
새는 버킷 (고정 유출; 스무딩에 좋습니다).
글로벌/로컬 한계: 로컬-빠른, 글로벌-페어 (Redis/etcd/per-tentian).
3) L3/L4 당 QoS
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
ECN은 피크에서 방울을 줄입니다. RED/CoDel은 버퍼링을 제한합니다.
BBR (큐빅 대신) 은 종종 WAN/헤비 큐 위에서 p99 대기 시간을 줄입니다.
4) L7 라우팅 (TH/gRPC/WS)
4. 1 라우팅 기준
경로/방법 ('/api/v1/', 'POST'), 헤더 (클라이언트 버전, 기능 플래그, 카나리아 헤더), 쿠키 (A/B, 끈적 끈적한), JWT 스탬프 (테넌트/역할), 지리/ASN, 시간 창, 로드 (이상 감지).
프로토콜: TH/2 (멀티플렉싱), HT3/QUIC (패킷 손실에 대한 저항), gRPC (바이 디 스트림), 웹 소켓 (장기 연결).
4. 가중 분할/카나리아 릴리스 2 개
루트 'v1: 95%', 'v2: 5%', "녹색" 메트릭으로 자동 증가.
컷오프: 오류/대기 시간/비즈니스 불변량.
특사 (스케치)
yaml route:
weighted_clusters:
clusters:
- name: svc-v1 weight: 95
- name: svc-v2 weight: 5
이스 티오
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 개의 끈적한 세션과 일관된 해싱
쿠키/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 (CNC/edge) → 가장 가까운 팝/영역.
대기 시간 인식: 주기적인 건강 샘플 + RTT 측정 → "가장 빠른" 클러스터로의 트래픽.
4. 5 이상 탐지/회로 파괴
"나쁜" 인스턴스: 최대 배출 비율, 기본 오류/대기 시간.
회로 차단기: 연결/RPS/in 대기열 제한.
5) 게이트웨이/매쉬 스택 레벨에서 트래픽 성형
5. 1 요율 제한
로컬 (포드 당): 저렴하지만 공정한 복제본은 아닙니다.
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 공정성과 우선 순위
우선 순위 풀은 대화식> 시스템> 배경입니다.
L7의 DRR/WFQ 등가물: 클라이언트/테넌트 당 할당량/가중치.
5. 3 과부하 및 보호
로드 쉐드: 예산을 초과하면 오류/저하가 발생합니다.
적응 형 동시성: p50/p95/큐 렌의 한계 역학.
서버 측 역압: 429/503 + 재시도 후.
6) eBPF 및 CNI 수준
6. 1 실륨/eBPF
커널의 필터링/라우팅: 컨텍스트 스위치 수가 적고 L3-L7 정책이 얇습니다.
안정적인 분포를위한 Maglev 해싱.
포드 당 QoS (TC/XDP 후크) 를위한 eBPF 프로그램.
6. 2 Calico/NetworkPolicies
L3/L4 액세스 정책, 기본 우선 순위 클래스, Kubernetes QoS (Guaranteed/Burstable/BestEffort) 와의 통합.
7) 가장자리/CDN과 API 게이트웨이
CNC: 캐시 키 (정규화 쿼리/헤더), 오래된 재정의, 원점 보호 (속도 제한/봇 필터).
API 게이트웨이: 인증, 할당량/요금 계획 (소비자 당), SLA 제한, 지리 라우팅, API 버전.
WAF: 커널의 CPU를 낭비하지 않도록 가장자리에서 필터링합니다.
8) 비동기 버스/스트리밍
Kafka/NATS/Pulsar: 생산자/소비자 할당량, 배치 크기 제한, 지연을 통한 역압.
이벤트 라우팅: 테넌트/idempotency 키, 깜박 거리는 파티션.
정확히 한 번의 "유효 한 번": 거래 생산자 + dempotent 타박상.
9) 타임 아웃, 후퇴, 백오프
엔드 투 엔드 타임 아웃: 클라이언트 <프록시 <서비스 (그 반대도 아님).
Retrai: 지수 지수 백오프가 있지만 폭풍이없는 제한된 번호.
이념은 퇴각에서 필수적이다. 그렇지 않으면-SAGA/보상.
헤지/병렬 요청 (주의): p99를 개선하고 전체 트래픽을 증가시킵니다.
10) 관찰 및 SLO
10. 1 메트릭
(PHP 3 = 3.0.6, PHP 4)
10. 2 추적
스캔 상관 ID; '재 시도' 창고 '스로틀' 큐 '원인 유형으로 표시됩니다.
하위 시스템에 미치는 영향을 이해하기 위해 배송/헤지를 연결합니다.
10. 3 개의 통나무/보고서
방울/흘림/제한 요약, 경로 별 열 맵 요약.
공정성 지수에 대한 별도의 패널.
10. 4 가지 SLO 예
"95 백분위 수 하중에서 p99 λ300 ms; 방울 0. 1%; (PHP 3 = 3.0.6, PHP 4) 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/타임 아웃.
지터/dedempotency → 폭풍이없는 배신자.
타임 아웃 혼동 (클라이언트> 서버) → 동결 및 "이중 작업".
prod 및 실험을위한 일반적인 캐시/대기열 → 데이터 오염.
상식없이 "항상 끈적 끈적한" → 고르지 않은로드/핫 매듭.
비활성화 된 특이 치 감지 → 썩은 인스턴스는 일주일의 메트릭을 망칩니다.
13) 구현 점검표
- 세그먼트 트래픽: 클래스/테넌트/노선.
- 대상 예산을 RPS/연결/바이트 및 p95/p99로 설정하십시오.
- 속도 제한 (로컬 + 글로벌), 회로 차단기, 특이 치 감지 기능 사용.
- 메트릭스에서 카나리아 분할 + 자동 롤백 설정.
- 지수 백오프 + 지터로 타임 아웃/배상을 기록하십시오.
- 탈출을 위해 ECN/BBR (해당되는 경우) 및 fq _ codel/HTB를 사용하십시오.
- 그림자와 실험을위한 개별 수영장/캐시/대기열.
- 대시 보드: 한계, 대기열, 대기 시간, 공정성 측정.
- SLO 및 런북: 흘림/롤백/활성화 기준.
14) FAQ
Q: 무엇을 선택해야합니까: 성형 또는 정책?
A: 맞춤형 경로-성형 (방울없이 안티 앨리어싱). 서비스 클래스 "background "/" bulk" 의 경우-중요한 흐름을 보호하기위한 정책.
Q: 퇴각 폭풍을 어떻게 피합니까?
A: 백오프, 시도 한계, demempotency, 서버 프롬프트 'Redue-After', 글로벌 할당량.
Q: 끈적 끈적하거나 해싱?
A: 끈적 끈적한-세션이 필요할 때/캐시는 사용자에게 로컬입니다. 해싱-균일 성과 샤딩의 안정성이 필요할 때.
Q: TP/3/QUIC를 제공하는 것은 무엇입니까?
A: TPHOL 잠금 장치가 없으면 손실 내성 향상, 빠른 복구-p99/p999 테일을 크게 줄입니다.
15) 총계
효율적인 성형 및 L7 라우팅은 우선 순위 및 할당량, 공정 분배, 보안 한계 및 스마트 라우팅과 같은 일관된 정책 세트로 관찰 성 및 SLO가 지원합니다. 설명 된 관행 (하위 레벨의 HTB/fq _ codel/ECN 및 상단의 Envoy/Istio/Nginx/eBPF) 을 따르면 예측 가능한 대기 시간 꼬리, 과부하 저항 및 제어 된 안전한 릴리스가 제공됩니다.