Giao thức gọi thủ tục từ xa (RPC) trong hệ thống phân tán
⚡ Tóm tắt thông minh
Giao thức gọi thủ tục từ xa (RPC) là một giao thức truyền thông giữa các tiến trình cho phép một chương trình thực thi một thủ tục trong không gian địa chỉ hoặc máy khác, che giấu các chi tiết mạng đằng sau một lệnh gọi hàm cục bộ thông thường trong các hệ thống máy chủ-máy khách phân tán.

RPC là gì?
Cuộc gọi thủ tục từ xa (RPC) là một giao tiếp giữa các quy trình Kỹ thuật này được sử dụng cho các ứng dụng máy khách-máy chủ. RPC là viết tắt của Remote Procedure Call (Gọi thủ tục từ xa). Cơ chế RPC được sử dụng khi một chương trình máy tính khiến một thủ tục hoặc chương trình con được thực thi trong một không gian địa chỉ khác, được mã hóa như một cuộc gọi thủ tục thông thường mà không cần lập trình viên phải mã hóa rõ ràng các chi tiết cho tương tác từ xa.
Thủ tục gọi này cũng quản lý các giao thức truyền tải cấp thấp, chẳng hạn như UDP và TCP/IP, để truyền dữ liệu thông báo giữa các chương trình.
Các loại RPC
Ba loại RPC là:
- RPC gọi lại
- Phát sóng RPC
- RPC chế độ hàng loạt
RPC gọi lại
Loại RPC này cho phép thiết lập mô hình ngang hàng (P2P) giữa các tiến trình tham gia. Nó giúp một tiến trình hoạt động vừa như một máy khách vừa như một máy chủ.
Chức năng của RPC gọi lại:
- Giải quyết các vấn đề ứng dụng tương tác được xử lý từ xa.
- Cung cấp cho máy chủ thông tin định danh của máy khách.
- Hàm callback khiến tiến trình phía máy khách phải chờ.
- Quản lý tình trạng tắc nghẽn khi gọi lại hàm.
- Nó tạo điều kiện thuận lợi cho mô hình tương tác ngang hàng giữa các quy trình tham gia.
Phát sóng RPC
Broadcast RPC là yêu cầu của máy khách được phát đi trên mạng và được xử lý bởi tất cả các máy chủ có phương thức xử lý yêu cầu đó.
Chức năng của Broadcast RPC:
- Cho phép bạn chỉ định rằng thông điệp yêu cầu của máy khách phải được phát sóng.
- Bạn có thể khai báo các cổng phát sóng.
- Điều này giúp giảm tải cho mạng vật lý.
RPC chế độ hàng loạt
Chế độ RPC theo lô giúp xếp hàng các yêu cầu RPC riêng biệt vào bộ đệm truyền tải ở phía máy khách, sau đó gửi chúng qua mạng thành một lô duy nhất đến máy chủ.
Chức năng của RPC chế độ xử lý hàng loạt:
- Nó giảm thiểu chi phí phát sinh khi gửi yêu cầu, vì nó gửi các yêu cầu qua mạng đến máy chủ theo từng đợt.
- Loại giao thức RPC này chỉ hiệu quả đối với các ứng dụng cần tốc độ gọi thấp.
- Cần có một giao thức truyền tải đáng tin cậy.
RPC Archikiến trúc
Kiến trúc RPC chủ yếu có năm thành phần của chương trình:
- Khách hàng
- Sơ khai khách hàng
- Thời gian chạy RPC
- Sơ khai máy chủ
- của chúng tôi
RPC Archikiến trúc
RPC hoạt động như thế nào?
Các bước sau đây diễn ra trong quá trình RPC:
Bước 1) Ứng dụng khách, ứng dụng khách giả lập và một phiên bản của môi trường thực thi RPC được chạy trên máy của khách.
Bước 2) Máy khách khởi tạo một tiến trình giả lập máy khách bằng cách truyền các tham số theo cách thông thường. Tiến trình giả lập máy khách được lưu trữ trong không gian địa chỉ của chính máy khách. Nó cũng yêu cầu môi trường thực thi RPC cục bộ gửi yêu cầu đến tiến trình giả lập máy chủ.
Bước 3) Ở giai đoạn này, người dùng truy cập RPC bằng cách thực hiện một cuộc gọi thủ tục cục bộ thông thường. Môi trường thực thi RPC quản lý việc truyền tải thông điệp giữa máy khách và máy chủ qua mạng. Nó cũng thực hiện các công việc truyền lại, xác nhận, định tuyến và mã hóa.
Bước 4) Sau khi hoàn tất quy trình máy chủ, quá trình thực thi quay trở lại hàm xử lý trung gian của máy chủ, hàm này sẽ đóng gói (marshals) các giá trị trả về vào một thông điệp. Sau đó, hàm xử lý trung gian của máy chủ sẽ gửi thông điệp trở lại lớp vận chuyển.
Bước 5) Ở bước này, lớp vận chuyển gửi thông điệp kết quả trở lại lớp vận chuyển phía máy khách, lớp này sẽ trả lại thông điệp cho máy khách (client stub).
Bước 6) Ở giai đoạn này, chương trình con của máy khách sẽ giải mã (giải nén) các tham số trả về trong gói dữ liệu kết quả, và quá trình thực thi sẽ quay trở lại chương trình gọi.
Đặc điểm của RPC
Dưới đây là các đặc điểm cơ bản của RPC:
- Thủ tục được gọi nằm trong một tiến trình khác, có khả năng là một tiến trình khác trên một máy khác.
- Các tiến trình không chia sẻ không gian địa chỉ.
- Các tham số chỉ được truyền theo giá trị.
- RPC thực thi trong môi trường của tiến trình máy chủ.
- Nó không cung cấp quyền truy cập vào môi trường của quy trình gọi.
Đặc điểm của RPC
Dưới đây là các tính năng quan trọng của RPC:
- Cú pháp gọi hàm đơn giản.
- Cung cấp ngữ nghĩa đã biết.
- Cung cấp giao diện được xác định rõ ràng.
- Nó có thể giao tiếp giữa các tiến trình trên cùng một máy hoặc trên các máy khác nhau.
Ưu điểm của RPC
Dưới đây là những ưu điểm/lợi ích của RPC:
- RPC giúp các máy khách giao tiếp với máy chủ thông qua việc sử dụng các lệnh gọi thủ tục thông thường trong các ngôn ngữ lập trình cấp cao.
- RPC được mô phỏng theo phương thức gọi thủ tục cục bộ, nhưng thủ tục được gọi rất có thể được thực thi trong một tiến trình khác và thường là trên một máy tính khác.
- RPC hỗ trợ các mô hình hướng tiến trình và hướng luồng.
- Giao thức RPC giúp che giấu cơ chế truyền thông điệp nội bộ khỏi người dùng.
- Nó cam kết nhiều lớp giao thức để cải thiện hiệu suất.
- RPC cung cấp abstracVí dụ, bản chất truyền tải thông điệp của giao tiếp mạng vẫn được ẩn giấu khỏi người dùng.
- RPC có thể được sử dụng trong cả môi trường phân tán và cục bộ.
- Công sức cần thiết để viết lại và phát triển lại mã nguồn là rất nhỏ.
Nhược điểm của RPC
Dưới đây là những nhược điểm/nhược điểm của việc sử dụng RPC:
- Gọi thủ tục từ xa (Remote Procedure Call) chỉ truyền tham số theo giá trị; giá trị con trỏ (tham chiếu) không được phép.
- Thời gian gọi (và trả về) thủ tục từ xa — chi phí phát sinh — cao hơn đáng kể so với thủ tục cục bộ.
- Cơ chế này rất dễ bị lỗi vì nó liên quan đến một hệ thống truyền thông, một máy móc khác và một quy trình khác.
- Khái niệm RPC có thể được triển khai theo nhiều cách khác nhau, vì vậy không có một tiêu chuẩn duy nhất nào.
- Nó không cung cấp tính linh hoạt cho kiến trúc phần cứng, vì chủ yếu hoạt động dựa trên tương tác.
- Chi phí của quy trình tăng lên do việc gọi thủ tục từ xa.

