ข้ามไปที่เนื้อหาหลัก

RPC เป็นหัวใจสำคัญของการพัฒนาระบบแบบ Distributed Systems

 RPC (Remote Procedure Call) คือเทคนิคที่ใช้ในระบบเครือข่ายเพื่อให้โปรแกรมหนึ่งสามารถเรียกใช้ฟังก์ชันหรือกระบวนการ (Procedure) ที่อยู่บนเครื่องอื่นในเครือข่ายได้ เสมือนว่าฟังก์ชันนั้นทำงานอยู่ในเครื่องของตัวเองโดยไม่ต้องสนใจรายละเอียดการส่งข้อมูลหรือการสื่อสารเครือข่ายเบื้องหลัง


หลักการทำงานของ RPC

1. Client: ฝั่งที่ต้องการเรียกใช้ฟังก์ชันหรือบริการจากฝั่ง Server

2. Server: ฝั่งที่มีฟังก์ชันหรือบริการที่ Client ต้องการเรียกใช้

3. Stub:

Client Stub: ตัวกลางที่ทำหน้าที่แปลงคำขอ (Request) ให้สามารถส่งไปยัง Server ได้

Server Stub: ตัวกลางที่รับคำขอจาก Client Stub แล้วแปลงให้ Server เข้าใจ

4. ขั้นตอนการทำงาน:

Step 1: Client เรียกใช้ฟังก์ชัน (เหมือนเรียกฟังก์ชันในเครื่อง)

Step 2: Client Stub จะแปลงคำขอให้เป็นข้อมูล (Serialization หรือ Marshalling) และส่งผ่านเครือข่าย

Step 3: Server Stub รับคำขอแล้วแปลงกลับ (Deserialization หรือ Unmarshalling)

Step 4: Server ดำเนินการตามคำขอและส่งผลลัพธ์กลับ

Step 5: Client Stub รับผลลัพธ์และแปลงกลับให้ Client ใช้งาน


ตัวอย่างการใช้งาน RPC

1. Traditional RPC: เช่น RPC Protocol ที่อยู่ในระบบปฏิบัติการ

2. Modern RPC Frameworks:

gRPC: ใช้ Protocol Buffers สำหรับการ Serialize ข้อมูล

JSON-RPC: ใช้ JSON ในการแลกเปลี่ยนข้อมูล

XML-RPC: ใช้ XML สำหรับการสื่อสาร


ข้อดีของ RPC

1. ง่ายต่อการใช้งาน: ช่วยให้การสื่อสารข้ามระบบดูเหมือนการเรียกฟังก์ชันปกติ

2. ประสิทธิภาพสูง: โดยเฉพาะเมื่อใช้ Frameworks ที่เหมาะสม เช่น gRPC

3. รองรับหลายภาษา: หลาย Framework รองรับการทำงานข้ามภาษา (Cross-Language)


ข้อเสียของ RPC

1. การพึ่งพาเครือข่าย: RPC จะไม่ทำงานหากเครือข่ายล้มเหลว

2. ความซับซ้อนในการ Debug: การแก้ไขข้อผิดพลาดในระบบเครือข่ายอาจยุ่งยาก

3. ความเข้ากันได้: Stub ฝั่ง Client และ Server ต้องใช้โครงสร้างเดียวกัน


ตัวอย่างการใช้งานจริง (gRPC)


// example.proto

syntax = "proto3";


service Greeter {

  rpc SayHello (HelloRequest) returns (HelloReply);

}


message HelloRequest {

  string name = 1;

}


message HelloReply {

  string message = 1;

}


Workflow:

1. สร้างโปรโตคอล (.proto) เพื่อกำหนดฟังก์ชันที่ Client จะเรียกใช้

2. ใช้ gRPC Generator สร้าง Stub สำหรับ Client และ Server

3. Server Implement ฟังก์ชันที่กำหนดไว้

4. Client เรียกใช้ฟังก์ชันผ่าน Stub


RPC เป็นหัวใจสำคัญของการพัฒนาระบบแบบ Distributed Systems ซึ่งช่วยให้การสื่อสารระหว่างเครื่องในเครือข่ายมีประสิทธิภาพและใช้งานง่าย!


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

Interactive เทคโนโลยีเชิงโต้ตอบเปลี่ยนโลกเข้าสู่ยุค Metaverse

เทคโนโลยี Interactive คืออะไร คำนิยามของ เทคโนโลยี Interactive ที่สร้างและพัฒนาขึ้นสำหรับโปรแกรมหรือแอพลิเคชั่นที่เป็น Real-Time เรียกง่ายๆว่า Real-Time Programming (RTP) โดยเน้นไปยังผู้ใช้หรือมนุษย์นั้นเอง จะประกอบไปด้วย 2 องค์ประกอบ คือ ส่วนแรก เทคโนโลยี Interactive เข้าทำการเปลี่ยนแปลรูปร่าง ขนาด และรูปแบบ ซึ่งมาจาก web service อุปกรณ์ sensor ผ่านคอมพิวเตอร์ และมือถือ เป็นผสมผสานระหว่างระบบดิจิทัลและแอนนาล๊อกเข้าด้วยกัน ผ่านปุ่ม สไลด์เดอร์ หรือสวิทซ์ เพื่อการควบคุมในส่วนควบคุมทั้งหมด ที่เรียกว่า Control panel  ส่วนที่ 2  แอพลิเคชั่นที่ทำงานแบบ Real Time Application ถูกออกแบบในแนวคิดหลักของเทคโนโลยี Real Time  อ้างอิง https://interactiveimmersive.io/blog/beginner/02-interactive-technology/ เทคโนโลยีเชิงโต้ตอบที่เน้นการสร้างต้นแบบที่เร็วขึ้น มีประโยชน์อย่างมากในแอปพลิเคชันและประสบการณ์การสร้างต้นแบบ  ประเภทของเทคโนโลยี Interactive  มี 6 ประเภท 1. IoT เป็นแนวคิดจะเปลี่ยนบริการทุกบริการให้อยู่บนเครือข่ายอินเทอร์เน็ต และสามารถเชื่อมต่อเข้ากับแอพลิเคชั่นทุกแอ...

สำรองข้อมูลใน MySQL ด้วย mysqldump ข้อมูลใน MySQL Character-set ภาษาไทย

การ backup ฐานข้อมูลสำหรับ mysql ในบางครั้งจะเกิดปัญหาสำหรับการใช้งานภาษาไทย ที่ตัวอักษรมักจะเกิดเป็น ?????  จึงต้องทำให้มั่นใจก่อนว่า การจัดเก็บข้อมูลที่เป็นภาษไทย สมบูรณ์ จึงมีการแปลง character set ก่อน สำหรับในการแปลงฐานข้อมูลจากเดิมที่เป็น latin1 หรือ tis620 ให้เป็น utf8 มีเงื่อนไขเบื้องต้นว่า หาก character-set ของฐานข้อมูลเป็น tis620 หรือ  latin1 ต้องไม่กำหนดค่า default-character-set=utf8 ใน my.cnf (สำหรับ Linux อยู่ที่ /etc/my.cnf หรือ /etc/mysql/my.cnf)