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

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 ซึ่งช่วยให้การสื่อสารระหว่างเครื่องในเครือข่ายมีประสิทธิภาพและใช้งานง่าย!


ความคิดเห็น

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

SaaS API-Base Definition, Benefits, Challenges, Problems and Goal for Innovation

What is an Application Programming Interface? API is a set of protocols, standards, and tools that allow two or more software applications to connect and share specific data. API  What is API-Base Saas? API-based SaaS is a software application hosted in the cloud. Users and other programs can access the software’s features, data, and functions via an API instead of a user interface. API refers to the software delivery model as a SaaS Application's functionalist and features are exposed and made to customers through APIs. This combination of the business model of technology on a cloud-base.   This is an integration Service on the cloud provider The Benefits of API-Base SaaS User Experience  Simplifies Development  Increases Accessibility Flexible and Scalable  The Challenges of API-Base SaaS Startup Performance  Integration  Security Pricing What’s The Difference Between SaaS And An API? RPC APIs.  WebSocket APIs. SOAP APIs. REST APIs. The Too...

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 เป็นแนวคิดจะเปลี่ยนบริการทุกบริการให้อยู่บนเครือข่ายอินเทอร์เน็ต และสามารถเชื่อมต่อเข้ากับแอพลิเคชั่นทุกแอ...