Hacker News

gRPC: จากคำจำกัดความของบริการไปจนถึงรูปแบบสาย

gRPC: จากคำจำกัดความของบริการไปจนถึงรูปแบบสาย การสำรวจนี้จะเจาะลึกถึง grpc โดยพิจารณาถึงความสำคัญและผลกระทบที่อาจเกิดขึ้น — ระบบปฏิบัติการธุรกิจ Mewayz

1 นาทีอ่าน

Mewayz Team

Editorial Team

Hacker News

gRPC: จากคำจำกัดความของบริการไปจนถึงรูปแบบสายไฟ

gRPC คือเฟรมเวิร์กการเรียกขั้นตอนระยะไกล (RPC) แบบโอเพ่นซอร์สประสิทธิภาพสูง ซึ่งจะแปลงวิธีการสื่อสารของไมโครเซอร์วิสโดยใช้ Protocol Buffers สำหรับคำจำกัดความของบริการที่เข้มงวด และ HTTP/2 สำหรับการส่งข้อมูลไบนารีที่มีประสิทธิภาพ gRPC เดิมได้รับการพัฒนาที่ Google และปัจจุบันเป็นโครงการที่สำเร็จการศึกษาจาก CNCF แล้ว และได้กลายเป็นแกนหลักของระบบแบบกระจายที่ทันสมัย ​​โดยขับเคลื่อนทุกอย่างตั้งแต่เครือข่ายบริการภายในไปจนถึง API สาธารณะในบริษัทต่างๆ เช่น Netflix, Dropbox และ Cisco

สำหรับทีมที่สร้างแพลตฟอร์มที่ซับซ้อน เช่น ระบบปฏิบัติการทางธุรกิจ 207 โมดูลของ Mewayz ที่ให้บริการผู้ใช้มากกว่า 138,000 ราย การทำความเข้าใจการเดินทางของ gRPC จากไฟล์ .proto ไปจนถึงไบต์บนสายถือเป็นสิ่งสำคัญสำหรับการออกแบบสถาปัตยกรรมระบบที่ปรับขนาดได้โดยไม่กระทบต่อความน่าเชื่อถือหรือประสิทธิภาพการทำงานของนักพัฒนา

gRPC คืออะไร และเหตุใดจึงมีความสำคัญสำหรับสถาปัตยกรรมสมัยใหม่

gRPC ย่อมาจาก "gRPC Remote Procedure Call" ซึ่งเป็นตัวย่อแบบเรียกซ้ำที่เน้นไปที่จุดโฟกัสเดียว: การโทรบริการระยะไกลให้ความรู้สึกเป็นธรรมชาติเหมือนกับการเรียกใช้ฟังก์ชันในเครื่อง ต่างจาก REST API ที่ใช้ JSON บน HTTP/1.1 โดย gRPC ใช้ประโยชน์จาก Protocol Buffers (protobuf) เป็นทั้ง Interface Definition Language (IDL) และรูปแบบการทำให้เป็นอนุกรม โดยจับคู่กับ HTTP/2 เป็นโปรโตคอลการขนส่ง

การรวมกันนี้ให้ข้อได้เปรียบที่วัดผลได้ โดยทั่วไปข้อความ Protobuf จะมีขนาดเล็กกว่าข้อความ JSON ที่เทียบเท่ากัน 3–10 เท่า และการทำให้เป็นอนุกรมเร็วขึ้น 20–100 เท่า มัลติเพล็กซ์แบบ HTTP/2 ช่วยลดการบล็อกส่วนหัวของบรรทัด ทำให้สามารถใช้งาน RPC พร้อมกันหลายร้อยรายการผ่านการเชื่อมต่อ TCP เดียว สำหรับแพลตฟอร์มที่จัดการโมดูลที่เชื่อมต่อกันหลายสิบโมดูล ประสิทธิภาพเหล่านี้จะเพิ่มขึ้นอย่างมาก

เฟรมเวิร์กรองรับรูปแบบการสื่อสารสี่รูปแบบ: เอกนารี (คำขอเดียว การตอบสนองเดี่ยว) การสตรีมเซิร์ฟเวอร์ การสตรีมไคลเอนต์ และการสตรีมแบบสองทิศทาง ความยืดหยุ่นนี้ทำให้ gRPC เหมาะสำหรับทุกสิ่งตั้งแต่การดำเนินการ CRUD แบบธรรมดาไปจนถึงฟีดข้อมูลแบบเรียลไทม์และสตรีมเหตุการณ์ที่มีอายุการใช้งานยาวนาน

คำจำกัดความของบริการกลายเป็นโค้ดที่ปฏิบัติการได้อย่างไร

วงจรการใช้งาน gRPC เริ่มต้นด้วยไฟล์ .proto ซึ่งเป็นสัญญาที่กำหนดบริการ วิธีการ และประเภทข้อความของคุณในสคีมาที่ไม่เชื่อเรื่องภาษา นี่คือลักษณะการเดินทางทีละขั้นตอน:

💡 คุณรู้หรือไม่?

Mewayz ทดแทนเครื่องมือธุรกิจ 8+ รายการในแพลตฟอร์มเดียว

CRM · การออกใบแจ้งหนี้ · HR · โปรเจกต์ · การจอง · อีคอมเมิร์ซ · POS · การวิเคราะห์ แผนฟรีใช้ได้ตลอดไป

เริ่มฟรี →

การเขียนสคีมา: คุณกำหนดอินเทอร์เฟซบริการและโครงสร้างข้อความในไวยากรณ์ Protocol Buffers v3 โดยระบุประเภทฟิลด์ หมายเลข และลายเซ็นวิธี RPC พร้อมด้วยประเภทคำขอและการตอบสนองที่ชัดเจน

การสร้างโค้ด: คอมไพเลอร์ protoc เมื่อรวมกับปลั๊กอิน gRPC เฉพาะภาษา จะสร้าง stub ไคลเอ็นต์และคลาสฐานเซิร์ฟเวอร์ในภาษาเป้าหมายของคุณ เช่น Go, Python, Java, Rust, C++ หรือภาษาใด ๆ ใน 12+ ภาษาที่รองรับ

การใช้งานเซิร์ฟเวอร์: นักพัฒนาใช้อินเทอร์เฟซเซิร์ฟเวอร์ที่สร้างขึ้น โดยกรอกตรรกะทางธุรกิจในขณะที่เฟรมเวิร์กจัดการการจัดการการเชื่อมต่อ การทำเธรด และรายละเอียดโปรโตคอล

การเรียกใช้ไคลเอนต์: stub ไคลเอนต์ที่สร้างขึ้นจัดให้มีการเรียกเมธอดแบบปลอดภัยพร้อมการสนับสนุนในตัวสำหรับกำหนดเวลา การเผยแพร่ข้อมูลเมตา การยกเลิก และนโยบายการลองใหม่อัตโนมัติ

การส่งผ่านสาย: ณ เวลาที่โทร ข้อความคำขอจะถูกจัดลำดับเป็นการเข้ารหัสไบนารีโปรโตบัฟแบบกะทัดรัด โดยมีส่วนหัว gRPC ขนาด 5 ไบต์ (แฟล็กการบีบอัด + ความยาวข้อความ) และส่งผ่านเฟรม HTTP/2 DATA

ข้อมูลเชิงลึกที่สำคัญ: จุดแข็งที่ยิ่งใหญ่ที่สุดของ gRPC ไม่ใช่ความเร็วที่แท้จริง แต่เป็นสัญญาที่บังคับใช้ได้ ไฟล์ .proto ทำหน้าที่เป็นเอกสารประกอบ เลเยอร์การตรวจสอบ และเครื่องสร้างโค้ดไปพร้อมๆ กัน โดยกำจัดข้อบกพร่องในการบูรณาการทุกประเภทที่รบกวน REST API ที่พิมพ์อย่างหลวมๆ เมื่อแพลตฟอร์มของคุณมี 207 โมดูลที่ต้องสื่อสารอย่างเชื่อถือได้ สัญญานั้นจะกลายเป็นทรัพย์สินทางสถาปัตยกรรมที่มีค่าที่สุดของคุณ

เกิดอะไรขึ้นบนสายระหว่างการโทร gRPC

การทำความเข้าใจรูปแบบการโยงจะทำให้การดีบัก gRPC และการปรับแต่งประสิทธิภาพกระจ่างขึ้น เมื่อไคลเอ็นต์เรียกใช้ RPC ลำดับต่อไปนี้จะปรากฏบน HTTP/2:

ไคลเอนต์เปิด (หรือใช้ซ้ำ) การเชื่อมต่อ HTTP/2 และส่งเฟรม HEADERS ที่มีเส้นทางวิธีการ (/package.Service/Method) ประเภทเนื้อหา (แอปพลิเคชัน/grpc) การหมดเวลา และใดๆ

Streamline Your Business with Mewayz

Mewayz brings 207 business modules into one platform — CRM, invoicing, project management, and more. Join 138,000+ users who simplified their workflow.

Start Free Today →

ลองใช้ Mewayz ฟรี

แพลตฟอร์มแบบออล-อิน-วันสำหรับ CRM, การออกใบแจ้งหนี้, โครงการ, HR และอื่นๆ ไม่ต้องใช้บัตรเครดิต

เริ่มจัดการธุรกิจของคุณอย่างชาญฉลาดวันนี้

เข้าร่วมธุรกิจ 30,000+ ราย แผนฟรีตลอดไป · ไม่ต้องใช้บัตรเครดิต

พบว่าสิ่งนี้มีประโยชน์หรือไม่? แบ่งปันมัน

พร้อมนำไปปฏิบัติแล้วหรือยัง?

เข้าร่วมธุรกิจ 30,000+ รายที่ใช้ Mewayz แผนฟรีตลอดไป — ไม่ต้องใช้บัตรเครดิต

เริ่มต้นทดลองใช้ฟรี →

พร้อมที่จะลงมือทำหรือยัง?

เริ่มต้นทดลองใช้ Mewayz ฟรีวันนี้

แพลตฟอร์มธุรกิจแบบครบวงจร ไม่ต้องใช้บัตรเครดิต

เริ่มฟรี →

ทดลองใช้ฟรี 14 วัน · ไม่ต้องใช้บัตรเครดิต · ยกเลิกได้ทุกเมื่อ