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

RPC คืออะไร?
การเรียกกระบวนการระยะไกล (RPC) เป็น การสื่อสารระหว่างกระบวนการ เทคนิคที่ใช้สำหรับแอปพลิเคชันแบบไคลเอ็นต์-เซิร์ฟเวอร์ RPC ย่อมาจาก Remote Procedure Call กลไก RPC ใช้เมื่อโปรแกรมคอมพิวเตอร์สั่งให้โปรแกรมย่อยหรือโปรแกรมย่อยทำงานในพื้นที่หน่วยความจำที่แตกต่างกัน โดยเขียนโค้ดเหมือนกับการเรียกใช้โปรแกรมปกติ โดยที่โปรแกรมเมอร์ไม่ต้องเขียนรายละเอียดสำหรับการโต้ตอบระยะไกลอย่างชัดเจน
การเรียกใช้ฟังก์ชันนี้ยังจัดการโปรโตคอลการขนส่งระดับต่ำ เช่น UDP และ TCP/IP เพื่อส่งข้อมูลข้อความระหว่างโปรแกรมต่างๆ ด้วย
ประเภทของ RPC
RPC สามประเภทคือ:
- RPC โทรกลับ
- ออกอากาศ RPC
- RPC โหมดแบตช์
RPC โทรกลับ
RPC ประเภทนี้ช่วยให้เกิดรูปแบบการสื่อสารแบบ Peer-to-Peer (P2P) ระหว่างกระบวนการที่เข้าร่วม ช่วยให้กระบวนการหนึ่งสามารถทำหน้าที่ได้ทั้งเป็นไคลเอ็นต์และเซิร์ฟเวอร์
ฟังก์ชั่นของการโทรกลับ RPC:
- จัดการปัญหาแอปพลิเคชันแบบโต้ตอบที่ประมวลผลจากระยะไกล
- ส่งข้อมูลแฮนเดิลของไคลเอ็นต์ไปยังเซิร์ฟเวอร์
- ฟังก์ชัน Callback ทำให้กระบวนการฝั่งไคลเอ็นต์ต้องรอ
- จัดการภาวะการติดตายของฟังก์ชันเรียกกลับ (callback deadlocks)
- มันช่วยส่งเสริมรูปแบบการแลกเปลี่ยนข้อมูลระหว่างกระบวนการที่เข้าร่วม
ออกอากาศ RPC
Broadcast RPC คือคำขอของไคลเอ็นต์ที่ถูกส่งกระจายไปทั่วเครือข่าย และถูกประมวลผลโดยเซิร์ฟเวอร์ทั้งหมดที่มีเมธอดสำหรับประมวลผลคำขอนั้น
ฟังก์ชั่นของการออกอากาศ RPC:
- อนุญาตให้คุณระบุว่าข้อความร้องขอของไคลเอ็นต์จะต้องถูกส่งแบบกระจาย (broadcast)
- คุณสามารถประกาศพอร์ตการออกอากาศได้
- ช่วยลดภาระของเครือข่ายทางกายภาพได้
RPC โหมดแบตช์
RPC ในโหมดแบตช์ช่วยจัดคิวคำขอ RPC แยกต่างหากไว้ในบัฟเฟอร์การส่งข้อมูลทางฝั่งไคลเอ็นต์ จากนั้นจึงส่งคำขอเหล่านั้นผ่านเครือข่ายไปยังเซิร์ฟเวอร์ในคราวเดียว
หน้าที่ของ RPC ในโหมดแบตช์:
- วิธีนี้ช่วยลดภาระงานที่ไม่จำเป็นในการส่งคำขอ เนื่องจากส่งคำขอผ่านเครือข่ายไปยังเซิร์ฟเวอร์เป็นชุดเดียว
- โปรโตคอล RPC ประเภทนี้มีประสิทธิภาพเฉพาะกับแอปพลิเคชันที่ต้องการอัตราการเรียกใช้งานต่ำเท่านั้น
- ต้องใช้โปรโตคอลการส่งข้อมูลที่เชื่อถือได้
RPC Archiเทคเจอร์
สถาปัตยกรรม RPC ประกอบด้วยส่วนประกอบหลักของโปรแกรมห้าประการ:
- ไคลเอนต์
- ต้นขั้วลูกค้า
- รันไทม์ RPC
- เซิร์ฟเวอร์สตับ
- เซิร์ฟเวอร์
RPC Archiเทคเจอร์
RPC ทำงานอย่างไร?
ขั้นตอนต่อไปนี้เกิดขึ้นระหว่างกระบวนการ RPC:
ขั้นตอน 1) ไคลเอนต์, ไคลเอนต์สตับ และอินสแตนซ์หนึ่งของรันไทม์ RPC จะทำงานบนเครื่องไคลเอนต์
ขั้นตอน 2) ไคลเอนต์เริ่มต้นกระบวนการจำลองไคลเอนต์โดยการส่งพารามิเตอร์ในลักษณะปกติ กระบวนการจำลองไคลเอนต์จะถูกจัดเก็บไว้ในพื้นที่หน่วยความจำของไคลเอนต์เอง นอกจากนี้ยังขอให้ RPC Runtime ในเครื่องส่งคำขอไปยังกระบวนการจำลองเซิร์ฟเวอร์ด้วย
ขั้นตอน 3) ในขั้นตอนนี้ ผู้ใช้เข้าถึง RPC โดยการเรียกใช้ฟังก์ชันภายในเครื่องตามปกติ RPC Runtime จะจัดการการส่งข้อความระหว่างไคลเอนต์และเซิร์ฟเวอร์ผ่านเครือข่าย รวมถึงการดำเนินการส่งต่อ การยืนยัน การกำหนดเส้นทาง และการเข้ารหัสด้วย
ขั้นตอน 4) หลังจากเสร็จสิ้นขั้นตอนของเซิร์ฟเวอร์ การทำงานจะส่งกลับไปยังส่วนประมวลผลของเซิร์ฟเวอร์ (server stub) ซึ่งจะทำการบรรจุ (จัดเรียง) ค่าที่ส่งกลับมาลงในข้อความ จากนั้นส่วนประมวลผลของเซิร์ฟเวอร์จะส่งข้อความนั้นกลับไปยังเลเยอร์การขนส่ง (transport layer)
ขั้นตอน 5) ในขั้นตอนนี้ เลเยอร์การขนส่งจะส่งข้อความผลลัพธ์กลับไปยังเลเยอร์การขนส่งฝั่งไคลเอ็นต์ ซึ่งจะส่งข้อความนั้นกลับไปยังไคลเอ็นต์สตับ
ขั้นตอน 6) ในขั้นตอนนี้ ตัวประมวลผลแบบสับของไคลเอ็นต์จะแยกข้อมูล (แกะข้อมูล) พารามิเตอร์ที่ส่งคืนในแพ็กเก็ตที่ได้ และการประมวลผลจะส่งกลับไปยังผู้เรียกใช้
ลักษณะของอาร์พีซี
นี่คือลักษณะสำคัญของ RPC:
- โปรแกรมย่อยที่ถูกเรียกใช้นั้นอยู่ในกระบวนการอื่น ซึ่งอาจอยู่บนเครื่องอื่น
- กระบวนการไม่แชร์พื้นที่ที่อยู่
- พารามิเตอร์ถูกส่งผ่านโดยค่าเท่านั้น
- RPC ดำเนินการภายในสภาพแวดล้อมของกระบวนการเซิร์ฟเวอร์
- ฟังก์ชันนี้ไม่สามารถเข้าถึงสภาพแวดล้อมของขั้นตอนการเรียกใช้ได้
คุณสมบัติของ RPC
นี่คือคุณสมบัติที่สำคัญของ RPC:
- รูปแบบการเรียกใช้งานที่เรียบง่าย
- นำเสนอความหมายที่ทราบแล้ว
- มีอินเทอร์เฟซที่กำหนดไว้อย่างชัดเจน
- สามารถสื่อสารระหว่างกระบวนการต่างๆ บนเครื่องเดียวกันหรือต่างเครื่องกันได้
ข้อดีของ RPC
ต่อไปนี้คือข้อดี/ประโยชน์ของ RPC:
- RPC ช่วยให้ไคลเอ็นต์สื่อสารกับเซิร์ฟเวอร์โดยใช้การเรียกใช้ฟังก์ชันแบบดั้งเดิมในภาษาโปรแกรมระดับสูง
- RPC มีรูปแบบการทำงานคล้ายกับการเรียกใช้โปรแกรมย่อยในเครื่อง แต่โปรแกรมย่อยที่ถูกเรียกนั้นมักจะถูกประมวลผลในกระบวนการที่แตกต่างกัน และโดยปกติแล้วจะอยู่บนคอมพิวเตอร์ที่แตกต่างกัน
- RPC รองรับทั้งโมเดลที่เน้นกระบวนการและโมเดลที่เน้นเธรด
- RPC ซ่อนกลไกการส่งข้อความภายในจากผู้ใช้
- ต้องใช้ชั้นโปรโตคอลหลายชั้นเพื่อปรับปรุงประสิทธิภาพ
- RPC ให้บริการ abstracตัวอย่างเช่น ลักษณะการส่งต่อข้อความของการสื่อสารผ่านเครือข่ายยังคงถูกซ่อนไว้จากผู้ใช้
- RPC สามารถใช้งานได้ทั้งในสภาพแวดล้อมแบบกระจายและแบบภายในองค์กร
- ความพยายามที่จำเป็นในการเขียนโค้ดใหม่และพัฒนาโค้ดใหม่นั้นมีน้อยมาก
ข้อเสียของ RPC
ข้อเสีย/ข้อเสียของการใช้ RPC มีดังนี้
- การเรียกใช้ฟังก์ชันระยะไกล (Remote Procedure Call) จะส่งผ่านพารามิเตอร์โดยใช้ค่าเท่านั้น ไม่อนุญาตให้ใช้ค่าตัวชี้ (อ้างอิง)
- เวลาในการเรียกใช้ (และส่งกลับ) กระบวนการระยะไกล ซึ่งเป็นค่าใช้จ่ายเพิ่มเติมนั้น สูงกว่ากระบวนการภายในเครื่องอย่างมาก
- กลไกนี้มีความเสี่ยงสูงต่อความล้มเหลว เนื่องจากเกี่ยวข้องกับระบบสื่อสาร เครื่องจักรอีกเครื่อง และกระบวนการอื่น
- แนวคิด RPC สามารถนำไปใช้ได้หลายวิธี ดังนั้นจึงไม่มีมาตรฐานเดียว
- มันไม่มีความยืดหยุ่นสำหรับสถาปัตยกรรมฮาร์ดแวร์ เนื่องจากส่วนใหญ่เน้นการใช้งานแบบโต้ตอบ
- ต้นทุนของกระบวนการเพิ่มขึ้นเนื่องจากการเรียกใช้ฟังก์ชันระยะไกล

