Trang chủ » RPC là gì? Quy trình hoạt động của RPC
RPC là gì? Quy trình hoạt động của RPC
- 17/02/2023
- LANIT JSC
RPC là gì?
RPC (Remote Procedure Call) là một kỹ thuật cho phép một chương trình máy tính yêu cầu dịch vụ từ một chương trình trên máy tính khác trong mạng mà không cần quan tâm chi tiết mạng đó. Hoặc, RPC cho phép một chương trình thực hiện một “lệnh gọi hàm từ xa” giống như nó đang gọi một hàm cục bộ trên máy tính của chính nó.
RPC giúp ẩn đi sự phức tạp của giao tiếp mạng, giúp lập trình viên tập trung vào logic ứng dụng mà không cần xử lý các vấn đề về kết nối mạng, truyền dữ liệu,…
Ưu điểm và hạn chế của RPC
RPC là một công nghệ được sử dụng rất rộng rãi hiện nay. Giống như bất cứ sản phẩm của công nghệ, RPC luôn có những ưu điểm và hạn chế. Vậy, ưu điểm nổi bật của RPC là gì? Hạn chế nào cần khắc phục ở công nghệ này?
Ưu điểm của RPC
- RPC giúp lập trình viên tập trung vào ứng dụng bằng cách ẩn đi sự phức tạp của mạng, khiến cho việc gọi hàm từ xa trở nên đơn giản, dễ hiểu
- Cung cấp tính minh bạch về vị trí
- Cho phép chia sẻ và tái sử dụng mã nguồn, giúp giảm thời gian viết lại mã và nâng cao hiệu quả phát triển phần mềm
- RPC trong đó có gRPC được tối ưu hóa để đạt hiệu suất cao trong việc truyền dữ liệu và tối ưu tài nguyên.
- gRPC hỗ trợ nhiều ngôn ngữ lập trình khác nhau, giúp các hệ thống giao tiếp dễ dàng với nhau.
Hạn chế của RPC
- Việc kiểm tra dưới dạng hỏi – đáp có thể bị nghe lén hoặc bị thay đổi, đánh cắp thông tin. Tính bảo mật RPC thấp.
- RPC có thể gây ra xáo trộn. Sự sai lệch về ngôn ngữ lập trình, kiểu dữ liệu cũng như các phần mềm.
- RPC phụ thuộc vào mạng nên nếu mạng không ổn định hoặc lỗi khiến các yêu cầu từ xa có thể bị chậm trễ hoặc thất bại, điều này sẽ ảnh hưởng đến hiệu năng, độ tin cậy của ứng dụng
- RPC gặp khó khăn trong việc duy trì trạng thái giữa các lần gọi hàm, nên cần sử dụng các kỹ thuật khác để xử lý
- RPC có thể không hiệu quả khi hệ thống yêu cầu mở rộng, làm tăng chi phí và tài nguyên hệ thống
- Khi số lượng yêu cầu tăng lên, các cuộc gọi RPC có thể gây nên tình trạng quá tải mạng hoặc tài nguyên máy chủ, bởi nó tốn nhiều băng thông.
RPC gồm những loại nào?
RPC bao gồm nhiều loại, được phân chia dựa vào cách thức hoạt động, cách truyền dữ liệu và giao thức sử dụng. Cụ thể:
Synchronous RPC (RPC đồng bộ):
RPC đồng bộ là một RPC trong đó Client gửi yêu cầu đến Server và chờ phản hồi từ Server trước khi thực hiện các tác vụ khác.
Ưu điểm của loại RPC này là nó giúp lập trình viên không phải xử lý tình huống đa luồng hoặc phản hồi bất đồng bộ, giúp mã dễ đọc và dễ bảo trì. Nó phù hợp với các ứng dụng nhỏ, yêu cầu có yêu cầu phản hồi ngay lập tức.
Asynchronous RPC (RPC bất đồng bộ):
Asynchronous RPC (RPC bất đồng bộ) là một loại RPC trong đó Client gửi yêu cầu đến Server và không chờ phản hồi ngay lập tức. Nó sẽ tiếp tục thực hiện các tác vụ khác mà không cần chờ phản hồi từ Server ngay lập tức. Khi Server xử lý xong yêu cầu và gửi kết quả về, Client sẽ nhận phản hồi sau đó và xử lý nó thông qua cơ chế như callback, polling, hoặc sự kiện.
Do Client không bị chặn nên nó có thể tiếp tục thực hiện các tác vụ khác trong lúc Server xử lý yêu cầu, từ đó cải thiện hiệu suất hệ thống, tăng khả năng mở rộng. Cũng vì vậy nó giúp giảm độ trễ trong hệ thống vì nhiều yêu cầu được xử lý đồng thời mà không cần phải chờ đợi quá lâu. Nhờ đó, nó phù hợp với các ứng dụng không yêu cầu phản hồi ngay lập tức.
gRPC (Google RPC):
gRPC là một RPC framework được Google phát triển, dùng để gọi các thủ tục từ xa (RPC) qua mạng. Nó sử dụng HTTP/2 để truyền dữ liệu và Protobuf để mã hóa dữ liệu. Giúp gRPC truyền dữ liệu nhanh hơn và tiết kiệm băng thông hơn. gRPC hỗ trợ nhiều ngôn ngữ lập trình và có hiệu suất rất cao.
gRPC hỗ trợ load balancing, tracing, health checking và authentication, hỗ trợ từ ứng dụng mobile, trình duyệt cho tới back-end service.
XML-RPC
XML-RPC là một giao thức RPC đơn giản, trong đó dữ liệu đã được mã hóa dưới dạng XML và truyền qua giao thức HTTP. XML-RPC cho phép các ứng dụng trên các hệ thống khác nhau có thể giao tiếp và gọi các phương thức từ xa thông qua mạng.
XML-RPC là một RPC dễ hiểu và dễ triển khai vì nó yêu cầu cấu hình ít, sử dụng các chuẩn giao tiếp phổ biến như HTTP và XML.
Do sử dụng XML và HTTP, XML-RPC thân thiện với nhiều ngôn ngữ lập trình và hệ điều hành khác nhau. Giúp nó trở nên linh hoạt hơn. Nó cũng dễ dàng được mở rộng để hỗ trợ các loại dữ liệu khác nhờ sử dụng XML làm định dạng truyền tải.
Ngoài ra, còn có một số loại RPC phổ biến khác như JSON-RPC, SOAP RPC, ONC RPC, Java RMI. Mỗi loại RPC sẽ đặc trưng riêng cho mỗi giao thức, nền tảng với đặc điểm khác nhau.
Cách thức hoạt động của RPC
Trong cấu trúc của một RPC gồm nhiều phần khác nhau (Client – Server). Mỗi yếu tố thực hiện một chức năng riêng trong quá trình hoạt động của RPC. Cụ thể:
Một caller được khởi tạo từ hệ thống client sau khi mã hóa được chuyển tới máy chủ. Máy chủ sẽ nhận, giải mã và gửi lại phản hồi cho các client. Trong quá trình này, một ứng dụng máy khách – máy chủ sử dụng cơ chế RPC được xây dựng.
- Client chính là nơi diễn ra quá trình khởi tạo lời gọi thủ tục từ xa. Mỗi lời gọi kích hoạt một thủ tục cục bộ tương ứng chứa trong phần Stub của máy khách – Client.
- Client stub cung cấp bộ các hàm cục bộ giúp Client có thể gọi. Mỗi hàm trong Client Stub đại diện cho một hàm ở xa. Nó được cài đặt và thực thi trên máy chủ.
- Server Stub nhận thông điệp được gửi tới, giải mã và gọi một lệnh tương ứng trên Server. Chúng sẽ đảm nhiệm thực thi yêu cầu và phản hồi kết quả thực thi cho Server Stub. Tại đây, kết quả thực được đóng trong một gói tin và truyền lại cho Client thông qua RPC Runtime.
Ứng dụng của RPC
RPC đóng vai trò quan trọng trong việc thực thi các hoạt động của hệ thống máy khách – máy chủ. Công nghệ được ứng dụng nhiều nhất trong WordPress. Giúp hệ thống WordPress giao tiếp với các hệ thống bên ngoài.
Khi người dùng cần chỉnh sửa hay đăng tải bài viết lên ứng dụng web WordPress thông qua điện thoại. Lúc này, XMLRPC.PHP sẽ kích hoạt liên kết máy tính và di động để đồng bộ quyền truy cập. Người dùng dễ dàng chỉnh sửa, post bài viết lên WordPress bằng di động.
Kết luận
Trên đây, LANIT và các bạn vừa cùng nhau tìm hiểu về RPC là gì. Chúng ta cũng hiểu về quá trình hoạt động và những vấn đề về mô hình mạng này. Nếu các bạn cần giải đáp thêm điều gì, vui lòng chia sẻ ý kiến của bạn dưới bài viết. LANIT sẽ giải đáp và cập nhật tới các bạn!