Rpc server la gì
Trong lĩnh vực lập trình phân tán có một số phương pháp được thiết lập để giải quyết vấn đề truyền tin giữa các chương trình riêng biệt. Trong rất nhiều các giải pháp, từ các hoạt động socket cấp thấp (low-level) cho đến cấp cao (high-level) và các hệ thống trao đổi thông tin trong lĩnh vực cụ thể, có hai cách tiếp cận "cấp trung (middle-level)" đặc biệt thú vị ở chỗ chúng ẩn đi những chi tiết thực thi đồng thời cung cấp một giao diện chung có thể được triển khai trong một loạt các lĩnh vực ứng dụng. Hai giải pháp đó là truyền tin hướng RPC và messaging. Bài viết này sẽ cố gắng làm nổi bật sự khác biệt chủ yếu giữa hai phương pháp truyền tin này. Ưu và nhược của RPCRPC, đó là chữ viết tắt của Remote Procedure Calls (tạm dịch là các cuộc gọi thủ tục từ xa), là một khái niệm nhằm cố gắng khái quát một lời gọi thủ tục thông thường trong trường hợp mà caller và receiver không cùng nằm trong một process - và được phân tán trên các máy riêng biệt. Mục tiêu chính của phương pháp này là làm cho lời gọi từ xa RPC tương tự như thể lời gọi thủ tục thông thường cục bộ và ẩn đi việc truyền dữ liệu đi về qua mạng. Mục tiêu này rất hấp dẫn ở chỗ nó có khả năng 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 triển khai - hay nói cách khác, từ quan điểm của lập trình viên thì không quan trọng việc cuộc gọi đó là cục bộ hay từ xa miễn là nó có cú pháp giống nhau, và quyết định cuối cùng về sự phân tán của các thành phần hệ thống riêng lẻ có thể được thực hiện sau này. Việc loại bỏ khía cạnh phân tán từ code có thể mang lại rất nhiều lợi ích cho các dự án vì ở giai đoạn đầu thì các chi tiết cuối cùng của việc triển khai thường chưa được biết đầy đủ. 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. Tuy nhiên, những lợi ích tiềm năng của RPC cũng có cái giá của nó:
Vấn đề của RPC là bởi nó ẩn đi thực tế phân tán ở mức cú pháp, điều này gây khó khăn hơn cho các lập trình viên để giải quyết đúng đắn các thách thức cố hữu đi kèm với các khía cạnh vật lý của phân tán. Messaging như một giải pháp thay thếMessaging là một khái niệm truyền tin khác rất nhiều so với RPC trong đó nó không cố gắng che giấu đi những khía cạnh vật lý của truyền dữ liệu từ caller đến receiver. Nó che giấu phần nào các chi tiết thực thi, nhưng không đến mức bác bỏ các khái niệm liên quan đến các chi phí run-time trong việc trao đổi dữ liệu. Messaging là một khái niệm truyền tin có thể được giải thích một cách dễ dàng vì có những điểm tương đồng với hệ thống e-mail. Điều quan trọng nhất của những điểm tương đồng này là một thực tế rằng các message được công nhận là các thực thể first-class, và người dùng nghĩ rằng mỗi message là một cái gì đó hữu hình. Trọng tâm ở đây không phải là để ẩn đi (hiding) những thách thức trong truyền thông, thay vào đó là sẽ đóng gói (encapsulation) và đưa ra một hình thức mà người dùng có thể tương tác được. Trong hệ thống e-mail, một message là một cái gì đó không những được truyền đi, mà nó cũng có thể được sao lưu hoặc in ấn. Sau đây là một danh sách chưa đầy đủ về các ưu điểm có thể có, tùy thuộc vào việc thực thi, thể hiện các tính chất thường có của một hệ thống messaging:
Danh sách trên cho thấy những bất cập trong cơ chế RPC mở ra cơ hội lớn khi chuyển qua sử dụng cơ chế messaging. Vẫn có thể sử dụng messaging như một thực thi phân tán của các "cuộc gọi (call)" và trong thực tế thì phương pháp hướng đối tượng sử dụng thuật ngữ "message" để ám chỉ các yêu cầu có thể được gửi giữa các đối tượng (object). Tuy nhiên, lợi thế của messaging là bằng cách thể hiện thực tế của truyền thông trong một hình thức hữu hình của message như một thực thể first-class, các lập trình viên có nhiều cơ hội để mở rộng sang các miền chức năng khác hoặc là do cảm thấy không thoải mái với những ràng buộc của một "lối tư duy gọi thủ tục (procedure call mindset)" hay chỉ vì không thể thực hiện được theo cách cũ. |