Kết quả thiết kế chủ yếu
Hệ phân tán bao gồm các QT đồng thời truy nhập tài nguyên phân tán (có thể được chia xẻ hoặc nhân bản) thông qua CTĐ trong môi trường mạng có thể không tin cậy và chứa các thành phần không cấu trúc. Một số vấn đê được đặt ra khi nghiên cứu thiết kế hệ phân ...
Hệ phân tán bao gồm các QT đồng thời truy nhập tài nguyên phân tán (có thể được chia xẻ hoặc nhân bản) thông qua CTĐ trong môi trường mạng có thể không tin cậy và chứa các thành phần không cấu trúc. Một số vấn đê được đặt ra khi nghiên cứu thiết kế hệ phân tán. Thứ nhất, bằng cách nào các đối tượng trong hệ thống được mô hình hóa và định danh. Thứ hai, bằng cách nào kết hợp tương tác giữa các đối tượng và bằng cách nào chúng truyền thông cho nhau. Thứ ba là nếu đối tượng được chia xẻ hoặc nhân bản, bằng cách nào chúng được quản lý trong cấu thành được điều khiển. Thứ tư, sự an toàn của đối tượng và an ninh trong hệ thống bắt buộc phải xác định. Các vấn đề này được tóm lược trong phần tiếp theo và được phân tích kỹ trong các chương sau.
Đối tượng trong hệ thống máy tính là QT, file dữ liệu, bộ nhớ, thiết bị và mạng. Theo truyền thống, các kiểu đối tượng khác nhau được thi hành khác nhau. Theo đúng tinh thần của tính trong suốt, giả thiết rằng mọi đối tượng được trình bày theo cùng một cách thức. Do các đối tượng mang nghĩa đầy đủ chỉ khi chúng được truy nhập vì vậy mỗi đối tượng cần được phù hợp với các thao tác hoàn toàn xác định để truy nhập đối tượng. Bởi vậy, mỗi đối tượng được trừu tượng hóa bằng tập các thao tác truy nhập được đối với nó. Chi tiết vật lý của đối tượng là trong suốt đối với các đối tượng khác. QT thực hiện công việc quản lý đối tượng trở thành phục vụ đối tượng. Nói khác đi, đối tượng được cô lập qua các phục vụ và chỉ còn các phục vụ là các thực thể nhìn thấy được trong hệ thống. Như vậy, trong hệ thống có phục vụ QT, phục vụ File, phục vụ bộ nhớ... Khách là một phục vụ rỗng, nó truy nhập các phục vụ đối tượng.
Để giao thiệp được với một phục vụ thì phục vụ đó phải được định danh. Tồn tại chỉ ba cách định danh phục vụ:
- Định danh bằng tên,
- Định danh bằng hoặc địa chỉ vật lý hoặc địa chỉ lôgic
- Định danh bằng dịch vụ mà phục vụ đó cung cấp,
Tên được dùng cho mục đích định danh, được giả thiết tổng quát là duy nhất trong khi đó cho phép tồn tại tính đa địa chỉ tương ứng với cùng một phục vụ, địa chỉ có thể thay đổi khi phục vụ chuyển động. Tên là trực giác và trong suốt hơn so với điạ chỉ nhưng điạ chỉ chứa thông tin cấu trúc để định vị phục vụ. Giải pháp ánh xạ tên tới địa chỉ lôgic được thực thi bởi phục vụ tên trong HĐH. Giải pháp điạ chỉ ánh xạ địa chỉ lôgic thành địa chỉ vật lý là chức năng của dịch vụ mạng. Trong nhiều hệ thống, cổng (port) được coi là một địa chỉ lôgic. Tương ứng nhiều cổng tới một dịch vụ theo các đa điểm vào tới phục vụ. Mặt khác, đa phục vụ có thể chia xẻ cùng một cổng. Tiếp cận này được đặt ra theo định danh tên trong hệ phân tán. Phương pháp thứ ba - định danh theo dịch vụ là độc đáo hơn. Khách chỉ quan tâm đến dịch vụ được yêu cầu còn ai cung cấp dịch vụ này thì không liên quan. Điều hợp lý là đa phục vụ có thể cung cấp cùng một dịch vụ. Tiếp cận này cũng được dùng cho thi hành HĐH tự trị cộng tác. Một cách tự nhiên, cần thiết một giao thức giải pháp để chuyển từ dịch vụ tới phục vụ.
Mô hình đối tượng và định danh theo tên là những vấn đề cơ sở buộc được quyết định ngay khi thiết kế HĐH. Cấu trúc hệ thống, quản lý không gian tên, giải pháp tên và phương pháp truy nhập, tất cả phụ thuộc vào sơ đồ tên của các đối tượng trong hệ thống.
Các QT đồng thời tương tác nhau đòi hỏi cộng tác để đồng bộ hoạt động. Nói chung có 3 kiểu thủ tục đồng bộ:
- Đồng bộ bằng ngăn cấm: Tập QT (hoặc sự kiện) bắt buộc đi tới một điểm đồng bộ chung trước khi chúng có thể tiếp tục,
- Cộng tác theo điều kiện: Một QT (hay sự kiện) bắt buộc phải chờ một điều kiện được khởi tạo một cách dị bộ từ các QT tương tác nhằm duy trì thứ tự thực hiện nào đó.
- Loại trừ ràng buộc: Các QT đồng thời bắt buộc loại trừ ràng buộc khi truy nhập tài nguyên được chia xẻ tới hạn.
Ngầm hiểu rằng đồng bộ cần tới tri thức liên quan đến thông tin trạng thái về các QT khác. Thông tin trạng thái đầy đủ là điều rất khó khăn vì trong hệ phân tán không có bộ nhớ chia xẻ. Thông tin trạng thái có thể được chuyển tới bằng việc gửi TĐ. Tuy nhiên, thời điểm TĐ được nhận là không đúng và không đầy đủ do chuyển TĐ bị trễ trên mạng. Quyết định một QT được tiếp tục hay không buộc phải dựa vào các giao thức giải pháp phân tán dựa trên TĐ. Một giải pháp thường đi liền tới vấn đề cộng tác phân tán là giao cho một bộ cộng tác tập trung chọn lựa trách nhiệm cộng tác. Vai trò của bộ cộng tác tập trung có thể được chuyển từ QT này sang QT khác nhằm làm cho bộ cộng tác không trở thành điểm trung tâm của lỗi. Bằng cách áp dụng cách thức này, buộc tồn tại các điều khoản cho phép một QT được chọn trở thành bộ cộng tác mới nếu như bộ cộng tác chính thức có lỗi hoặc có quyết định làm nó từ bỏ trách nhiệm của mình.
Một vấn đề khác liên quan mật thiết với tính đồng bộ là sự bế tắc của các QT. Tương tự như vấn đề bế tắc trong hệ điều hành tập trung, các QT đồng thời có thể chạy đúng đắn, không xâm phạm ràng buộc của bất cứ đồng bộ nào song lại có thể dẫn đến hiện tượng bế tắc do gặp phải chu trình chờ lẫn nhau. QT và tài nguyên trong hệ phân tán là rất hỗn tạp. Để phòng tránh và ngăn ngừa bế tắc, đôi khi là không thực tế khi tiến hành việc ngăn cản bế tắc hoặc dùng chiến lược phòng tránh để kiểm soát bế tắc. Chúng ta xem xét khả năng phát hiện bế tắc và thử khôi phục lại nếu có thể. Trong hệ phân tán, vấn đề phát hiện bế tắc lại là vấn đề không tầm thường vì không có được thông tin trạng thái toàn cục của hệ phân tán. Tồn tại một số câu hỏi như ai là người đề xướng thuật toán phát hiện bế tắc, làm thế nào thuật toán được thi hành theo hình thức CTĐ của hệ phân tán, QT nào sẽ là nạn nhân để thoát ra/ giải quyết bế tắc và bằng cách nào nạn nhân được khôi phục. Hiệu lực của giải pháp bế tắc và chiến lược khôi phục được coi là quan trọng hơn so với phát hiện bế tắc trong hệ phân tán.
Giải pháp phân tán cho vấn đề đồng bộ và bế tắc là cố gắng đối sánh từng phần thông tin trạng thái tổng thể và sử dụng nó để ra quyết định. Nhiều ứng dụng không đòi hỏi thông tin trạng thái tổng thể tuyệt đối mà tiến hành giống như các QT phức tạp thỏa thuận theo am hiểu của chúng về hệ thống. Giao thức chấp nhận là thuật toán CTĐ cho phép hành động nhất trí trong hệ phân tán cho phép có thể có lỗi thành phần chấp nhận được. Việc đưa ra sự nhất trí đòi hỏi chuyển đổi các tri thức cục bộ xuyên theo các phía cộng tác. Đây là bài toán không quá khó ngoại trừ việc bộ xử lý nào đó ngả về lỗi hoặc không đáng tin cậy. Tuy nhiên, trực giác có nhận thể thấy rằng hoạt động chấp nhận là không thể làm được trong hệ phân tán dị bộ.
Đồng bộ phân tán và nắm giữ bế tắc là hai công cụ cộng tác QT chính yếu để xây dựng dịch vụ phân tán.
Truyền thông liên QT là vấn đề bản chất nhất trong mọi thiết kế hệ phân tán do mọi thứ đều dựa vào nó. Trong HĐH, sự tương tác giữa các QT và dòng thông tin giữa các đối tượng phụ thuộc vào truyền thông. ở mức thấp nhất, CTĐ mang nghĩa của truyền thông trong hệ phân tán. Truyền thông liên QT có thể được thực hiện bởi dịch vụ nguyên thủy CTĐ đơn giản. Tuy nhiên, do yêu cầu về tính trong suốt trong truyền thông nên đòi hỏi cung cấp những phương pháp truyền thông lôgic mức cao nhằm che dấu đi chi tiết vật lý của CTĐ.
Hai khái niệm quan trọng được dùng để thực hiện mục tiêu này là mô hình Client/Server và RPC. Mô hình Client/Server là mô hình lập trình nhằm cấu trúc các QT trong hệ phân tán. Trong mô hình này, mọi liên tương tác hệ thống được xem như một cặp trao đổi thông điệp trong đó QT khách gửi TĐ hỏi tới phục vụ và chờ phục vụ đáp lại một TĐ trả lời. CTĐ hỏi/đáp như vậy tương tự như khái niệm lời gọi thủ tục trong ngôn ngữ lập trình trong đó thủ tục gọi truyền tham số cho thủ tục được gọi, và thủ tục được gọi trả lại kết quả cho thủ tục gọi để hoàn thành thực hiện thao tác. Trao đổi thông tin hỏi/đáp giữa khách và phục vụ có thể được trình bày như lời gọi thủ tục tới một phục vụ từ xa. Truyền thông RPC được xây dựng dựa trên mô hình Client/Server và CTĐ đã được đề xuất như cơ chế truyền thông liên QT đối với mọi hệ phân tán trong tương lai.
Bàn luận trên đây về CTĐ, mô hình Client/Server và RPC với giả thiết truyền thông điểm-điểm. Khái niệm nhóm là bản chất trong phần mềm phân tán. Cộng tác QT trong hoạt động của nhóm. Quản lý nhóm hay truyền thông nhóm (tán phát bội - multicast hoặc quảng bá - broadcast) là cần thiết. Nhu cầu truyền thông đi qua một số tầng giao thức và truyền tới một số nút phân tán vật lý. Điều đó sẽ nhạy cảm hơn tới lỗi trong hệ thống. Truyền thông nhóm tin cậy và nguyên tử vẫn là vấn đề mở trong hệ phân tán. Hơn nữa, quản trị nhóm, nền tảng của phương thức làm việc cộng tác có hỗ trợ của máy tính (CSCW), vẫn chưa đạt được độ thuần thục do thiếu kinh nghiệm trong các ứng dụng phần mềm phân tán. Vấn đề truyền thông liên QT được khảo sát tỷ mỷ trong chương 4.
Về mặt logic, tài nguyên cần cho tính toán chỉ là dữ liệu và năng lực xử lý. Về mặt vật lý, dữ liệu nằm trong bộ nhớ hoặc bộ nhớ phụ phân tán (dạng các file). Năng lực xử lý được tính gộp từ năng lực xử lý của tất cả bộ xử lý. Mục tiêu nền tảng của xử lý phân tán là đạt được tính trong suốt khi định vị năng lực xử lý tới QT, hoặc ngược lại, phân tán các QT (hoặc tải) tới các bộ xử lý. Phân tán tải tĩnh trong hệ phân tán được chỉ dẫn như lập lịch đa xử lý. Mục tiệu là tối thiểu thời gian hoàn thành tập các QT. Vấn đề chính là tác động của tổng phí truyền thông khi thiết kế chiến lược lập lịch. Nếu phân bố tải (hay phân bố lại tải) là được làm theo cách động, nó được gọi là chia xẻ tải. Mục tiêu là cực đại sự tận dụng tập các bộ xử lý. Vấn đề nguyên thuỷ là di trú QT cùng chiến lược và cơ chế cho nó. Ngoài những yêu cầu về hiệu năng tốt hơn và tận dụng cao hơn, nhiều ứng dụng phân tán được ràng buộc về thời gian. Trong những trường hợp đó, lập lịch QT phải đáp ứng một số yêu cầu về thời gian thực. Lập lịch phân bố tải tĩnh và động và lập lịch thời gian thực được trình bày trong chương 5.
Tính trong suốt áp dụng trong dữ liệu phân tán là vấn đề phức tạp hơn. Nếu file là thực thể dữ liệu cơ bản thì một hệ thống file trong suốt có nghĩa là nó đưa ra một cách nhìn hệ thống file đơn đối với các file rải rác trong một môi trường phân tán. Hệ thống file phân tán là hệ thống file trong suốt. Có thể mở rộng khái niệm dữ liệu trong suốt thêm một chút nữa với giả thiết rằng khối dữ liệu là nhỏ hơn file và dữ liệu nằm trong các môđun bộ nhớ phân tán. Một hệ thống bộ nhớ trong suốt cho phép trình diễn một cái nhìn bộ nhớ chia xẻ đơn đối với các bộ nhớ phân tán vật lý. Điều cốt lõi là mô phỏng một hệ thống bộ nhớ chia xẻ, được gọi là bộ nhớ chia xẻ phân tán (distributed shared memory) nếu tổng phí truyền thông là tha thứ được.
Vấn đề chung cho cả hệ thống file phân tán và bộ nhớ chia xẻ phân tán là chia xẻ và nhân bản dữ liệu. Cả hai vấn đề chung này yêu cầu các giao thức duy trì tính nhất quán và toàn vẹn dữ liệu và như vậy, kết quả của chia xẻ và sự tồn tại nhân bản là trong suốt đối với người dùng. Mặc dù, hai vấn đề này tương đương lôgic song vẫn tồn tại những sự khác biệt tinh tế trong khi thi hành giữa hệ thống file phân tán và bộ nhớ chia xẻ phân tán. Vấn đề hệ thống file phân tán dựa trên quan điểm của file, trong khi đó trong hệ thống bộ nhớ chia xẻ phân tán lại nhấn mạnh hơn vào mức độ am hiểu của hệ thống đối với QT.
Do tính mở trong môi trường điều hành, hệ phân tán dễ bị tấn công bởi hỏng hóc và de doạ an toàn. Cả hai (lỗi hỏng hóc và đe dọa an toàn) được coi là lỗi hệ thống. Hỏng hóc là lỗi do chỉ thị không định trước (vô ý) và vi phạm an toàn là lỗi do chỉ thị chủ định (cố ý). Hệ phân tán tin cậy là hệ thống có tính thứ lỗi theo nghĩa trong hệ thống đó có những cơ chế và giải pháp đối với hai loại lỗi trên đây.
Vấn đề hỏng hóc có thể được giảm nhẹ nếu trong hệ thống phân tán tồn tại sự dư dật. Dư dật là tính chất vốn có gắn liền với hệ phân tán do dữ liệu và tài nguyên có thể được nhân bản. Thêm vào đó, thông thường việc khôi phục do lỗi hỏng hóc yêu cầu việc chạy lại QT bị lỗi và các QT khác nếu có dính dáng đến hỏng hóc. Thông tin trạng thái thực hiện bắt buộc phải bảo quản để khôi phục chạy lại mà đây lại là một vấn đề khó khăn trong hệ phân tán. Thông thường, sử dụng giải pháp điểm kiểm tra cho phép hỗ trợ chạy lại QT và khôi phục.
Mối quan tâm về an toàn ngày càng tăng nhanh trong mạng và hệ phân tán. Theo quan điểm của HĐH, cần quan tâm tới tính tin cậy của QT truyền thông và tính tin cẩn và toàn vẹn dữ liệu. Vấn đề xác thực và giấy phép đảm nhận chất lượng về tính duy nhất trong hệ phân tán. Về vấn đề xác thực, khách và cũng vậy phục vụ và thông điệp bắt buộc phải được xác thực. Với vấn đề giấy phép, điều khiển truy nhập phải đủ năng lực xuyên qua mạng vật lý với các thành phần hỗn tạp theo các đơn vị quản trị khác nhau sử dụng các mô hình khác nhau.