Báo cáo tiểu luận môn Hệ Phân Tán, công nghệ thông tin đại học bách khoa hà nội, thầy Nguyễn Tuấn Dụng, tìm hiểu về Middleware, RPC. NOS DOS Phần mềm trong Hệ phân tán. Trong hệ phân tán thì phần cứng là vô cùng quan trọng, nhưng chính phần mềm mới là thứ đóng vai trò quyết định một hệ thống sẽ như thế nào. Các hệ thống phân tán bản chất rất giống với hệ điều hàng truyền thống. Trước tiên, chúng đều hoạt động giống như một thành phần quản lý tài nguyên cho các phần cứng ở tầng dưới, cho phép nhiều người sử dụng và nhiều ứng dụng có thể chia sẻ tài nguyên : CPU, bộ nhớ, mạng, các thiết bị ngoại vi và dữ liệu thuộc tất cả các loại khác. Thứ hai, quan trọng hơn đó là hệ thống phân tán tạo ra nhằm tre dấu đi sự phức tạp và tính không đồng nhất của các thành phần phần cứng bằng việc cung cấp các máy ảo khiến bất kì ứng dụng nào cũng có thể được khởi chạy trên đó. Hệ điều hành cho một hệ thống máy tính phân tán có thể được chia thành hai loại : hệ thống liên kết chặt và hệ thống liên kết lỏng. Trong hệ thống liên kết chặt thì hệ điều hành cố gắng cung cấp và duy trì một góc nhìn đơn, toàn thể cho các tài nguyên mà nó quản lý. Trong khi đó, hệ thống loại liên kết lỏng có thể được nghĩ như một tập các máy tính, mỗi máy tính chạy một hệ điều hành của riêng nó. Tuy nhiên những hệ điều hành này làm việc với nhau, liên kết liên hệ với nhau tạo ra những dịch vụ chung và những tài nguyên có sẵn cho các máy tính khác sử dụng. Một hệ điều hành liên kết chặt thông thường được biết đến và gọi tên là DOS (hệ điều hành phân tán), được sử dụng để quản lý đa vi xử lý và các đa máy tính thuần nhất. Giống như một hệ điều hành đơn vi xử lý truyền thống, mục tiêu cơ bản của một hệ điều hành phân tán là tre dấu đi tính phức tạp của việc phải quản lý các phần cứng nền tảng ví dụ như chúng có thể chia sẻ bởi nhiều tiến trình. Một loại liên kết lỏng khác tên là NOS ( network operating system ) hệ điều hành mạng được sử dụng cho các hệ thóng đa máy tính phi thuần nhất. Mặc dù việc quản lý nền tảng phần cứng là một vấn đề quan trọng trong NOS, sự khác biệt đến từ việc đối với hệ điều hành truyền thống thì các dịch vụ địa phương được thiết kế để sẵn sàng điều khiển các clients từ xa.
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐÀO TẠO QUỐC TẾ
───────***───────
BÁO CÁO
MÔN: PHẦN MỀM PHÂN TÁN
Đề tài : “Tìm hiểu về Middleware”
Sinh viên thực hiện : Chu Ngọc Minh (NT)
Trần Đăng Phong Hoàng Tuấn Anh
Giáo viên hướng dẫn : TS Cao Tuấn Dũng
Hà Nội, tháng 10 năm 2016
Trang 2Mục lục
1 Phần mềm trong Hệ phần tán 3
1.1 Hệ điều hành phân tán 3
1.2 Hệ điều hành mạng 4
2 Middleware 5
2.1 Tại sao lại có sự xuất hiện của Middleware 5
2.2 Vị trí của Middleware trong hệ phân tán 5
2.3 Middleware và Tính mở 6
2.4 Phân loại Middleware 7
2.4.1 Lời gọi thủ tục và Thông điệp bất đồng bộ 7
2.4.2 Ngôn ngữ riêng biệt và Độc lập về ngôn ngữ 8
2.4.3 Độc quyền và Tiêu chuẩn 8
2.4.4 Thiết bị nhúng và Hệ thống doanh nghiệp 8
2.5 Mô hình của Middleware 9
2.6 Dịch vụ của Middleware 10
2.7 Thử thách cho Middleware 11
3 Bài tập 12
Trang 31 Phần mềm trong Hệ phân tán.
Trong hệ phân tán thì phần cứng là vô cùng quan trọng, nhưng chính phần mềm mới
là thứ đóng vai trò quyết định một hệ thống sẽ như thế nào Các hệ thống phân tán bản chất rất giống với hệ điều hàng truyền thống Trước tiên, chúng đều hoạt động giống như một thành phần quản lý tài nguyên cho các phần cứng ở tầng dưới, cho phép nhiều người sử dụng và nhiều ứng dụng có thể chia sẻ tài nguyên : CPU, bộ nhớ, mạng, các thiết bị ngoại vi và dữ liệu thuộc tất cả các loại khác Thứ hai, quan trọng hơn đó là hệ thống phân tán tạo ra nhằm tre dấu đi sự phức tạp và tính không đồng nhất của các thành phần phần cứng bằng việc cung cấp các máy ảo khiến bất kì ứng dụng nào cũng có thể được khởi chạy trên đó
Hệ điều hành cho một hệ thống máy tính phân tán có thể được chia thành hai loại :
hệ thống liên kết chặt và hệ thống liên kết lỏng Trong hệ thống liên kết chặt thì hệ điều hành cố gắng cung cấp và duy trì một góc nhìn đơn, toàn thể cho các tài nguyên
mà nó quản lý Trong khi đó, hệ thống loại liên kết lỏng có thể được nghĩ như một tập các máy tính, mỗi máy tính chạy một hệ điều hành của riêng nó Tuy nhiên những hệ điều hành này làm việc với nhau, liên kết liên hệ với nhau tạo ra những dịch vụ chung và những tài nguyên có sẵn cho các máy tính khác sử dụng
Một hệ điều hành liên kết chặt thông thường được biết đến và gọi tên là DOS (hệ điều hành phân tán), được sử dụng để quản lý đa vi xử lý và các đa máy tính thuần nhất Giống như một hệ điều hành đơn vi xử lý truyền thống, mục tiêu cơ bản của một hệ điều hành phân tán là tre dấu đi tính phức tạp của việc phải quản lý các phần cứng nền tảng ví dụ như chúng có thể chia sẻ bởi nhiều tiến trình
Một loại liên kết lỏng khác tên là NOS ( network operating system ) hệ điều hành mạng được sử dụng cho các hệ thóng đa máy tính phi thuần nhất Mặc dù việc quản
lý nền tảng phần cứng là một vấn đề quan trọng trong NOS, sự khác biệt đến từ việc đối với hệ điều hành truyền thống thì các dịch vụ địa phương được thiết kế để sẵn sàng điều khiển các clients từ xa
1.1 Hệ điều hành phân tán (Distributed Operating System)
Có hai loại của hệ điều hành phân tán : hệ điều hành đa vi xử lý quản lý các tài nguyên của đa vi xử lý, hệ điều hành đa máy tính được phát triển cho các đa mát tính thuần nhất Chức năng của hệ điều hành phân tán là cần thiết giống như là hệ điều hành đơn vi xử lý truyền thống, ngoại trừ việc chúng có thể quản lý nhiều nhân CPU
Trang 41.2 Hệ điều hành mạng (Network Operating System)
Ngược lại với các hệ điều hành phân tán, hệ điều hành mạng không đặt ra giả định rằng nền tảng phần cứng là thuần nhất và nó phải được quản lý giống như một hệ thống đơn duy nhất Thay vào đó, chúng được xây dựng từ các tập (collection) của các hệ thống đơn vi xử lý, mỗi một máy tính có 1 hệ điều hành riêng Các máy tính khác nhau về phần cứng và hệ điều hành, nhưng chúng được kết nối với nhau thông qua hệ thống mạng Hệ điều hành mạng cung cấp các cơ sở cho phép người dùng có thể sử dụng các dịch vụ có sẵn trên từng thiết bị cụ thể
Ví dụ: dịch vụ mà thường được cung cấp bởi hệ điều hành mạng đó là cho phép người dùng có thể đăng nhập vào một máy tính khác từ xa thông qua một dòng lệnh command : rlogin machine, giả dụ như người dùng đang ngồi sau một graphical workstation, dòng lệnh được nhập vào từ bàn phím được gửi tới máy tính từ xa, và đầu ra kết quả từ máy tính từ xa đó của nó được hiển thị lên trên cửa sổ của người đang sử dụng
Hệ điều hành mạng rõ ràng là mang tính nguyên thủy, thô sơ hơn rất nhiều so với hệ điều hành phân tán, sự khác biệt lớn nhất giữa hai loại này đó là hệ điều hành phân tán nỗ lực cố gắng tạo ra sự trong suốt tuyệt đối, từ đó cung cấp chỉ một single-view duy nhất cho hệ thống
Sự thiếu tính trong suốt của hệ điều hành mạng có những nhược điểm dễ nhận thấy, chúng thường khó sử dụng hơn, hay như việc người dùng bắt buộc phải đăng nhập vào máy tính khác từ xa, copy file từ một máy tính sang máy khác để sử dụng Nó còn có vấn đề về quản lý, khi mà một người chỉ có thể đăng nhập từ xa vào máy tính
X chỉ khi có account trên X, hay như muốn sử dụng một mật khẩu của riêng họ, thay đổi password phải thực hiện trên tất cả các máy có account đó Ngoài ra việc quản lý quyền truy nhập cũng phải được xem xét trên các máy tính một cách chính xác Không có cách nào có thể đơn giản thay đổi quyền truy cập chỉ 1 lần cho mọi nơi trên hệ thống Tính phi tập trung dẫn tới vấn đề bảo mật khi rất khó khăn để bảo vệ
hệ thống trước kẻ tấn công
Nhưng hệ điều hành mạng cũng có một số lợi điểm so với hệ điều hành phân tán, đó
là mỗi máy tính trong mạng giống như một nút, chúng hầu như độc lập với các nút khác nên rất dễ dàng để thêm hay loại bỏ một máy tính trong hệ thống Trong 1 số trường hợp, điều duy nhất mà chúng ta phải làm để thêm một nút vào mạng là kết nối máy tính vào hệ thống mạng, tuần tự theo đó là làm các máy tính khác nhận biết
Trang 5được nó Ví dụ như trên mạng internet, để một máy tính tham gia vào chúng ta chỉ cần cho nó một địa chỉ IP hay đơn giản hơn nữa là một tên miền DNS
2 Middleware
2.1 Tại sao lại có sự xuất hiện của Middleware
DOS có tính trong suốt cao nhưng vấn đề của nó là khó có thể mở rộng và truy cập
từ xa do yêu cầu về tính thuần nhất cao
Ngược lại, NOS có thể mở rộng và truy cập từ xa dễ dàng nhưng tính trong suốt lại không cao
Từ đó, Middleware ra đời nhằm kết hợp những ưu điểm của hai HĐH này lại
2.2 Vị trí của Middleware trong Hệ phân tán
Nhiều ứng dụng phân tán sử dụng trực tiếp giao diện lập trình cung cấp bởi hệ điều hành mạng Thêm vào đí, các ứng dụng này thường sử dụng cả giao diện của file hệ thống Vấn đề với cách tiếp cận này là việc phân tán rất khó trong suốt Một giải phải là thêm vào một lớp phần mềm nằm giữa ứng dụng và hệ điều hành mạng, cung cấp một tầng trừu tượng hóa cao hơn, được gọi là phần dẻo
Mỗi hệ thống cục bộ là một phần của hệ điều hành mạng nằm dưới đều được giả định rằng có khả năng quản lý tài nguyên bổ sung vào việc giao tiếp đơn giản giữa các máy tính Đồng thời, phần dẻo không có khả năng quản lý từng node con riêng biệt mà hoàn toàn giao cho hệ điều hành cục bộ
Trang 6Một mục tiêu quan trọng khác là phải che giấu được tính phi thuần nhất của các hệ thống nằm bên dưới tầng ứng dụng Vì vật rất nhiều hệ thống middleware cung cấp một tập nhiều hoặc ít hơn một dịch vụ hoàn chỉnh và không khuyến khích sử dụng những giao diện khác ngoài của họ Điều đó đồng nghĩa với việc bỏ qua lớp
middleware và gọi trực tiếp đến các dịch vụ nằm ở hệ điều hành bên dưới đều bị phản đối
Middleware không được phát minh ra như một nghiên cứu học thuật trong việc đạt được tính trong suốt trong hệ phân tán Sau khi được giới thiệu và việc hệ điều hành mạng được sử dụng rộng rãi, rất nhiều tổ chức thấy rằng họ có vấn đề với những ứng dụng không thể dễ dàng tích hợp vào một hệ thống đơn lẻ Tại điểm đó, các nhà sản xuất bắt đầu xây dựng những dịch vụ ứng dụng độc lập mức cao vào hệ thống của họ Những ví dụ điển hình bao gồm hộ trợ cho giao dịch phân tán và giao tiếp cao cấp giữa các cơ sở hạ tầng Tất nhiên việc đồng ý sử dụng middleware nào không dễ dàng Một hướng tiếp cận là thiết lập một tổ chức nhằm đưa ra các tiêu chuẩn thông thường cho các giải pháp về middleware Vào thời điểm hiện tại, đã có một số tiêu chuẩn sẵn sàng Những tiêu chuẩn này nhìn chung không tương thích với nhau và tệ hơn những sản phẩm cài đặt tiêu chuẩn giống nhau nhưng khác nhà sản xuất hiếm khi hoạt động cùng nhau
Trang 72.3 Middleware và Tính mở
Nhiều hệ thống phân tán hiện đại nhìn chung được xây dựng như là middleware cho các hệ điều hành khác nhau Với cách này, ứng dụng xây dựng cho một hệ phân tán nhất định trở thành độc lập với hệ điều hành Không may, việc độc lập này lại bị thay thế bằng sự phụ thuộc chặt chẽ với một middleware nhất định Vấn đề gây ra bởi một sự thật là middleware thì thường ít mở hơn so với khẳn định Một hệ thống phân tán thực sự mở được định rõ bởi giao diện bằng sự hoàn chỉnh Hoàn chỉnh có nghĩa là mọi thứ cần cho việc cài đặt hệ thống, đã được thực sự chỉ rõ Việc không hoàn thiện các định nghĩa về giao diện dẫn tới các trường hợp các nhà phát triển hệ thống bị ép phải dùng các giao diện của riêng họ Điều này dẫn tới chúng ta rơi vào tình trạng hai middleware của các đội phát triển có chung chuẩn nhưng ứng dụng viết trên middleware này khó có thể chuyển sang cái còn lại
Một tình trạng tương tự là hai cách cài đặt khác nhau của cùng một giao diện nhưng khác giao thức nằm dưới cũng không thể tương hợp được với nhau Vd: nếu hai cài đặt dựa trên hai giao thức truyền thông không tương thích với nhau có sẵn trong hệ điều hành nằm dưới Điều chúng ta cần là các giao thức của middleware và các giao diện của middleware phải giống nhau
Một ví dụ khác, để đảm bảo tính tương hợp giữa các cài đặt khác nhau, các thực thể bên trong các hệ thống khác nhau cần phải có mối quan hệ với nhau Nếu thực thể ở một hệ thống được có địa chỉ là URL, trong khi ở hệ thống khác lại là địa chỉ mạng, điều đó dẫn tới việc tương tác chéo gặp vấn đề.Trong trường hợp đó, việc định nghĩa giao diện cần được miêu tả tương đối chính xác việc liên kết đó sẽ như thế nào
Trang 82.4 Phân loại middleware
2.4.1 Lời gọi thủ tục từ xa và Thông điệp bất đồng bộ (Remote Procedure Call and Asynchronous Message)
Tại tầng trừu tượng, RPC cho phép lập trình viên có thể gọi tới những dịch vụ từ xa như là gọi thủ tục từ những ứng dụng bên trong Cũng giống như gọi hàm hay gọi thủ tục trong các ngôn ngữ lập trình truyền thống, RPC khóa luồng dữ liệu khi dịch
vụ khi gọi yêu cầu đến dịch vụ Điều này có nghĩa là khi dịch vụ được gọi tới đang thực hiện yêu cầu, dịch vụ đang gọi sẽ khóa luồng gọi và đợi đến khi có dữ liệu trả
về hoặc quá thời gian chờ kết nối
Hệ thống truyền thông điệp, ngược lại, dựa trên việc trừu tượng hóa hàng đợi trong
đó bên gửi sẽ gửi dữ liệu vào hàng đợi cho bên nhận thu nhận và xử lý dựa trên đó
Hệ thống truyền thông điệp điển hình thường là hướng dữ liệu hoặc hướng văn bản, trong khi đó hệ thống RPC là hướng thủ tục hoặc hướng đối tượng Các ứng dụng dựa trên thông điệp thường trừu tượng hóa khóa và thiết kế xoay quanh thông tin, trong khi các ứng dụng dựa trên RPC tập trung vào đối tượng và hàm để cung cấp các dịch vụ hệ thống
2.4.2 Ngôn ngữ riêng biệt và Độc lập về ngôn ngữ.
Nhiều hệ thống middleware hộ trợ tích hợp các ứng dụng viết trong nhiều ngôn ngữ lập trình khác nhau Corba là một ví dụ siêu điển hình vì nó hỗ trợ nhiều ngôn ngữ ánh xạ tới Ngôn ngữ Định nghĩa Giao diện (Interface Definition Language - IDL) , được dùng để định nghĩa thỏa thuận với các đối tượng của Corba Chủ đề tranh luận
về kiểu middleware như vậy là các hệ thống tính toán phức tạp, có lẽ liên quan đến hầu hết mọi thứ - từ các thiết bị cầm tay, laptop Windows đến server Unix - thường hiếm khi được viết bởi một ngôn ngữ Tuy nhiên, nhiều hệ thống, như J2EE, dựa trên việc đơn giản hóa rằng chỉ có một ngôn ngữ được sử dụng Một vài hệ thống phân tán đơn ngôn ngữ khác cũng được phát triển sử dụng C++, Modula-3 và
Smalltalk
2.4.3 Độc quyền và Tiêu chuẩn
Các cuộc tranh luận về tiêu chuẩn cho middleware thường là về khả năng tương hợp
và khả chuyển giữa các sản phẩm, họ thường tránh việc người sử dụng bị “khóa trái”
và cho phép người dùng lựa chọn middleware dựa trên chất lượng Trong thực tế, ý tưởng này đã bị thay đổi khá nhiều, nhiều nhà cung cấp khẳng định họ theo các tiêu chuẩn trong khi vẫn ép người dùng vào tình trạng bị “khóa trái”
Trang 9Mặt khác, cho dù những nhà cung cấp middleware này vẫn dựa theo tiêu chuẩn nhưng họ vẫn độc quyền các tính năng mà chưa có tiêu chuẩn nào đề cập tới Không một tiêu chuẩn nào có thể chỉ ra tất cả các vấn đề có thể xảy ra - kể cả những tiêu chuẩn lâu đời như Corba hay tập hợp tiêu chuẩn tạo ra bởi Java Community Process (www.jcp.org) Hơn nữa, nỗ lực tiêu chuẩn hóa có thể rất lâu, quan liêu, đắt đỏ và chính trị Các nỗ lực phát triển độc quyền đều cố gắng tránh những khía cạnh tiêu cực này trong khi vẫn bảo vệ những bí mật có lợi trước các đối thủ cạnh tranh Những công ty khổng lồ (như Microsoft) hay những công ty rất nhỏ thường là những đối tượng theo đuổi sự độc quyền Những công ty lớn thì tin rằng những nỗ lực độc quyền của họ sẽ có lúc trở thành tiêu chuẩn thực tế dựa vào số lượng người
sử dụng quá lớn Những công ty nhỏ thì tin rằng hệ thống của họ đủ “hư cấu” để gián đoạn thị trường và bắt những người khác phải tiêu chuẩn hóa theo họ
2.4.4 Thiết bị nhúng và Hệ thống doanh nghiệp.
Trong lịch sử, middleware nhắm tới hệ thống doanh nghiệp, điển hình trong việc các
hệ thống tính toán nằm tách biệt nhau, thường bao gồm một hoặc nhiều các máy tính lớn, nằm ở nhiều bộ phận khác nhau của doanh nghiệp Những hệ thống này thường tìm cách cải thiện quy trình kinh doanh tự động Những hệ thống nhúng, với môi trường phần cứng đặc thù và những yêu cầu về phần mềm điển hình, thường bị giới hạn về middleware cho đến tận gần đây Sự phát triển của phần cứng và phần mềm
đã làm middleware cho phần nhúng khả thi, tuy nhiên, các lập trình có thể tạo ra những hệ thống nhúng từ các bộ kit có sẵn Các middleware nhúng vẫn phải đối mặt với những ràng buộc về thời gian thực và khả năng dự đoán bởi kích cỡ và tính năng
Cũng như các thiết bị nhúng, các hệ thống doanh nghiệp cũng phải giải quyết quá tải khi chạy trong thời gian thực Các phần nhúng doanh nghiệp cũng cần phải có khả năng được cấu hình linh hoạt cao và nó yêu cầu khả năng quản lý hệ thống khi chạy cho phép người quản trị hệ thống thay đổi các tác vụ phù hợp Vì việc cần phải tích hợp hàng loạt các hệ thống riêng rẽ, người sử dụng thường đánh giá middleware doanh nghiệp bởi cách nó có dễ dàng tương thích các hệ thống mới hay không Mặt khác, người sử dụng lại đánh giá middleware thời gian thực - nhúng dựa trên tiêu thụ bộ nhớ, hiệu suất và khả năng dự đoán trước được
2.5 Mô hình middleware.
Để giúp việc phát triên và tích hợp các ứng dụng phân tán càng đơn giản nhất có thể,
Trang 10tán và giao tiếp Một mô hình tương đối đơn giản đó là coi mọi thứ như các file Một ứng dụng có thể mở file, đọc và ghi file sau đó đóng lại Vì các file có thể được chia
sẻ bởi một vài tiến trình, việc tương tác trở nên đơn giản như khi truy cập cùng một file
Một cách tiếp cận tương tự, đó là xây dựng middleware lấy hệ thống file phân tán
làm trung tâm Trong nhiều trường hợp, middleware đó chỉ hơn có đúng một bước
so với hệ điều hành mạng trong việc tính phân tán trong suốt, chỉ hộ trợ các file truyền thống (vd như các file chỉ dùng để lưu trữ dữ liệu) Ví dụ, các tiến trình thường được yêu cầu phải được khởi động một cách rõ ràng trên các máy được chỉ
ra Middleware dựa trên hệ thống file phân tán được chứng minh là có khả năng mở rộng, đã đóng góp rất nhiều vào sự phổ biến của nó
Một mô hình middleware khác dựa trên RPC Trọng tâm của mô hình này là che
giấu sự tương tác trên mạng bằng cách cho các tiến trình gọi nhau từ xa Khi gọi các thủ tục như vậy, các tham số được truyền đến các máy ở xa một cách trong suốt, sau
đó các thủ tục được thực thi sẽ trả về kết quả Chính vì vậy, tiến trình gọi thủ tục hoàn toàn không biết đến thực tế rằng việc truyền thông trên mạng đã thay thế, ngoại trừ việc giảm đi một chút hiệu suất
Khi mà hướng đối tượng trở nên thịnh hành, nếu việc gọi hàm có thể vượt qua ranh giới của các máy thì việc có thể truy cập vào các đối tượng ở trên các máy ở xa một cách trong suốt cũng hoàn toàn khả thi Điều này đã dẫn tới việc có nhiều hệ thống
middleware đặt ra các khái niệm về đối tượng phân tán.Bản chất của các đối tượng
phân tán mà mỗi đối tượng cài đặt một giao diện che giấu đi thông tin bên trong của đối tượng trước người sử dụng Một giao diện bao gồm các phương thức mà đối tượng cài đặt.Thứ duy nhất mà tiến trình thấy về đối tượng là giao diện của nó
Mô hình có thể đơn giản hóa việc sử dụng hệ thống mạng có lẽ được diễn tả tốt qua World Wide Web Sự thành công của Web phần lớn là dựa vào sự đơn giản cũng
như hiệu năng cao của các văn bản phân tán Trong mô hình web, thông tin được
sắp xếp vào các văn bản với mỗi văn bản lại nằm ở một máy hoàn toàn trong suốt về địa điểm Các văn bản chứa các đường dẫn liên kết tới vị trí của nó để người dùng
có thể lấy về và hiển thị trên màn hình Khải niệm về một văn bản không chỉ giới hạn ở việc nó chỉ chứa thông tin về text Web hỗ trợ cả video và audio cũng như các loại văn bản đồ họa