Hồ Bảo Quốc M Mụ ục c tiêu tiêu môn môn h họ ọc c 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
Trang 1Các h hệ ệ th thố ống ng thông thông tin tin
phân
TS Hồ Bảo Quốc
M
Mụ ục c tiêu tiêu môn môn h họ ọc c
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ác
Các k kế ếtt qu quả ả mong mong mu muố ốn n ự ựạ ạtt
ự
ựượ ược c sau sau khóa khóa h họ ọc c
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ài Tài liliệ ệu u tham tham kh khả ảo o
N
Nộ ộii dung dung môn môn h họ ọc c
◦ 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)
D
DẪ ẪN N NH NHẬ ẬP
Trang 2ðịịnh nh nghĩa nghĩ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”
H
Hệ ệ th thố ống ng phân phân tán tá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ác
Các tính tính ch chấ ấtt c củ ủa a m mộ ộtt h hệ ệ
th
thố ống ng phân phân tán tán
cho tất cả các người dùng
xuất
ñồng thời trên các bộ xử lý khác nhau
Wolfgang Emmerich, 1997
S
Sự ự phát phát tri triể ển n c củ ủa a công công ngh
◦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 sao sao c cầ ần n các các h hệ ệ th thố ống ng
phâ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ác Các ñ ñặ ặc c tr trư ưng ng chính chí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
Trang 3Tắnh trong trong su suố ốtt
(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ắnh Tắnh m mở ở (Openness) (Openness)
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ắnh
Tắnh m mở ở ((tt tt.) )
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ắnh Tắnh m mở ở ((tt tt.) )
◦ đá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ắnh
Tắnh tăng tăng tr trưở ưởng ng
((scalability) scalability)
các lĩnh vực quản trị ựộc lập
mới
phân tán
Tắnh Tắnh tăng tăng tr trưở ưởng ng ((tt tt.) )
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
Trang 4Tính tăng tăng tr trưở ưởng ng ((tt tt.) )
◦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ý
ð
ðẶ ẶC C TR TRƯ ƯNG NG C CỦ ỦA A H HỆ Ệ TH
THỐ Ố NG NG PHÂN PHÂN TÁN TÁN
H
Hệ ệ th thố ống ng phân phân tán tá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 sao sao ph phả ảii dùng dùng HTPT HTPT
ðơn giản là ñể chia sẽ tài nguyên
Tài nguyên có thể
ðĩa từ, bộ xử lý, máy in…
Tập tin, cơ sở dữ liệu, ñối tượng…
Các
Các v vấ ấn n ñ ñề ề chính chính c củ ủa a HTPT HTPT
ðồ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í d dụ ụ HTPT HTPT
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
Trang 5Ví d dụ ụ HTPT HTPT
Mạng di ñộng
Các Các thu thuậ ậtt ng ngữ ữ chính chí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ác
Các thu thuậ ậtt ng ngữ ữ chính chính ((tt tt.) )
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ác Các thu thuậ ậtt ng ngữ ữ chính chính ((tt tt.) )
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ính
Tính không không ñ ñồ ồng ng nh nhấ ấtt
(Heterogeneity)
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
Trang 6Tính m mở ở (Openness) (Openness)
ñược mở rộng hay cài ñặt lại bằng
nhiều cách khác nhau
công bố (API)
mọi người ñồng ý và sử dụng
hệ thống khác nhau lại với nhau
Tính Tính m mở ở ((tt tt.) )
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
◦ 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
ñảm
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
Interfaces
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 ế vào m ộ t interface khác kh ớ p
v ớ i nó
Interfaces
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 ế
n i
M ộ t c ấ u hình k ế t n ố i
khác
Interfaces
!! 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 ố đượ c
Trang 7Sự ự b bả ảo o m mậ ậtt (security) (security)
chống lại các cá thể không ñược
pháp
chống lại các truy xuất tài nguyên
chống lại sự hư hại
Tính Tính b bả ảo o m mậ ậtt ((tt tt.) )
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ính
Tính tăng tăng tr trưở ưởng ng (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
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ính Tính tăng tăng tr trưở ưởng ng ((tt tt.) )
◦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)
Ki
Kiể ểm m soát soát ssự ự c cố ố (Failure (Failure
handling)
◦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
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
Ki Kiể ểm m soát soát ssự ự c cố ố (Failure (Failure 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.)
Trang 8Quả ản n lý lý ssự ự c cố ố (Failure (Failure
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ố
◦ 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?
ð
ðồ ồng ng th thờ ờ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