1 CácCác hhệệ ththốốngng thôngthông tin tin phânphân tántán TS. Hồ Bảo Quốc MMụụcc tiêutiêu mônmôn hhọọcc Cung cấp kiến thức về các hệ thống thông tin phân tán trong tổ chức/doanh nghiệp như kiến trúc, các chuẩn, các mô hình, công nghệ thiết kế và triển các hệ thống phân tán CácCác kkếếtt ququảả mongmong mumuốốnn ññạạtt ññượượcc sausau khóakhóa hhọọcc Có khả năng phân tích ngữ cảnh ứng dụng và lĩnh vực ứng dụng của các hệ thống phân tán Nắm ñược các kiến trúc khác nhau của các hệ thống phân tán Thiết kế các giải pháp phân tán và chọn phương pháp luận phù hợp cho phát triển một hệ thống phân tán Hiểu và sử dụng ñược middleware cho việc thiết kế một hệ thống phân tán Hiểu ñược sự cần thiết của các chuẩn các nghi thức trong tính toán phân tán ðánh giá và chọn lựa ñược công nghẹ và nghi thức mạng cho một hệ phân tán Hiểu các vấn ñề trong quản lý giao tác phân tán Nhận thức ñược các yêu cầu về bảo mật của hệ thống phân tán TàiTài liliệệuu thamtham khkhảảoo NNộộii dung dung mônmôn hhọọcc ◦ Dẫn nhập ◦ ðặc trưng của các hệ thống phân tán ◦ Các mô hình hệ thống ◦ Mạng và Internet ◦ Truyền thông liên tiến trình (Inter-Process Communication) ◦ ðối tượng phân tán và gọi từ xa(Distributed Objects and Remote Invocation) ◦ Xây dựng một ứng dụng phân tán ◦ Hỗ trợ hệ ñiều hành ◦ Bảo mật ◦ Hệ thông tập tin phân tán ◦ Dịch vụ ñịnh danh (Name service) ◦ Thời gian và các trạng thái toàn cục (Time and Global States) ◦ Hợp tác và ñồng thuận (Coordination and Agreement) ◦ Giao tác và ðiều khiển ñồng thời ◦ Nhân bản ◦ Kiến trúc ứng dụng Java EE ◦ Kiến trúc hướng dịch vụ ◦ Kiến trúc .NET ◦ Tính toán lưới (Grid computing) DDẪẪNN NHNHẬẬPP 2 ððịịnhnh nghĩanghĩa “A distributed system consists of a collection of autonomous computers, connected through a network and distribution middleware, which enables computers to coordinate their activities and to share the resources of the system, so that users perceive the system as a single, integrated computing facility.” Wolfgang Emmerich, 1997 “ Một hệ thống phân tán bao gồm một tập hợp các máy tính ñọc lập ñược kết nối với nhau thông qua mạng và một lớp phần mềm trung gian (middleware) cho phép các máy tính này có thể hợp tác, chia sẽ tài nguyên của hệ thống, sao cho người dùng cảm nhận hệ thống như một phương tiện tính toán ñược tích hợp ñơn” HHệệ ththốốngng phânphân tántán “Một hệ thống phân tán bao gồm một tập hợp các máy tính ñơn ñược nối kết với nhau thông qua mạng và ñược trang bị một phần mềm quản trị phân tán (Middleware)” “Middleware cho phép các máy tính hợp tác hoạt ñọng, chia sẽ tài nguyên của hệ thống như : phần cứng, phần mềm, dữ liệu” “Người dùng cảm nhận về hệ thống phân tán như một tiên ích tính toán tích hợp mặc dù nó có thể ñược triển khai trên nhiều máy tính khác nhau, tại nhiều vị trí khác nhau” Coulouris et a, 2005 CácCác tínhtính chchấấtt ccủủaa mmộộtt hhệệ ththốốngng phânphân tántán ◦ Bao gồm nhiều thành phần ñộc lập ◦ Các thành phần không ñược chia sẽ cho tất cả các người dùng ◦ Các tài nguyên có thể không thể truy xuất ◦ Phần mềm thực thi trên các tiến trình ñồng thời trên các bộ xử lý khác nhau ◦ Kiểm soát ña ñiểm ◦ Sự cố ña ñiểm Wolfgang Emmerich, 1997 SSựự phátphát tritriểểnn ccủủaa côngcông nghnghệệ Trước nữa nhứng năm 80 ◦ Hầu hết các tổ chức chỉ có vài hệ thệ thống Thiếu phương tiện ñể kết nối chúng Chúng hoạt ñộng ñộc lập ◦ Các máy tính thì lớn và giá thành cao Từ giữa những năm với sự ra ñời của các bộ vi xữ lý mạnh và … sự xuất hiện của mạng máy tính tốc ñộ cao Ngày nay: dễ dàng ñể kết nối số lượng lớn máy tính bằng hệ thống mạng tốc ñộ cao. TTạạii saosao ccầầnn cáccác hhệệ ththốốngng phânphân tántán Bản chất phân tán của các tổ chức/ xí nghiệp Cho phép người dùng kết nối với những tài nguyên ở xa (remote resources) Cho phép chia sẽ tài nguyên cho người dùng từ xa Tăng cường sự chia sẽ ◦ Kinh tế ◦ Dễ hợp tác – tổ chứ ảo ◦ Dễ dàng trao ñổi ◦ Thương mại Tuy nhiên : ñặt ra vấn ñề an toàn CácCác ññặặcc trtrưưngng chínhchính Trong suốt (transparency) : Che dấu sự phân tán vật lý của tài nguyên trên mạng Hệ thống mở (open system ) :Có thể dễ dàng mở rộng dựa trên dịch vụ ñược mô tả (cú pháp và ngữ nghĩa) theo các luật chuẩn Mở rộng kích thước/tăng trưởng (scalable) : dễ dàng thêm các thành phần, người sử dụng 3 TínhTính trongtrong susuốốtt (Transparency)(Transparency) ðịnh nghĩa “sự che dấu ngườii dùng và người lập trình ứng dụng về sự tồn tại ñộc lập của các thành phần của hệ thống, sao cho hệ thống ñược cảm nhận như một tổng thể hơn là tập hợp của các thành phân ñộc lập“ Coulouris et al Các lại trong suốt: ◦ Trong suốt truy xuất (Access transparency): sự khác nhau trong biểu diễn dữ liệu và phương thức truy xuất tài nguyên ◦ Trong suốt vị trí (Location transparency): vị trí tài nguyên ñược lưu trữ ◦ Trong suốt thay ñổi vị trí (Migration transparency): một tài nguyên có thể thay dổi vị trí ◦ Trong suốt tái ñịnh vị (elocation transparency): tài nguyên có thể bị di chuyển trong khi ñang ñược sử dụng ◦ Trong suốt nhân bản (replication transparency): các bản của cùng một tài nguyên ◦ Trong suốt truy xuất ñồng thời (Concurrency transparency): một tài nguyên có thể ñược chia sẽ cho nhiều người và bởi nhiều người ◦ trong suốt sự cố: sự cố và khôi phục sau sự cố của một tài nguyên ◦ Trong suốt về sự bền vững (Persistence transparency): wtài nguyên phần mềm trong bộ nhớ hay trên ñĩa TínhTính mmởở (Openness)(Openness) Cung cấp các dịch vụ theo các luật chuẩn mô tả và cú pháp và ngữ nghĩa của dịch vụ Các luật ñược hình thức hóa thành các nghi thức (protocols) Các dịch vụ ñược ñặc tả thông qua một giao diện (interfaces) ◦ Sử dụng ngôn ngữ ñịnh nghĩa giao diện(Interface Definition Language (IDL) ◦ Sử dụng ngôn ngữ tự nhiên ñể mô tả ngữ nghĩa ◦ Cho phép một tiến trình cần một interface có thể nói chuyện với một tiến trình khác cung cấp interface ñó ◦ Bản thân các interfaces là ñầy ñủ và trung tính TínhTính mmởở ((tttt.).) Tại sao phải cần tính mở? ◦ Khả năng kết hợp và khả năng di chuyển ( Interoperability and portability) ðòi hỏi tính ñầy ñủ và trung tính ◦ Tính linh hoạt Dễ dàng cấu hình hệ thống với những thành phần khác nhau từ những nhà phát triển khác nhau Dễ dàng thêm một thành phần mới Dễ dàng thay thế một thành phần ñang có TínhTính mmởở ((tttt.).) Tại sao tính linh hoạt là cần thiết ? ◦ ðáp ứng sự thay ñổi Thay ñổi nghiệp vụ (Business changes) Thay ñổi công nghệ (Technology changes) Thay ñổi ñiều hành nghiệp vụ (Business drives changes) TínhTính tăngtăng trtrưởưởngng ((scalability)scalability) Tăng trưởng theo nghĩa quản trị ◦ Làm thể nào tăng trưởng xuyên qua các lĩnh vực quản trị ñộc lập ◦ Các chính sách mâu thuẩn nhau Sử dụng (trả chi phí) Quản trị Bảo mật Chống lại các tấn công từ lĩnh vực mới Chống lại các tấn công từ hệ thống phân tán TínhTính tăngtăng trtrưởưởngng ((tttt.).) Tăng trưởng theo kích thước ◦ Giới hạn của kiến trúc tập trung : quá tải (bottleneck) Sức mạnh xử lý và lưu trữ không thể vượt qua những giới hạn của truyền thông Phân tán lại sinh ra sự không chắc chắn 4 TínhTính tăngtăng trtrưởưởngng ((tttt.).) Tăng trưởng về vị trị ñịa lý ◦ Các hệ thống phân tán ñược thiết kế cho mạng LANs dựa trên truyền thông ñồng bộ (synchronous communication) ◦ Truyền thông trên mạng WANs vốn không tin cậy và hầu hết theo kiểu point-to-point LANs cung cấp cơ chế truyền thông tin cậy dựa trên quảng bá(broadcasting) WAN cần các dịch vụ vị trí ñặc biệt ◦ Các thành phần tập trung cản trở sự tăng trưởng về mặt ñịa lý ððẶẶCC TRTRƯƯNGNG CCỦỦAA HHỆỆ THTHỐỐNGNG PHÂNPHÂNTÁNTÁN HHệệ ththốốngng phânphân tántán làlà gìgì ?? “là hệ thống trong ñó các thành phần phần cứng hay phần mềm ñược phân bổ trên một mạng máy tính truyền thông và hợp tác thông việc chuyển giao các thông ñiệp” [Coulouris et al, 2001] TTạạii saosao phphảảii dùngdùng HTPTHTPT ðơn giản là ñể chia sẽ tài nguyên Tài nguyên có thể ◦ Thành phần phần cứng ðĩa từ, bộ xử lý, máy in… ◦ Các thực thể phần mềm Tập tin, cơ sở dữ liệu, ñối tượng… CácCác vvấấnn ññềề chínhchính ccủủaa HTPTHTPT ðồng thời (Concurrency) ◦ Công việc ñược thực hiện ñồng thời trên nhiều máy tính ◦ Làm sao quản lý ? Không có một ñồng hồ toàn cục (No global clock) ◦ Các máy tính hợp tác với nhau nhờ vào các thông ñiệp (messages) ◦ Sự ñiều phối phụ thuộc theo thời gian ◦ Tuy nhiên có những hạn chế trong việc ñồng bộ ñồng hồ trên hệ thống. Sự cố (Failures) ◦ Hệ thống/ các máy tính có thể bị sự cố, mạng có thể bị sự cố ◦ Làm thế nào ñể khoang vùng sự cố? ◦ Làm thế nào ñể tối thiểu hóa tác hại ? VíVí ddụụ HTPTHTPT Internet ◦ Một chuỗi các máy tính thuộc loại khac nhau ñược kết nối ◦ Chúng có thể hoạt ñộng cùng nhau thông qua việc trao ñổi thông ñiệp ◦ Bản chất của Internet là một cấu trsuc mở : có thể dễ dàng thêm vào các tài nguyên mới Mạng nội bộ (Intranets) ◦ Một pần của Internet ñượ c quản trị riêng biệt trong một phạm vi nào ñó ◦ ñược kết nối với nhau thông qua mạng x ươ ng s ố ng (backbone) 5 VíVí ddụụ HTPTHTPT Mạng di ñộng ◦ Mobile phone, PDA, Laptop … ◦ Tính toán di ñộng CácCác thuthuậậtt ngngữữ chínhchính Dịch vụ (Service) “Một phần tách biệt của một hệ thống máy tính quản trị một tập hợp tài nguyên liên quan và cho phép các người dùng và các ứng dụng sử dụng các chức năng của nó” [Coulouris et al, 2001] ◦ Ví dụ, Truy xuất các tập tin ñược chia sẽ thông qua “dịch vụ tập tin” (file service) Gởi tập tin ñến máy in thông qua “dich vụ in” (print service) Thanh toán tiền mua hàng thông qua “dịch vụ thanh toán”(payment service) ◦ Trong mỗi trường hợp, chúng ta truy xuất dịch vụ thông qua tập hợp các chức năng mà dich vụ ñó cho phép (interfaces của nó) CácCác thuthuậậtt ngngữữ chínhchính ((tttt.).) Một tiến trình (Process) “Một chương trình ñang thực thi trên một máy tính nối mạng chấp nhận yêu cầu từ các chương trình ñang thực thi trên các máy tính khác ñể thực hiện một dịch vụ và trả kết quả tương ứng” [Coulouris et al, 2001] CácCác thuthuậậtt ngngữữ chínhchính ((tttt.).) Khách – chủ (Client – Server) ◦ Các thông ñiệp yêu cầu từ client gởi ñến server client ñược gọi là yêu cầu (invoke) một tác vụ trên server Toàn bộ sự tương tác giữa client và server ñược gọi là một sự triệu gọi từ xa(remote invocation) ◦ Một server có thể gởi một yêu cầu ñến một server khác Như vậy một server cũng có thể ñược coi như một client của một server khác ◦ Thuật ngữ Client hay Server phản ánh vai trò trong giao tác thực hiện của tiến trình ñang thực thi TínhTính khôngkhông ññồồngng nhnhấấtt (Heterogeneity)(Heterogeneity) Tính không ñồng nhất liên quan ñến nhiều thành phần khác nhau ◦ Mạng (Networks) ◦ Phần cứng máy tính (Computer hardware ) ◦ Hệ ñiều hành (Operating systems) ◦ Ngôn ngữ lập trình (Programming languages) ◦ Các cài ñặt khác nhau của những người phát triển khác nhau Truyền thông giữa các thành phần của một hệ thống không ñồng nhất phải thông qua những chuẩn thống nhất chung. ðây chính là MIDDLEWARE MIDLEWARE MIDLEWARE làlà gìgì ?? Middleware là một tầng phần mềm (trừu tượng) Middleware che dấu sự không ñồng nhất Sử dụng nó chúng ta có thể gọi từ xa các tài nguyên mà không cần lo lắng chúng ở ñâu Các hệ thống trao ñổi với middleware thay vì trao ñổi trực tiếp ñến hệ thống khác ◦ Ví dụ: CORBA, Java RMI Hầu hết các middleware chạy trên Internet 6 TínhTính mmởở (Openness)(Openness) Tính mở là ñặc tính mà hệ thống có thể ñược mở rộng hay cài ñặt lại bằng nhiều cách khác nhau Tính mở ñòi hỏi các Interfaces dược công bố (API) Sử dụng một interface chuẩn ñã ñược mọi người ñồng ý và sử dụng interface là phương tiện ñể két nối các hệ thống khác nhau lại với nhau TínhTính mmởở ((tttt.).) Ví dụ: ◦ Internet và Web? Các nghi thức truyền thông ñược công bố, xem www.ietf.org Vì vậy người phát triển có thể sử dụng các nghi thức này ñể viết phần mềm và phát triển phần cứng Một hệ thống mở ◦ Các hệ thống mở ñược ñặc trưng bởi các interface ñược công bố của chúng ◦ Một hệ thống phân tán mở dựa trên một cơ chế truyền tin ñồng nhất ◦ Một hệ thống phân tán mở có thể ñược xây dựng từ các thành phần không ñồng nhất. Tuy vậy, sự tương thích của các chuẩn ñược công bố phả ñược bảo ñảm InterfacesInterfaces Interfaces A system A system A system Các hệ thống (phần mềm và phần cứng) có thể khác nhau vậy làm sao chúng có thể kết nối với nhau ? A network A network InterfacesInterfaces Interfaces: dựa trên những chuẩn đã được thống nhất A system Phát triển hệ thống dựa trên các interface Một interface được gán kết vào một interface khác khớp với nó InterfacesInterfaces Sau đó chúng ta có thể kết nối hệ thống một cách dễ dàng A system A system A network A network Một cấu hình kết nối Một cấu hình kết nối khác InterfacesInterfaces !! CHÚ Ý!! Các interface không cần tất cả giống!! A system A network One configuration Chúng chỉ cần khớp với nhau để có thể kết nối được 7 SSựự bbảảoo mmậậtt (security)(security) Có ba loại bảo mật phải xem xét: ◦ Tính bí mật (Confidentiality): bảo vệ chống lại các cá thể không ñược pháp ◦ Tính sẳn sàng (Availability): bảo vệ chống lại các truy xuất tài nguyên ◦ Tính nhất quán (Integrity): bảo vệ chống lại sự hư hại TínhTính bbảảoo mmậậtt ((tttt.).) Xét một truyền thông giữa Client và Server Chúng ta cần làm gì ñể bảo mật? ◦ Chúng ta không chỉ cần bảo mật thông ñiệp mà, Chúng ta cũng cần xem xét người gởi và người nhận có ñúng không Chúng ta cũng cần bảo ñảm nội dung thông ñiệp không bị thay ñổi Chúng ta cũng cần bảo ñảm rằng các thông ñiệp không ñược phát lại Và nhiều thứ khác Kỹ thuật mã hóa có thể cung cấp khả năng ñể bảo mật. TínhTính tăngtăng trtrưởưởngng (Scalability)(Scalability) Một hệ thống ñược gọi là có tính tăng trưởng nếu nó vẫn hoạt ñộng hiệu quả khi tăng tài nguyên và sử sử dụng internet là một hệ thống tăng trưởng kích thước ñáng ngạc nhiên: Computers Web servers 1979, Dec 188 0 1989, Dec 130,000 0 1999, Dec 56,218,000 5,560,866 2003, Jan 171,638,297 35,424,956 [Coulouris et al, 2005] Computers in the Internet TínhTính tăngtăng trtrưởưởngng ((tttt.).) Các thách thức chính: ◦ Kiểm soát chi phí của các tài nguyên vật lý ◦ Kiểm soát sự mát hiệu năng hệ thống ◦ Ngăn ngừa các tài nguyên phần mềm chạy hết công suất ◦ Tránh hiện tượng nghẽn cổ chai (bottleneck) KiKiểểmm soátsoát ssựự ccốố (Failure (Failure handling)handling) Sự cố là gì? ◦ Một sự cố gay nên chương trình bị treo, thao tác bị dừng lại và sinh ra lỗi Trong một hệ phân tán, một sự cố là sự cố thành phần ◦ Nó ảnh hưởng ñến một vài tài nguyên và một phần của hệ thống phân tán ◦ Các phần khác của hệ thống vẫn hoạt ñộng ◦ ðiều này có thể dẫn ñến sự không nhất quán giữa các phần KiKiểểmm soátsoát ssựự ccốố (Failure (Failure handling)handling) Phát hiện sự cố ◦ Một vài sự cố có thể ñược phát hiện (checksums, etc.) ◦ Một vài sự cố không thể phát hiện (internet server crashes) ◦ Chúng ta cần một kế hoạch ñể quản lý tất cả các loại sự cố Che dấu sự cố ◦ Một vài sự cố có thể ñược che dấu (thông thông ñiệp không thẻ ñến ñược người nhận có thể ñược gởi lại, một RAID arrays lưu trữ các bản sao dữ liệu, etc.) 8 QuQuảảnn lýlý ssựự ccốố (Failure (Failure handling)handling) Khả năng chịu lỗi ◦ Chúng ta có thể chịu lỗi và thông báo ñến tiến trình và người dùng ◦ Chúng ta cần chỉ ra rõ ràng chúng ta xử lý thế nào ◦ Làm thế nào chúng ta có thể tái xây dựng lại sau sự cố Sự dư thừa ◦ Một phuowg pháp là thông qua sự dư thừa (redundant components) ◦ Ví dụ, DNS replications, multiple routes, database replicata’s ◦ Nhưng nó lại có vấn ñề về tính nhất quán của các dịch vụ ñược nhân bản này ◦ Làm thế nào chúng ta bảo ñảm tính ñúng ñắn? ððồồngng ththờờii (Concurrency)(Concurrency) Truy xuất vào cùng một tài nguyên từ nhiều tiến trình khác nhau cùng một lúc Sử dụng khái niệm giao tác Lập lich cho các giao tác . 1 CácCác hhệệ ththốốngng thôngthông tin tin phânphân tántán TS. Hồ Bảo Quốc MMụụcc tiêutiêu mônmôn hhọọcc Cung cấp kiến thức về các hệ thống thông tin phân tán trong tổ chức/doanh. của các hệ thống phân tán Nắm ñược các kiến trúc khác nhau của các hệ thống phân tán Thiết kế các giải pháp phân tán và chọn phương pháp luận phù hợp cho phát triển một hệ thống phân tán . tác phân tán Nhận thức ñược các yêu cầu về bảo mật của hệ thống phân tán TàiTài liliệệuu thamtham khkhảảoo NNộộii dung dung mônmôn hhọọcc ◦ Dẫn nhập ◦ ðặc trưng của các hệ thống phân tán ◦ Các