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.

  • 📞 Định nghĩa: RPC cho phép máy khách gọi một thủ tục trên máy chủ từ xa như thể đó là một cuộc gọi cục bộ.
  • 🗂️ Các loại: RPC chế độ Callback, Broadcast và Batch khác nhau ở cách định tuyến và xếp hàng các yêu cầu.
  • 🏗️ Archikiến trúc: Năm thành phần phối hợp với nhau trong mỗi cuộc gọi: máy khách, máy khách giả lập, môi trường thực thi RPC, máy chủ giả lập và máy chủ.
  • 🔄 Cách hoạt động: Các stub đóng gói các tham số vào một thông điệp và giải mã kết quả trả về cho người gọi.
  • ⚖️ Sự đánh đổi: RPC đơn giản hóa mã phân tán nhưng lại làm tăng chi phí mạng và các điểm lỗi so với các cuộc gọi cục bộ.
  • 🤖 Góc nhìn AI: gRPC phục vụ các mô hình học máy giữa các microservice, và Copilot giúp tăng tốc độ viết các stub RPC.

Gọi thủ tục từ xa (RPC) trong hệ thống 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:

  1. Khách hàng
  2. Sơ khai khách hàng
  3. Thời gian chạy RPC
  4. Sơ khai máy chủ
  5. của chúng tôi

RPC Archikiến trúc

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.

Câu Hỏi Thường Gặp

RPC thể hiện các hành động dưới dạng các thủ tục từ xa, trong khi REST thể hiện dữ liệu dưới dạng các tài nguyên được truy cập thông qua các động từ HTTP. RPC tạo cảm giác như đang gọi một hàm cục bộ; REST tập trung vào tài nguyên và trạng thái.

gRPC là GoogleKhung RPC hiện đại, hiệu năng cao của nó. Nó sử dụng HTTP/2 và Giao thức Buffervà hỗ trợ truyền phát hai chiều, khiến nó trở nên phổ biến cho việc giao tiếp giữa các microservice.

Giao thức RPC có thể thuộc cả hai loại. Một cuộc gọi đồng bộ sẽ chặn cho đến khi máy chủ trả về kết quả, trong khi một cuộc gọi bất đồng bộ sẽ trả về ngay lập tức và xử lý phản hồi sau đó. Các framework như gRPC hỗ trợ cả hai kiểu.

RPC là một hình thức IPC hoạt động giữa các máy tính riêng biệt. Trong khi nhiều phương pháp IPC chia sẻ bộ nhớ trên một máy chủ, RPC trao đổi thông điệp qua mạng để các tiến trình trên các máy tính khác nhau có thể hợp tác với nhau.

Các triển khai RPC phổ biến bao gồm gRPC, Apache Thrift, XML-RPC, JSON-RPC, và Java RMI. Chúng khác nhau về định dạng dữ liệu và phương thức truyền tải nhưng tất cả đều cho phép máy khách gọi một thủ tục trên máy chủ từ xa.

Giao thức RPC không an toàn theo mặc định; tính bảo mật phụ thuộc vào phương thức truyền tải. Các triển khai bổ sung mã hóa TLS, mã thông báo xác thực và kiểm soát truy cập để bảo vệ các cuộc gọi.

Các nền tảng học máy sử dụng RPC, đặc biệt là gRPC, để phục vụ các dự đoán mô hình giữa các microservice. Một máy khách gửi các đặc trưng và nhận được kết quả suy luận, giữ cho...ping Các hệ thống AI hoạt động nhanh và có sự liên kết lỏng lẻo.

Có. GitHub Copilot có thể tạo cấu trúc định nghĩa dịch vụ .proto, các đoạn mã giả lập phía máy khách và trình xử lý máy chủ cho gRPC. Tuy nhiên, các nhà phát triển vẫn nên xem xét lại giao diện được tạo ra, việc xử lý lỗi và phiên bản trước khi triển khai lên môi trường sản xuất.

Tóm tắt bài viết này với: