Trong lĩnh vực lập trình, ứng dụng có thể được xây dựng trên nhiều tiến trình. Các tiến trình này đôi khi được hoạt động trên một hoặc nhiều hệ thống khác nhau. Để giải quyết vấn đề truyền tin giữa các tiến trình riêng biệt, người ta thường sử dụng phương pháp RPC. Vậy RPC là gì? RPC có những thành phần nào? Hãy cùng Khotenmien.vn theo dõi bài viết dưới đây nhé.
1. RPC là gì?
RPC – viết tắt của Remote Procedure Call, là một mô hình kỹ thuật mạng hay còn được biết tới là cơ chế tiếp cận giữa hai tiến trình.
Thuật ngữ RPC ra đời vào năm 1981 được thực hiện bởi Andrew Birrel và Bruce Nelson. RPC được triển khai và phổ biến lần đầu trên Unix dưới dạng Sun’s RPC (ngày nay gọi là ONC RPC). Từ đó, RPC được sử dụng làm cơ sở chuẩn hóa hệ tập tin mạng. Trong hệ thống mạng máy tính vào thời điểm hiện tại có rất nhiều dịch vụ & phần mềm sử dụng cơ chế kết nối RPC.
Đây là một loại giao thức yêu cầu-phản hồi, có thể dễ dàng được giải thích sử dụng mô hình truyền thông máy khách/máy chủ. Quá trình gọi một yêu cầu được gọi là “máy khách” và quá trình trả lời lại yêu cầu này gọi là “máy chủ”. Lưu ý, máy khách hoặc máy chủ có thể là các thiết bị khác nhau trong một hệ thống mạng hoặc có thể là các tiến trình khác nhau nằm trong cùng hệ thống. Có hay loại thủ tục xuất hiện trong chương trình gồm:
- Thủ tục cục bộ là thủ tục được cài đặt và thực thi tại máy của của chương trình
- Thủ tục ở xa là thủ tục được định nghĩa, cài đặt và thực thi trên một máy tính khác.
2. Điểm mạnh & điểm yếu của RPC.
2.1 Điểm mạnh.
RPC có năng lực cho phép chuyển sự phân tán của hệ thống cuối cùng vào một quyết định ở thời điểm khai triển. Việc loại bỏ phương diện phân tán từ code có thể mang đến rất nhiều tiện ích cho các dự án, vì ở giai đoạn đầu triễn khai các chi tiết cuối thường không được biết nhất định. Lập trình viên có thể tùy biến chuyển từ lời gọi cục bộ sang lời gọi từ xa RPC mà không thay đổi quá lớn cấu trúc ban đầu của chương trình.
2.2 Điểm yếu.
Với RPC, cách chia nhiều hàm để gọi tồn tại một số hạn chế khi thời gian trễ mỗi lần gọi RPC là khó có thể bỏ quả, càng nhiều lần gọi, tổng thời gian trễ sẽ tăng, khả năng nghẽn cổ chai do kiểu hỏi đáp liên tục sẽ tăng.
Đối với lời gọi cục bộ, đối tượng gọi (caller) và đối tượng bị gọi (receiver) nằm trong cùng một process. Kiểu tham số truyền được kiểm tra nghiêm ngặt khi biên dịch. Còn với RPC, việc kiểm tra như thế sẽ dẫn đến nhiều rủi ro hơn, dữ liệu có thể bị nghe lén hoặc bị thay đổi trên đường truyền. Việc bảo mật lời gọi RPC dẫn đến cần phải mã hóa, gắn kèm chữ ký kiểm tra…điều này sẽ khiến thư viện bên dưới của caller và receiver sẽ phải làm việc nhiều hơn, độ trễ lại cao hơn.
Chưa kể đồng hồ thời gian ở máy tính chứa caller và receiver có thể sai khác nhau, hệ điều hành cũng như phần mềm, ngôn ngữ lập trình cũng khác nhau, kiểu dữ liệu có sự sai khác…
3. Kiến trúc của RPC.
RPC được thiết kế để cung cấp cho việc truyền tải thông tin giữa client và server dễ dànghơn, bảo mật hơn, thuận tiện hơn cho việc đồng bộ hóa các luồn dữ liệu. Các hàm chứa trong RPC hỗ trợ cho việc truy cập bất kỳ chương trình nào đòi hỏi phương pháp giao tiếp từ client đến server. Hình phía dưới sẽ cho thấy kiến trúc của RPC
Hình 1: Kiến trúc Remote Procedure Call
- Các thành phần của RPC
|
TẠM KẾT.
Vậy là Khotenmien.vn đã vừa giới thiệu cho các bạn về RPC rồi đấy. Mong rằng những thông tin trong bài viết dưới đây có thể cung cấp cho bạn những thông tin đầy đủ nhất về RPC thông qua một số nội dung như RPC là gì? RPC có những thành phần nào?… từ đó có thể giúp ích cho các công việc của bạn. Hi vọng bài viết sẽ phần nào giúp bạn có thêm nhiều kiến thức về lĩnh vực này!
Thu Uyên – Tổng hợp, chỉnh sửa.