← Computer NetworksEnglish

APPLICATION DELIVERY · TRAFFIC CONTROL

ส่ง Request ผ่านระบบที่ล้มเหลวได้เพียงบางส่วน

Reverse Proxy, Load Balancer และ API Gateway อาจอยู่ในผลิตภัณฑ์เดียวหรือหลายชั้น แต่มีหน้าที่ต่างกัน เปิด–ปิด Health, Latency และ Routing Policy เพื่อหาที่มาของ 200, 502, 503 และ 504 จากหลักฐาน

REQUEST ROUTING SIMULATOR

Status Code ควรชี้ว่าคำสัญญาขาดตรงไหน

แบบจำลองแยกการต่อ Backend ไม่ได้, ไม่มี Capacity ที่ Healthy และ Upstream ตอบเกิน Deadline ของ Gateway

ClientHTTPS requestrequest-id
Reverse proxyTLS · host · staticX-Forwarded-*
API gatewayauth · rate · routedeadline
Backend poolbalance · health1 · 2 · 3
READY · ส่ง Request เพื่อดูเส้นทาง
IDLEยังไม่มี Request กำลังเดินทาง
2xx0
502 / 503 / 5040 / 0 / 0
Latency เฉลี่ยของรอบสำเร็จ

SEPARATE THE ROLES

กล่องดูคล้ายกัน แต่ตัดสินใจคนละเรื่อง

Reverse proxy

เป็นตัวแทน Origin ต่อ Client: ทำ TLS termination, เลือก Virtual Host, Serve/Cache content และ Forward metadata ที่เชื่อถือได้

Load balancer

กระจายงานไปยัง Instance ที่พร้อมตาม Health และ Balancing Policy

API gateway

บังคับใช้นโยบาย API เช่น Authentication, Authorization, Quota, Transformation, Routing, Observability และ Deadline

FAILURE SEMANTICS

502, 503 และ 504 ใช้แทนกันไม่ได้

Statusหลักฐานความหมายคำถามก่อน Retry
502 Bad GatewayConnection refused หรือ Upstream response ผิดรูปแบบGateway ไม่ได้รับ Response ที่ถูกต้องจาก UpstreamOperation เป็น Idempotent หรือไม่
503 Service Unavailableไม่มี Healthy instance หรือปิด Capacity ชั่วคราวService ยังรับงานไม่ได้ในขณะนี้ทำตาม Retry-After และใช้ Backoff
504 Gateway TimeoutUpstream ตอบเกิน Deadlineผลลัพธ์อาจไม่แน่นอน เพราะ Upstream อาจทำงานต่อจนสำเร็จRetry จะทำ Side Effect ซ้ำหรือไม่

HEADERS AND TRUST BOUNDARIES

ส่งต่อ Context โดยไม่เชื่อเรื่องที่ Client ปลอมมา

X-Request-ID

เชื่อม Log ข้าม Hop ควรสร้างหรือตรวจที่ Trust Boundary

X-Forwarded-For

เป็นสาย Address ห้ามเชื่อค่าที่ Client ใส่มาเองโดยพลการ

X-Forwarded-Proto

บอก Origin ว่า Request ภายนอกใช้ HTTPS หลัง TLS termination

Host / Forwarded

รักษา Routing context แต่ต้องตรวจเทียบ Allowed Hosts

CLASSROOM TASKS

ทำให้ Failure อธิบายตัวเองได้

  1. ปิดทุก Backend แล้วอธิบายว่าเหตุใดเป็น 503 ไม่ใช่ 502
  2. ตั้ง Healthy Backend ให้ช้ากว่า Deadline แล้วอธิบาย 504
  3. เทียบ Round Robin กับ Least Connections เมื่อ Latency ไม่เท่ากัน
  4. ออกแบบ Idempotency Key สำหรับ POST คล้ายการชำระเงินก่อน Retry
  5. เลือกจุด TLS termination และพิจารณาว่า Hop ภายในต้องใช้ TLS ด้วยหรือไม่
  6. สร้าง Latency Budget แยก Edge, Gateway, Service และ Database