GH GambleHub

형성 및 트래픽 라우팅

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) 을 따르면 예측 가능한 대기 시간 꼬리, 과부하 저항 및 제어 된 안전한 릴리스가 제공됩니다.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.