Mô hình client/server

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 97 - 98)

Mô hình client/server cung cấp một cách tiếp cận tổng quát để chia sẻ tài nguyên trong các hệ thống phân tán, trong đó tiến trình cung cấp dịch vụ gọi là server và ngược lại tiến trình sử dụng dịch vụ gọi là client. Tài nguyên sẽ được quản lý bởi một tập các tiến trình gọi là các tiến trình server và mọi tiến trình client muốn thực hiện truy xuất tới tài nguyên thông qua tiến trình server đó. Bản thân các tiến trình server cũng cần phải truy xuất tới các tài nguyên dùng chung được quản lý bởi một tiến trình khác, vì vậy một số tiến trình có thể đóng cả hai vai trò client và server. Các tiến trình client gửi yêu cầu tới tiến trình server, nếu yêu cầu hợp lệ thì tiến trình server sẽ thực hiện yêu cầu và trả về kết quả cho client. Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ. Quá trình trao đổi dữ liệu bao gồm:

- Tiến trình client gửi yêu cầu tới tiến trình server

- Tiến trình server kiểm tra và xử lý yêu cầu của tiến trình client - Tiến trình server gửi kết quả xử lý yêu cầu cho client

Như vậy, mô hình client/server thực chất gồm hai bước truyền thông điệp và một bước xử lý, như vậy nảy sinh vẫn đề đồng bộ client và server. Tiến trình client phải ở trạng thái chờ cho đến khi nhận được kết quả trả về từ tiến trình server. Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi và nhận. Quá trình giao tiếp giữa client và server có thể diễn ra theo một trong hai chế độ: đồng bộ hoặc không đồng bộ.

Chế độ đồng bộ: Trong chế độ đồng bộ, khi tiến trình client hoặc server phát ra lệnh gửi dữ liệu, việc thực thi của tiến trình sẽ bị tạm ngừng cho tới khi tiến trình nhận phát ra lệnh nhận dữ liệu. Tương tự đối với tiến trình nhận dữ liệu, nếu tiến trình nào đó phát ra lệnh nhận dữ liệu, mà tại thời điểm đó chưa có dữ liệu gửi tới thì việc thực thi của tiến trình cũng sẽ bị tạm ngừng cho tới khi có dữ liệu gửi tới.

Chế độ không đồng bộ: Trong chế độ này, khi tiến trình client hay server phát ra lệnh gửi dữ liệu thực sự, việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến trình nào phát ra lệnh nhận dữ liệu đó hay không. Tương tự cho trường hợp nhận dữ liệu, khi tiến trình phát ra lệnh nhận dữ liệu, nó sẽ nhận dữ liệu hiện có, việc thực thi của tiến trình vẫn được tiến hành mà không quan tâm đến việc có tiến trình nào phát ra lệnh gửi dữ liệu tiếp theo hay không.

Hình 5.1 Tương tác giữa Client và Server

Khi phát triển các ứng dụng mạng, lập trình viên cần chú ý tiến trình ở trạng thái bị chờ, vì nó có thể dẫn đến tình huống một tiến trình nào đó sẽ rơi vào vòng lặp vô hạn.

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 97 - 98)