c4- thủ tục gọi từ xa RPC

Màu nền
Font chữ
Font size
Chiều cao dòng

Gọi thủ tục từ xa RPC – Remote Procedure Call

Giới thiệu:

-Là một dạng nguyên thủy của Middleware được phát triển trong môi trường Unix từ những năm 1980. 

-RPC cho phép chương trình từ một máy tính yêu cầu dịch vụ tới các máy tính khác bằng một lời gọi hàm hay thủ tục từ xa. 

-RPC là một dạng Middleware thực hiện trao đổi thông tin theo nguyên tắc đồng bộ, đòi hỏi chất lượng mạng cao, thông thường là mạng LAN 

-Ý tưởng của RPC là tạo một lời gọi thủ tục từ xa trong suốt, các thủ tục gọi không cần biết các thủ được gọi đang thực hiện trên các máy khác hay giống nhau. Khi 1 tiến trình trên máy A gọi 1 thủ tục trên máy B, thì tiến trình gọi trên máy A đó sẽ bị tạm dừng, thay vào đó sẽ thực thi thủ tục được gọi trên máy B.

-RPC đạt được tính trong suốt của nó một cách tương đối khi việc đọc thực sự là một thủ tục từ xa (ví dụ, một thủ tục sẽ chạy trên máy tính của máy chủ tập tin), một phiên bản khác của (read) việc đọc, được gọi là stub client, được đưa vào thư viện.

-Client stub tạo một lời gọi đến hệ điều hành cục bộ, nó đóng gói các thông số vào một thông điệp gửi đến máy chủ và chờ đến khi kết quả được trả về. 

Một cuộc gọi thủ tục từ xa xảy trong các bước sau: 

1.Thủ tục client gọi là stub client theo cách thông thường.

2. stub client xây dựng một thông báo và lời gọi hệ điều hành .

3. Hệ điều hành của client gửi tin nhắn đến hệ điều hành từ xa.

4. Các hệ điều hành từ xa cho các tin nhắn đến Server stub.

5. stub Server giải nén các tham số và các lời gọi máy chủ.

6. Các máy chủ làm việc và trả về kết quả cho stub.

7. Server stub gói nó trong một tin nhắn và lời gọi hệ điều hành cục bộ của nó.

8. Hệ điều hành của Server gửi tin nhắn tới hệ điều hành của client.

9. Hệ điều hành của client mang thông điệp đến stub client .

10. stub giải nén kết quả và trả cho khách hàng.

Phần Client là một quá trình người dùng, nơi khởi tạo một lời gọi thủ tục từ xa. Mỗi lời gọi thủ tục ở xa trên phần Client sẽ kích hoạt một thủ tục cục bộ tương ứng nằm trong phần Stub của Client. Phần ClientStub cung cấp một bộ các hàm cục bộ mà phần Client có thể gọi. Mỗi một hàm của ClientStub đại diện cho một hàm ở xa được cài đặt và thực thi trên Server. Mỗi khi một hàm nào đó của ClientStub được gọi bởi Client, ClientStub sẽ đóng gói  một thông điệp để mô tả về thủ tục ở xa tương ứng mà Client muốn thực thi cùng với các tham số nếu có. Sau đó nó sẽ nhờ hệ thống RPCRuntime cục bộ gởi thông điệp này đến phần Server Stub của Server. Trong đó, client stub và server stub ở máy client và server là thành phần nhằm giảm nhẹ công việc cho client và server, làm cho hệ thống hoạt động một cách trong suốt hơn. 

Đóng gói các tham số: việc đóng gói các tham số để chuẩn bị truyền đi do client stub thực hiện. Client stub sẽ sắp xếp các tham số và đưa vào hàng đợi và quá trình này được gọi là parameter marshaling. Các tham số được truyền đi giúp cho server hiểu được công việc mình cần thực hiện tương ứng là gì để xác định lời gọi đến thủ tục thích hợp. 

Truyền tham số: Việc truyền tham số từ client tới . Có hai cách truyền: truyền tham biến và truyền tham trị. 

- Truyền tham trị: các tham số được truyền đi là các giá trị cụ thể. Các thủ tục được gọi đến sẽ coi các tham biến được truyền kiểu tham trị như là các biến được khởi tạo cục bộ, có thể thay đổi giá trịnhưng lại không ảnh hưởng tới giá trị gốc trong lần gọi sau. Vấn đề đặt ra khi truyền tham trị là yêu cầu giữa các máy phải có sự đồng nhất về việc biểu diến dữ liệu và các kiểu dữ liệu. 

- Truyền tham biến: các tham số được truyền đi là con trỏ hay biến chứa địa chỉ của nơi chưa giá trị thực của chúng. Các thủ tục được gọi sẽ căn cứ vào địa chỉ này để tham chiếu đến giá trị khi tính toán. Khi giá trị này bị thay đổi trong khi thực hiện thủ tục thì sẽ được thông báo cho client và các lần gọi sau sẽ dùng giá trị mới đó. 

Các mô hình RPC mở rộng. 

 RPC dị bộ (Asynchronous RPC): Tư tưởng thực hiện là: client gửi tới server lời gọi thủ tục và chờ bản tin chấp nhận từ server. Phía server sẽ gửi bản tin chấp nhận về cho client thông báo đã nhận được yêu cầu và bắt đầu thực hiện yêu cầu RPC đó. Lúc này client sẽ tếp tục thực hiện công việc của mình mà không chờ kết quả từ server như ở RPC truyền thống. RPC đồng bộ trễ (Deferred synchronuos RPC): Thực hiện hai lời gọi, một từ client và một từ server. Client gửi tới server lời gọi thủ tục và chờ bản tin chấp nhận từ server. Phía server sẽ gửi bản tin chấp nhận về cho client thông báo đã nhận được yêu cầu và bắt đầu thực hiện yêu cầu RPC đó. Lúc này client sẽ tếp tục thực hiện công việc của mình. Khi thực hiện thủ tục xong, server sẽ thực hiện lời gọi tới client báo nhận lấy kết quả. Client thực hiện ngắt, nhận kết quả và gửi lại cho server bản tin thông báo đã nhận kết quả thành công. 

RPC đơn tuyến (one- way RPC):Sau khi thực hiện lời gọi thủ tục từ xa tới server, client không chờ đợi thông báo nhận yêu cầu thành công từ server mà tiếp tục thực hiện ngay các công việc khác của mình. Đó là RPC đơn tuyến.

Bạn đang đọc truyện trên: Truyen2U.Pro

#windy