Chương 1 HỆ PHÂN TÁN 1. Hệ phân tán Ngày nay các hệ phân tán xuất hiện trong mọi hoạt động: kinh doanh, nghiên cứu, quản lý và ngay cả tại gia đình. Thông thường chúng cung cấp phương tiện để chia sẻ tài nguyên (như máy in màu hay máy quét) và chia sẻ dữ liệu (không thể thiếu được với nền kinh tế dựa trên thông tin ngày nay). Một hệ thống phân tán bao gồm một tập hợp các bộ xử lý liên kết với nhau thông qua một cấu hình mạng nào đó.
Hệ thống có thể là vật lý tức là các máy tính kết nối với nhau thông qua mạng máy tính hay logic tức là tập các tiến trình phần mềm kết nối qua cơ chế truyền thông điệp. Cấu hình mạng có thể là điểm tới điểm hay các kênh truyền thông đại chúng (broadcast). Hệ phân tán khác hệ tập trung ở một số điểm cơ bản sau. • Thiếu nhận biết về trạng thái toàn cục của hệ thống (có thể thu thập thông tin về trạng thái hệ thống nhưng không cập nhật).
12 • Thiếu một khung thời gian toàn cục (các sự kiện không có thứ tự). Cần phân biệt hai mức khác nhau khi xem xét một hệ phân tán: mức bộ xử lý và mức tiến trình. Ở mức của bộ xử lý, các bộ xử lý không có chia sẻ bộ nhớ về mặt vật lý và thiết yếu phải trao đổi thông qua truyền thông điệp. Trên mỗi bộ xử lý có nhiều tiến trình.
Các tiến trình trên nhiều bộ xử lý hình thành mức tiến trình trong hệ phân tán. Ở mức tiến trình chúng ta có nhiều lựa chọn trao đổi hơn so với mức bộ xử lý. Các tiến trình có thể trao đổi thông qua chia sẻ bộ nhớ hay truyền thông điệp hoặc phối hợp cả hai. Trong các phần sau chúng ta chỉ xem xét hệ phân tán dưới mức độ tiến trình do mức bộ xử lý có thể xem như mức tiến trình với mỗi tiến trình trên một bộ xử lý.
Hệ phân tán được biết đến sớm nhất trong thực tế là mạng máy tính. Dù ban đầu được thực hiện cho mục đích truy cập từ xa và sau này cho thư điện tử mạng máy tính đã phát triển nhanh chóng bao gồm nhiều dịch vụ truyền dữ liệu khác nhau như truyền file hay duy trì các phiên làm việc. Một mạng lưới phức tạp các giao thức đã được thiết kế cho các dịch vụ này bằng cách truyền thông điệp trên nhiều mức độ. Những tiến bộ gần đây trong thiết kế các giao thức còn cho phép tồn tại nhiều dạng truyền thông khác nhau bên cạnh dữ liệu như âm thanh và hình ảnh.
Một ví dụ nổi tiếng khác về hệ phân tán nằm trong lĩnh vực xử lý song song với một tập các bộ xử lý cùng phối hợp giải một bài toán. Tính toán song song có rất nhiều ứng dụng trong các lĩnh vực khoa học và kỹ thuật. Thiết kế ban đầu cho các hệ xử lý song song tập trung vào các hệ chia sẻ bộ nhớ (chia sẻ cả không gian nhớ và không gian địa chỉ). Tuy nhiên người ta đã nhanh chóng nhận ra hiệu năng của hệ thống bị giới hạn bởi cơ chế vật lý xác định 13 việc chia sẻ các phần tử nhớ.
Mong muốn cung cấp một hiệu năng cao hơn cho các ứng dụng đã dẫn đến sự ra đời của các hệ phân tán với liên kết điểm tới điểm thống trị cho tới ngày nay. Trong các hệ phân tán quan trọng ngày nay còn phải kể đến mạng các máy trạm. Các mạng này có nhiều điểm giống như mạng máy tính ta đã nói ở trên nhưng có phạm vi địa lý hẹp hơn và thường dùng các kết nối đại chúng như môi trường truyền thông chính (các tiến trình trên các bộ xử lý dùng kết nối điểm tới điểm). Mạng máy trạm cung cấp nhiều dịch vụ hơn mạng máy tính ví dụ như chia sẻ hệ thống file.
Từ các ví dụ về các hệ phân tán trong thực tế đã mô tả ở trên có thể thấy rõ kết nối điểm tới điểm thống trị trong hầu hết các trường hợp. Điều này đồng nghĩa với việc truyền thông giữa các điểm mạng đóng vai trò chủ đạo. Tính chất của một hệ phân tán 1. Chia sẻ tài nguyên Tài nguyên là khái niệm để chỉ tất cả những gì có thể sử dụng chung trong hệ phân tán.
Tài nguyên có thể bao gồm từ phần cứng như bộ nhớ hay máy in, tới các thực thể lôgic được định nghĩa bởi phần mềm như file, CSDL. Việc chia sẻ tài nguyên đem lại những lợi ích sau: • Các thiết bị phần cứng được chia sẻ tạo thuận lợi cho việc sử dụng và giảm bớt chi phí. • Chia sẻ dữ liệu là một yêu cầu cơ bản của nhiều ứng dụng. • Các nhà phát triển phần mềm có thể cần truy cập công việc lẫn nhau, có thể chia sẻ các công cụ mà chỉ cần một phiên bản của thư viện, trình dịch.
14 • Khi cài đặt một công cụ mới, tất cả các thành viên đều có thể sử dụng tài nguyên mới này. • Các ứng dụng thương mại thường sử dụng một CSDL cho nhiều người truy nhập phân tán. Để việc chia sẻ tài nguyên có hiệu quả, mỗi tài nguyên cần được quả lý bởi một chương trình. Chương trình này cung cấp các giao diện cho phép tài nguyên được truy cập, thay đổi an toàn và thống nhất.
Quản trị tài nguyên là một chương trình quản lý một số tài nguyên thuộc một loại nào đó. Mỗi loại tài nguyên cần được quản lý một cách khác nhau. Tuy vậy, cũng có một số yêu cầu chung. Ví dụ như hệ thống đặt tên cho mỗi lớp tài nguyên, việc ánh xạ tên lên địa chỉ vật lý, việc giải quyết các truy nhập đồng thời để đảm bảo tài nguyên có tính thống nhất.
Có hai mô hình cho hệ thống các chương trình quản lý tài nguyên: mô hình Client-Server và mô hình hướng đối tượng. • Mô hình Client-Server: Có một số các tiến trình quản lý một loại tài nguyên nhất định, và một số tiến trình khác thực hiện những công việc đòi hỏi phải truy cập các tài nguyên đó. Mô hình này có thể áp dụng vào phạm vi rộng với cả phần cứng và phần mềm. • Mô hình đối tượng: Các tài nguyên chung được nhìn như một đối tượng.
Các đối tượng được định danh và có thể dịch chuyển trên mạng. Khi một chương trình cần sử dụng tài nguyên thì chương trình đó gửi một thông báo chứa yêu cầu tới đối tượng. Thông báo này được dịch tới một thủ tục của đối tượng, thực hiện các thao tác cần thiết và một thông báo khác sẽ được gửi lại chương trình chứa kết quả. Một vấn đề của mô hình này là việc mã các 15 thủ tục của đối tượng luôn đi kèm phần dữ liệu của dối tượng, do đó đối tượng không di chuyển được.
Tính mở Tính mở là đặc tính của một hệ thống có thể được mở rộng. Một hệ thống có tính mở đối với phần cứng: ví dụ có thể thêm thiết bị ngoại vi, bộ nhớ trong - hoặc phần mềm: có thể bổ sung một vài tính năng của hệ thông, giao thức trao đổi hoặc một vài dịch vụ chia sẻ tài nguyên. Nói chung, tính mở của hệ phân tán được đánh giá bằng khả năng thêm dịch vụ chia sẻ tài nguyên mà không phải bỏ hoặc thay đổi các dịch vụ sẵn có. Tính mở được thực hiện bằng cách công bố các giao diện cho các nhà phát triển phần mềm.
Trong lịch sử, các hệ thống máy tính thường là các hệ thống đóng. UNIX là một ví dụ về hệ thống mở cho các nhà phát triển ứng dụng, cho các nhà sản xuất phần cứng và các nhà quản lý hệ thống, cho các nhà sản xuất phần mềm và người sử dụng. Tính mở trong hệ phân tán đặt nền tảng trên cơ chế chung trao đổi thông tin giữa các tiến trình, các giao diện được công bố để truy nhập tài nguyên. Hệ phân tán mở có thể được cấu thành từ phần cứng và phần mềm không đồng nhất, từ nhiều nhà cung cấp khác nhau.
Tuy nhiên các thành phần của hệ thống cần phải được kiểm tra kỹ trước khi đưa vào sử dụng. Tính tương tranh Khi nhiều chương trình được thực hiện trên một máy tính, chúng ta nói là chúng được thực hiện đồng thời. Nếu máy tính đó chỉ có một bộ vi xử lý, việc thực hiện các tiến trình được tiến hành theo từng phần của các tiến trình. Nếu số lượng bộ vi xử lý nhiều hơn số tiến trình, mỗi mội tiến trình sẽ được 16 thực hiện bằng một bộ vi xử lý và khi đó các tiến trình được thực hiện đồng thời thật sự.
Trong hệ phân tán xây dựng trên cơ sở chia sẻ tài nguyên, việc thực hiện đồng thời có thể xảy ra trong các trường hợp sau: • Nhiều người sử dụng cùng gọi nhiều lệnh, tương tác với nhiều ứng dụng. Trường hợp này xảy ra khi có một hay nhiều tiến trình phục vụ cho mỗi người sử dụng. • Nhiều tiến trình phục vụ cùng chạy trả lời các lời gọi khác nhau từ các tiến trình khác nhau. Trường hợp này xảy ra khi tồn tại tiến trình phục vụ cho việc quản lý nhiều tài nguyên sẽ được xếp hàng, có thể sẽ được thực hiện lần lượt, có thể một số sẽ được thực hiện song song bởi nhiều phiên bản của các tiến trình.
Khi có nhiều tiến trình truy cập dữ liệu của cùng một tài nguyên, tiến trình quản lý tài nguyên cần phải tiến hành đồng bộ các yêu cầu, đảm bảo chúng không bị mâu thuẫn và vẫn giữ được các lợi thế của tính tương tranh. Tóm lại, tương tranh và thực hiện song song phát sinh một các tự nhiên trong các hệ phân tán, xuất phát từ các hoạt động riêng rẽ của người sử dụng, tính độc lập của tài nguyên, tính phân tán của các tiến trình phục vụ. Điều này cho phép việc xử lý có thể được tiến hành trên các máy tính khác nhau. Truy cập và cập nhật đồng thời tài nguyên phải được đồng bộ.
Khả năng hỗ trợ tải thay đổi Hệ phân tán phải có khả năng làm việc tốt với những qui mô rất khác nhau của tải. Số lượng người truy cập có thể là thay đổi trong phạm vi rất lớn. Hệ phân tán đơn giản nhất cũng phải bao gồm hai máy nối lại với nhau, trong khi có các hệ thống lớn nối nhiều mạng cục bộ với nhau với số lượng hàng 17 nghìn máy. Trong hàng nghìn máy đó, có lúc rất nhiều máy cùng sử dụng một tài nguyên nào đó, có những lúc lại không có máy nào sử dụng tài nguyên đó cả.