
gRPC
Protocol Buffers, บริการ gRPC, streaming, interceptor, การจัดการข้อผิดพลาด, metadata
1gRPC คืออะไร?
gRPC คืออะไร?
คำตอบ
gRPC เป็น framework RPC (Remote Procedure Call) แบบโอเพนซอร์สที่พัฒนาโดย Google ซึ่งใช้ HTTP/2 เป็นโปรโตคอลการรับส่งข้อมูลและ Protocol Buffers เป็นรูปแบบ serialization เริ่มต้น ต่างจาก REST ที่ใช้ JSON และ HTTP/1.1 gRPC ให้ประสิทธิภาพที่ดีกว่าด้วยรูปแบบไบนารีของ Protocol Buffers และฟีเจอร์ขั้นสูงของ HTTP/2 (multiplexing, การบีบอัด header, server push) gRPC ถูกใช้อย่างแพร่หลายในการสื่อสารระหว่าง microservice เพราะรองรับ streaming แบบสองทิศทาง การสร้างโค้ด client/server และการใช้ type ที่เข้มงวดได้แบบเนทีฟ
2บทบาทหลักของ Protocol Buffers ใน gRPC คืออะไร?
บทบาทหลักของ Protocol Buffers ใน gRPC คืออะไร?
คำตอบ
Protocol Buffers (protobuf) คือภาษาสำหรับนิยามอินเทอร์เฟซ (IDL) และรูปแบบ serialization แบบไบนารีที่ใช้เป็นค่าเริ่มต้นใน gRPC โดยช่วยให้กำหนดโครงสร้างของ message และบริการในไฟล์ .proto ซึ่งจะถูกคอมไพล์เพื่อสร้างโค้ด client และ server โดยอัตโนมัติในหลายภาษา รูปแบบไบนารีของ protobuf กระชับกว่า JSON ถึง 3 ถึง 10 เท่า และให้ประสิทธิภาพการ serialization/deserialization ที่เหนือกว่าอย่างเห็นได้ชัด (เร็วกว่าถึง 20 เท่า) สิ่งนี้ทำให้ gRPC เหมาะอย่างยิ่งสำหรับการสื่อสารความถี่สูงระหว่าง microservice
3ความแตกต่างระหว่างการเรียก gRPC แบบ Unary กับการเรียกแบบ Server Streaming คืออะไร?
ความแตกต่างระหว่างการเรียก gRPC แบบ Unary กับการเรียกแบบ Server Streaming คืออะไร?
คำตอบ
การเรียกแบบ Unary เป็นการเรียก gRPC ที่ง่ายที่สุด: ไคลเอนต์ส่งคำขอเดียวและได้รับการตอบกลับเดียว คล้ายกับคำขอ HTTP REST แบบดั้งเดิม การเรียกแบบ Server Streaming ช่วยให้ไคลเอนต์ส่งคำขอเดียวแต่ได้รับสตรีม (stream) ของการตอบกลับหลายรายการจากเซิร์ฟเวอร์ ตัวอย่างเช่น API การแจ้งเตือนสามารถใช้ Server Streaming เพื่อส่งการอัปเดตหลายรายการไปยังไคลเอนต์โดยไคลเอนต์ไม่ต้อง polling สิ่งนี้ลด latency และภาระเครือข่ายเมื่อเทียบกับการเรียก Unary ซ้ำ ๆ
package Go ใดที่ใช้ในการสร้างเซิร์ฟเวอร์ gRPC?
จะนิยามบริการ gRPC ในไฟล์ .proto ได้อย่างไร?
+19 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Go อื่นๆ
พื้นฐาน Go
โครงสร้างข้อมูล Go
อินเทอร์เฟซใน Go
การจัดการข้อผิดพลาด
พื้นฐาน Goroutine
Channels
Go Modules
เซิร์ฟเวอร์ HTTP
ไคลเอนต์ HTTP
การเข้ารหัส JSON
Database/SQL
แพ็กเกจ context
Testing
รูปแบบ Concurrency
ไพรมิทีฟการซิงโครไนซ์
เฟรมเวิร์กเว็บ Go
การออกแบบ REST API
Reflection
การจัดการหน่วยความจำ
การเพิ่มประสิทธิภาพการทำงาน
Generics
Go Design Patterns
Microservices
ความปลอดภัยและการยืนยันตัวตน
Docker & Containerization
Kubernetes Basics
Go ขั้นสูง
การพัฒนา CLI
เชี่ยวชาญ Go สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี