Chương 1: Các vấn đề về hệ thống phân phối phần mềm phân tán. • Chương 2: Nghiên cứu các cơ chế quản lý và phân phối phần mềm phân tán hiện có như: RPM, DPKG trên HĐH nguồn mở, tổng quan nghiên cứu về công nghệ chia sẻ ngang hàng P2P. -9- • Chương 3: Đề xuất một giải pháp quản lý và phân phối phần mềm phân tán chạy trên hệ điều hành nguồn mở cho phép người sử dụng quản lý, tìm kiếm cập nhật trực tuyến các phần mềm thương mại và phần mềm mã nguồn mở một cách linh hoạt và trực quan hơn. Trong quá trình thực hiện luận văn không tránh khỏi thiếu sót.
Rất mong được tiếp nhận sự đóng góp ý kiến của các thầy, các cô, các bạn và tất cả mọi người để cho luận văn được hoàn thiện hơn. CÁC VẤN ĐỀ VỀ HỆ THỐNG PHÂN PHỐI PHẦN MỀM PHÂN TÁN 1. Các khái niệm cơ bản về phần mềm 1. Định nghĩa Phần mềm là tập hợp các câu lệnh, được viết bằng một hay nhiều ngôn ngữ lập trình theo một trật tự xác định, nhằm thực hiện một hay nhiều các công việc cụ thể.
Về cơ bản, phần mềm được chia thành các loại như sau: • Phần mềm hệ thống: là những phần mềm giúp chạy phần cứng và hệ thống máy tính. Nhiệm vụ chính của phần mềm hệ thống là tích hợp, điều khiển và quản lý các phần cứng riêng biệt của hệ thống máy tính. • Phần mềm ứng dụng: là một loại chương trình có khả năng làm cho máy tính thực hiện trực tiếp một công việc nào đó người dùng muốn thực hiện. • Phần mềm lập trình: có nhiệm vụ cung cấp các công cụ hỗ trợ cho người lập trình viết các chương trình máy tính, mà cụ thể là các phần mềm, bao gồm cả phần mềm hệ thống và phần mềm ứng dụng Phạm vi của đề tài là nghiên cứu cơ chế phương thức trong việc phân tán phần mềm ứng dụng, vì vậy sẽ tập chung vào cách làm việc của các phần mềm ứng dụng trong một hệ thống máy tính.
Hoạt động của phần mềm ứng dụng trong một hệ thống máy tính Các phần mềm ứng dụng trong một hệ thống máy tính muốn làm việc được, cần phải có sự hỗ trợ từ các phần mềm hệ thống, phần mềm hệ thống sẽ cung cấp: • Điều khiển: Điều khiển các phần mềm ứng dụng trong việc chia sẻ tài nguyên máy tính, đảm bảo các phần mềm trong hệ thống có thể hoạt động đồng thời. • Thư viện: Bao gồm các thư viện lập trình nhằm hỗ trợ các phần mềm ứng dụng trong việc giao tiếp vào ra, các thư viện tính toán, các thư viện đồ họa v.v… -11- • Cơ sở dữ liệu: cung cấp kho chứa thông tin, hỗ trợ phần mềm ứng dụng trong việc kết nối với với cơ sở dữ liệu Ngoài ra một phần mềm ứng dụng trong một hệ thống máy tính sẽ sử dụng các tài nguyên trên hệ thống máy tính đó, bao gồm các tài nguyên cục bộ và các tài nguyên trực tuyến. Hệ thống sẽ hỗ trợ các phần mềm ứng dụng trong việc kết nối với các tài nguyên này thông qua các thư viện lập trình. Các hình thức và quy trình cung cấp phần mềm Các phần mềm được sử dụng trên máy được tạo ra bởi các cá nhân hay các nhà sản xuất, đứng trên phương diện về chi phí thì có thể phân chia phần mềm ra thành hai loại là phần mềm miễn phí và phần mềm thương mại.
Đối với phần mềm thương mại, khách hàng phải trả tiền khi mua sản phẩm, hoặc trả tiền trong quá trình sử dụng. Cả phần mềm thương mại và phần mềm miễn phí đều được cung cấp dưới hai hình thức: • Cung cấp thông thường: Nhà sản xuất đóng gói sản phẩm, in sao lên các thiết bị lưu trữ như CD, DVD v.v… hoặc đi kèm với sản phẩm mua như máy xách tay, máy để bàn v.v… từ đó chuyển tới người sử dụng. • Cung cấp trực tuyến: Các sản phẩm được đưa lên mạng, và người sử dụng có thể truy cập vào các Website của hãng để tải các phiên bản phần mềm, việc cung cấp trực tuyến rất thuận lợi cho việc cập nhật các phiên bản mới của sản phẩm, hay các bản sữa lỗi, cập nhật bảo mật v.v… Việc cung cấp trực tuyến có lợi cho các doanh nghiệp, các nhà sản xuất phần mềm cung cấp các phần mềm tới tay người sử dụng thông qua Internet, không bị trở ngại bởi khoảng cách địa lý. Tuy nhiên việc cung cấp trực tuyến đôi khi gặp khó khăn về vấn đề bản quyền, tính chất pháp lý và vấn đề thanh toán trực tuyến v.
Tổng quan về hệ thống phân phối phần mềm phân tán 1. Khái niệm và yêu cầu của hệ thống phân phối phần mềm phân tán Hệ thống phân phối phần mềm phân tán được định nghĩa là một hệ thống trong đó, các máy tính được nối với nhau tạo thành một mạng, trong mạng này các máy -12- sử dụng nhiều máy chủ, cung cấp và phân tán các phần mềm trên đó cho các máy trạm trong hệ thống. Các máy trạm trong hệ thống sử dụng phần mềm phân tán để tải các phần mềm từ máy chủ. Một hệ thống phân phối phần mềm phân tán cần đảm bảo: • Hệ thống đáp ứng được các yêu cầu từ máy trạm, số lượng yêu cầu phụ thuộc vào số lượng máy trạm trong hệ thống, số lượng máy trạm có thể mở rộng được.
• Hệ thống phải đảm báo tính trong suốt để người sử dụng giao tiếp với hệ thống như một hệ thống thống nhất toàn vẹn • Hệ thống phải có tính an toàn, bảo mật cao. • Hệ thống cho phép các dịch vụ khác bổ sung vào mà không gây xung đột với các dịch vụ đã có của hệ thống phân tán. • Trên máy trạm ngoài việc cài đặt còn cho phép cập nhật các gói phần mềm một cách dễ dàng. Nguyên tắc hoạt động cơ bản của một hệ thống phân tán phần mềm Một hệ thống phân tán phần mềm, làm việc nhằm cung cấp sản phẩm từ nhà sản xuất đến người sử dụng, quá trình phân tán phần mềm bao gồm ba bước cơ bản: đóng gói phần mềm, phân tán phần mềm, bảo trì và nâng cấp phần mềm.
• Đóng gói phần mềm: Quá trình đóng gói phần mềm nhằm tạo thuận tiện cho việc phân tán từ người nhà phân phối, đồng thời cũng tạo thuận lợi cho quá, hiện nay trên các hệ thống máy UNIX phổ biến với hình thức đóng gói RPM và DEB, trên Windows các phần mềm thường được đóng gói dưới dạng file cài đặt EXE. Từ phiên bản Windows 2000, Microsoft cung cấp chuẩn đóng gói MSI mới. • Phân tán phần mềm: Chỉ xét quá trình phân tán phần mềm trực tuyến, hiện nay trên Windows phổ biến là hình thức người sử dụng tải các bản phần mềm trên mạng sau đó cài đặt trên máy. Trên các máy UNIX người sử dụng cũng có thể tải các gói phần mềm về sau đó tiến hành cài đặt bằng cách sử dụng câu lệnh hay phần mềm hỗ trợ -13- • Bảo trì và nâng cấp phần mềm: bảo trì và nâng cấp phần mềm là trong những giai đoạn quan trọng trong quá trình phân tán phần mềm.
Hầu hết các phần mềm được tạo ra đều được các nhà sản xuất nâng cấp và cập nhật các phiên bản, nhiệm vụ của một hệ thống phân tán phần mềm không chỉ dừng lại ở quá trình phân tán phần mềm mà còn phải cung cấp các giao thức cho quá trình nâng cấp và cập nhật các phiên bản phần mềm sau này. Cách thức quản lý phần mềm trên hệ điều hành nguôn mở Trên hệ điều hành nguồn mở, các phần mềm được quản lý dưới dạng các gói phần mềm, các gói phổ biến hay gặp nhất là gói Debian, gói RPM và gói Tarball. Gói Debian là định dạng phổ biến nhất sẽ gặp khi cài đặt phần mềm trong Ubuntu. Đây là định dạng gói phần mềm chuẩn sử dụng bởi Debian và các nhánh con của Debian.
Tất cả phần mềm trong kho của Ubuntu là được đóng gói với định dạng này. Tarballs là một tập hợp rất nhiều tệp được nén lại trong một tệp tài liệu đơn. Một tarball là rất giống với một tệp .zip trong Windows hoặc một tệp. Trình quản lý gói của Redhat hoặc định dạng .RPM là được thiết kế đặc biệt để dễ dàng cài đặt và quản lý gói phần mềm.
Định dạng này cho phép bạn tự động cài đặt, nâng cấp và gỡ bỏ các gói phần mềm. Nó tìm vết các phụ thuộc và sẽ không cài đặt phần mềm nếu những phụ thuộc của nó trong các gói khác chưa được cài đặt. Vai trò của người quản trị trên hệ thống phân tán phần mềm Trong một hệ thống phân tán phần mềm, người quản trị có vai trò rất quan trọng, việc cấu hình, bổ sung, cập nhật thông tin cho các gói phần mềm v. đều được thực hiện bởi người quản trị hệ thống.
Trên máy chủ, nhiệm vụ của người quản trị hệ thống bao gồm: • Cấu hình hệ thống, cập nhật hệ điều hành tối ưu hóa hệ thống • Cài đặt tường lửa, kiểm tra sửa lỗi bảo mật. • Bổ sung, cập nhật các gói phần mềm -14- • Theo dõi hệ thống, hỗ trợ 24/7 1. Trao đổi giữa các thành phần trong một hệ thống phân tán 1. Giao tiếp giữa Client và Server Phân phối phần mềm được thực hiện dựa trên mô hình Client-Server.
Trong đó Client là một tiến trình thực hiện khởi đầu của các hoạt động trong hệ thống, còn Server là một tiến trình chờ các yêu cầu được gửi tới từ các Client và thực hiện các yêu cầu đó. Trong một hệ phân tán theo mô hình Client-Server, việc chia sẻ dữ liệu giữa Server với các Client cần có sự phối hợp chặt chẽ giữa cả hai bên để đảm bảo tính nhất quán và độ tin cậy của dữ liệu được chia sẻ. Điều đó được thể hiện bởi hai điều kiện trái ngược nhau cần được thoả mãn đồng thời: hoạt động của các Client không được ảnh hưởng lẫn nhau, đồng thời các Client có thể sử dụng Server để chia sẻ và trao đổi dữ liệu. Trong mô hình Client-Server, các thao tác của Client đều phụ thuộc vào Server, do đó để đảm bảo khả năng chia sẻ dữ liệu, Server cần phải đảm bảo: • Có khả năng điều khiển tương tranh.
• Có khả năng điều phối giao dịch phân tán. • Có khả năng phục hồi và chịu lỗi. • Có khả năng bảo mật cao. Trong một số trường hợp, Client gửi yêu cầu đến Server và kết quả trả về là khá lớn, khi đó, thay vì nhận toàn bộ dữ liệu trong một lần, Client và Server có thể trao đổi dữ liệu thành nhiều lần.