ข้ามไปยังเนื้อหา

gRPC Foundations

gRPC ทำให้โปรแกรมหนึ่งเรียก function ในอีกโปรแกรมหนึ่ง — ที่รันอยู่บนอีกเครื่องหนึ่ง — เหมือนเรียก function ในเครื่องตัวเอง คุณนิยาม function และข้อมูลของตัวเองครั้งเดียวในไฟล์ .proto แล้ว gRPC จะ generate code ฝั่ง client และ server ที่ทำให้ network หายไปจากสายตา

นี่คือทั้งหมดที่ gRPC สัญญาไว้: คุณเขียน stub.GetUser(id) แล้ว request จะวิ่งข้าม network ไปรันบน server และคืนผลลัพธ์แบบมี type กลับมา — ไม่มี URL, ไม่ต้อง parse JSON, ไม่ต้องเขียน HTTP เอง

บทเรียนสิ่งที่คุณจะได้เรียนรู้
What is gRPC?RPC model, .proto contract และ workflow แบบ generate-แล้ว-call
gRPC vs RESTแต่ละแบบเหมาะกับอะไร, trade-off จริง ๆ และคำแนะนำตรง ๆ ในการเลือก
HTTP/2 & gRPCทำไม gRPC ต้องใช้ HTTP/2 — multiplexing, stream และ binary framing
Protocol Buffers introแนวคิด contract-first และทำไม binary schema ดีกว่า JSON แบบตามใจ

ทุกหัวข้อที่ตามมา — streaming, deadline, interceptor, load balancing — ล้วนเป็นผลจากการตัดสินใจออกแบบ 2 อย่างที่ gRPC เลือกไว้ตั้งแต่ต้น:

flowchart TB
  proto["Protocol Buffers
(contract-first schema)"] --> gen["Generated stubs
(typed client + server)"]
  http2["HTTP/2
(multiplexed, streaming, binary)"] --> transport["หนึ่ง connection,
หลาย call พร้อมกัน"]
  gen --> grpc["gRPC"]
  transport --> grpc
  grpc --> features["streaming · deadlines ·
interceptors · load balancing"]
สองรากฐานที่ทุกอย่างต่อยอดขึ้นมา

เข้าใจสองอย่างนี้ — binary contract และ multiplexed transport — แล้วส่วนที่เหลือของ gRPC จะเลิกดูเหมือนเวทมนตร์ และกลายเป็นผลลัพธ์ที่เห็นแล้วรู้เลยว่าทำไมต้องเป็นแบบนั้น

แนวคิดหลักของ gRPC คืออะไร?
การตัดสินใจออกแบบพื้นฐาน 2 อย่างที่ gRPC สร้างขึ้นมาคืออะไร?
ใน gRPC คุณคิดในแง่อะไรเป็นหลัก?