Từ những chiếc máy tính điện tửđầu tiên đã cho ra đời những hệ thống máy tính hoạt động đơn lẻ với nhau ta gọi là máytính đơn sau đó có thể nối mạng với nhau để trở thành một mạng máy tí
Trang 1LỜI NÓI ĐẦU
Hiện nay thành tựu về Khoa Học - Công Nghệ phát triển mạnh mẽ đã làm thay đổicách nhìn, cách nghĩ của con người từ đó làm thay đổi bộ mặt của xã hội Đặc biệt là sựphát triển vượt bậc trong lĩnh vực công nghệ thông tin Từ những chiếc máy tính điện tửđầu tiên đã cho ra đời những hệ thống máy tính hoạt động đơn lẻ với nhau ta gọi là máytính đơn sau đó có thể nối mạng với nhau để trở thành một mạng máy tính, từ hệ máytính tập trung đã phát triển thành hệ máy tính phân tán Cứ một thành tựu mới ra đờithay thế cho những thành tựu trước đó như vậy đã kéo theo hàng loạt vấn đề nảy sinh.Chẳng hạn như sự ra đời của hệ tin học phân tán đòi hỏi phải có phương tiện, kỹ thuật
để nối hệ thống các máy tính ở nhiều nơi lại với nhau thông qua hệ thống truyền thôngdưới sự điều hành thống nhất của một phần mềm cho phép hoạt động theo kiểu phốihợp lại với nhau nhằm giải quyết một vấn đề chung hay chia sẻ các tài nguyên
Một ví dụ điển hình được đưa ra đối với hệ tin học phân tán như sau Nếu một tàikhoản được mở trong ngân hàng thì mỗi tài khoản sẽ được gán một mã số duy nhất vàđược lưu thành một mẫu tin trong CSDL Chủ tài khoản có thể ở bất kì nơi nào trong cảnước cũng có thể truy cập vào tài khoản của mình thông qua mã số tài khoản đó Giả sửhai vợ chồng cùng nhau mở một tài khoản trong ngân hàng, lúc này đây hai người ở haingân hàng khác nhau cùng truy cập vào tài khoản chung của họ Một người truy cậpvào để rút tiền còn người kia truy cập vào để xem số tiền còn lại của mình Nếu 2 côngviệc này xảy ra cùng một lúc thì vấn đề gì sẽ xảy ra? Vấn đề sai lệch thông tin chongười muốn truy cập để xem số tiền còn lại là điều đương nhiên Ngăn chặn khuyếtđiểm này người ta đưa ra hàng loạt các phương pháp, thuật toán để đảm bảo khi trao đổithông tin vẫn đảm bảo tính gắn bó (nhất quán) trong vấn đề cập nhập thông tin cũngnhư truy vấn thông tin, trong đó vấn đề về sự gắn bó thông tin trong cơ sở dữ liệu phântán là một trong những vấn đề cơ bản
Vì vậy trong nội dung của tiểu luận này em trình bày hai vấn đề sau:
Trang 2Em xin chđn thănh cảm ơn TS Lí Văn Sơn đê cung cấp kiến thức vă tăi liệu để
em có thể hoăn thănh tiểu luận năy
Do thời gian vă kiến thức có hạn nín tiểu luận năy không trânh khỏi những sai sót.Rất mong nhận được sự góp ý của thầy vă câc bạn cùng lớp
CHƯƠNG I CÁC KHÁI NIỆM VỀ HỆ TIN HỌC PHÂN TÁN
1 1 Hệ tin học phân tán.
Hệ tin học phân tán là hệ thống xử lý thông tin baogồm nhiều bộ xử lý hoặc các bộ xử lý nằm ở xa tại các
Trang 3vị trí khác nhau và được liên kết với nhau thông qua phươngtiện viễn thông dưới sự thống nhất của hệ điều hành.
Hệ tin học phân tán là hệ thống không chia sẻ bộ nhớvà đồng hồ Trong hệ tin học phân tán, các tính toán có thểđược tính trên nhiều bộ xử lý hay trên vi xử lý của hệthống đa bộ xử lý Như vậy hệ thống hệ tin học phân tánđòi hỏi hệ thống của mình phải trang bị bộ nhớ cục bộ Cácbộ xử lý trao đổi thông tin qua các hệ thống đường truyềnkhác nhau như là cáp chuyên dụng, bus trao đổi, đường điệnthoại, cáp quang, vv
1 2 Nguyên tắc xây dựng hệ phân tán.
Chia sẻ tài nguyên: Thực tế phát triển mạng máy tínhđặt ra một vấn đề lớn là cần phải dùng chung tài nguyên.Một tiến trình trên một trạm nào đó có thể cung cấp tàinguyên dùng chung ở một trạm khác
Liên lạc: Khi các hệ thống đã được mắc nối với nhau,các thực thể trong hệ có thể trao đổi thông tin với nhau
Tin cậy: Một trạm trong hệ bị sự cố không làm chotoàn hệ ảnh hưởng, mà ngược lại, công việc đó được phâncho các trạm khác đảm nhận Ngoài ra, trạm bị sự cố cóthể tự động phục hồi lại trạng thái ban đầu trước khi cósự cố hay trạng thái ban đầu của nó
Tăng tốc: Đây là khái niệm mới về phân tán tải Một tínhtoán lớn nào đó, nếu chỉ sử dụng một trạm thì thời gian chokết quả lâu Tính toán này được chia nhỏ và thực hiện songsong trên các trạm Điều này cũng cần thiết đối với cáctrạm quá tải
Một trong những tư tưởng lớn của các hệ phân tán làphân tán hoá các quá trình xử lý thông tin và thực hiện cáccông việc đó trên các trạm xa nhau Đó là cơ sở để xây dựngcác hệ ứng dụng lớn như thương mại điện tử, giáo dụcđiện tử, chính phủ điện tử
1.3 Các vấn đề hệ điều hành mạng máy tính
Liên lạc là thuật ngữ được sử dụng chỉ những tác vụtrao đổi thông tin giữa các thực thể thuộc hệ thống, trongđó có một thực thể gửi (trạm phát) và một thực thểnhận (trạm nhận) Thông tin trong quá trình gửi và nhậnđược gọi là thông điệp
Khi một người sử dụng muốn liên hệ với các ngườikhác trong mạng thì người ấy phải có địa chỉ mạng củanhững người cần liên hệ Địa chỉ mạng là hệ thống tên quiước tuân theo nguyên tắc xây dựng nhất định và không trùngnhau Trong mạng, một người sử dụng có thể thể sử dụng
Trang 4một trạm bất kỳ để liên lạc với người sử dụng khác màhọ muốn.
Trên máy chủ gắn liền với người sử dụng, người tathành lập hệ thống tra cứu địa chỉ của mạng và hệ thốngnày phải luôn luôn được làm tươi để đảm bảo thông tin chứatrong nó phản ánh đúng trạng thái thực của hệ Khi ngườisử dụng gửi thông điệp cho người khác ở xa, máy chủ nguồnnơi thông điệp xuất phát phải tra cứu vào đây để xác địnhhướng của luồng thông tin đến máy chủ đích, máy của thôngđiệp đến
Hệ thống hoạt động như vậy gọi là hệ phân tánNhược điểm lớn nhất của hệ này là khi một máy chủ bịsự cố dẫn đến không thể tra cứu thông tin cho các ngườisử dụng gắn liền với nó Để khắc phục điều này người taphân tán các hệ thống tra cứu trên các máy chủ Các hệthống thông tin phân tán dùng cho việc tra cứu trên các máychủ phải giống nhau hoàn toàn
Trong hệ phân tán, thời hạn truyền một thông điệp làhiệu số giữa thời điểm nhận và thời điểm truyền Ta giảsử rằng: thời hạn này đủ lớn để so sánh với hệ tập trung,là một đại lượng biến thiên, và thời hạn đó ở cặp máy nàykhác với cặp máy khác Từ đó ta có các hệ quả như sau:
Hệ quả 1: Ở một thời điểm cho trước, một xử lý đang thực hiện trín một mây chỉ có thể
biết được trạng thâi gần đúng của câc mây khâc
Hệ quả này cho ta biết là trong mạng không tồn tạiđồng hồ chung
Hệ quả 2: Trật tự nhận các thông điệp trên máy nhận có
thể không giống trật tự phát của chính thông điệp đó
Các máy trên trạm có thể bị sự cố và các thông điệpcó thể mất Giải pháp cho vấn đề này là đánh số tất cảcác gói tin gửi đi kèm theo số đó cho máy nhận
Hệ quả 3: Hai máy giống nhau chứa thông tin hoàn toàn giống
nhau lại không bao giờ giống nhau về trạng thái
Trang 5Chương 2 ĐỒNG BỘ HÓA THEO MỘT TRẬT TỰ TỔNG QUÁT CHẶT CHẼ
Như đã đặt vấn đề trong phần đầu, các hệ thống giải quyết vấn đề đồng bộ thôngqua trật tự tổng quát
Trong một số trường hợp cần phải sắp xếp toàn bộ theo kiểu chặt chẻ các sự kiện
của hệ Nguyên lý của vấn đề được khái quát như sau: Một tiến trình nào đó gửi thông điệp để yêu cầu sử dụng tài nguyên, một tiến trình sử dụng xong tài nguyên nào đó truyền một thông tin giải phóng khi nó ngừng chiếm dụng
2.1 Cung cấp phân tán
Vì lý do ổn định và hiệu quả mà ta phải phân tán chức năng cung cấp trên nhiềutrạm khác nhau Sự hoạt động gắn bó với nhau giữa các chương trình cung cấp là rấtcần thiết để đảm bảo cho hoạt động cung cấp được hoàn toàn chính xác
Thuật toán cung cấp cho hệ phân tán
Một sự hoạt động gắn bó của các chương trình cung cấp phân tán quản lý trêncùng một tập hợp các tài nguyên chỉ đạt được nếu tuân thủ các quy tắc sau, ở đây cácthông điệp được hiểu là các yêu cầu hay khuyến nghị giải phóng tài nguyên
1 Các bộ cung cấp bắt buộc phải thực hiện cùng một giải thuật
2 Các bộ cung cấp đều nhận tất cả các thông điệp phát đi từ các tiến trình
3 Các thông điệp phải được xử lý cùng một trật tự như nhau trong các chươngtrình cung cấp
Quy tắc sau cùng nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhất trêntập hợp các thông điệp của hệ Trật tự này có thể được thực hiện thông qua việc hợp lựcgiữa các tiến trình cung cấp giữa các tiến trình phát thông điệp
2.2 Sắp xếp kiểu đóng dấu
Đóng dấu là hành vi gán giá trị nguyên cho một thông điệp nhằm ghi nhận thời
điểm truyền trên cơ sở tham chiếu đồng hồ logic
Trang 6Nội dung cơ bản của phương pháp này là tram phát được gắn một giá trị gọi là dấu Giá trị này có tính chất thời điểm cho trạm phát thông tin và dựa vào đồng hồ logic cục bộ của chính trạm.
Các đồng hồ này được lấy lại thông qua hội thoại giữa các trạm
2.3 Thuật toán trật tự tổng quát chặt chẽ
2.3.1 Thuật toán LamPort
Mỗi trạm s đều có trang bị công tơ với các giá trị nguyên gọi là Hs Đó chính là đồng hồ logic tăng lên giữa hai sự kiện kế tiếp Trạm e phát thông điệp ghi dấu E của mình dựa trên giá trị hiện hành của He Khi nhận được thông điệp, trạm nhận r cập nhật đồng hồ Hr riêng của mình bằng giải thuật sau đây:
Sự kiện “Nhận thông điệp” lúc này được ghi nhận bằng giá trị của Hr Thuật
toán này đảm bảo rằng thời gian nhận thông điệp là sau thời gian phát nó đi
Với thời gian này cho phép xác định một quan hệ trật tự toàn bộ mà ta đã ký hiệu
→ và cho phép kiểm tra được các điều kiện trong C1 và C2 của phần trước.
Một sự kiện a sinh ra trong trạm i và được đánh dấu bởi đồng hồ cục bộ gọi là Hi(a) Nếu a và b đều là hai sự kiện trên hai trạm i và j, ta luôn luôn có qua hệ xác định
như sau:
Đó là trật tự không chặt chẽ do vì hai sự kiện trên hai trạm khác nhau có thể đến cùng một thời điểm giống nhau.
Ta có thể mở rộng quan hệ → thành quan hệ trật tự chặt chẽ => bằng cách kếthợp một số khác cố định cho mỗi trạm và bằng cách đánh dấu thời gian cho mỗi sự kiện
a của trạm i bằng cặp (Hi(a),i).
Nếu Hr, thì
Hr:= E + 1Chấm dứt
a→b <=> Hi(a) < Hi(b)
Trang 7Theo định nghĩa ta có:
2.3.2 Ứng dụng thuật toán trong hệ phân tán
- Trường hợp 1: Các quy tắc cho các thuật toán cung cấp tài nguyên trên hệ phân
tán
1 Các bộ cung cấp bắt buộc phải thực hiện cùng giải thuật
2.Các bộ cung cấp đều nhận tất cả các thông điệp phát đi từ các tiến trình
3.Các thông điệp phải được xử lý cùng một trật tự như nhau trong các chương trìnhcung cấp
Vậy quy tắc 3 nhấn mạnh đến sự thiết yếu phải có một trật tự duy nhất trên tập hợp cácthông điệp của hệ Để thực hiện được điều này à sử dụng thuật toán Lamport
- Trường hợp 2:
* Định nghĩa về mối quan hệ “Xảy ra trước” (happens-before relationship)
+ Khi so sánh những sự kiện trên cùng một máy chủ (Host), nếu sự kiện a xuất hiệntrước sự kiện b, thì a “Xảy ra trước” b
+ Nếu một host tiếp nhận (Receives) một Mesg được gởi (Send) từ một host khác,thì sự kiện Send “Xảy ra trước” Receives
+ Nếu x xuất hiện trong P1 và y xuất hiện trong P2, P1 và P2 không thế hoán đổiMesg cho nhau, thì X và Y gọi là đồng quy (concurrent)
* Những quy tắc được sử dụng cho việc cập nhật giá trị cho đồng hồ logic trên các host:
+ Bộ đếm Counter được tăng trước mỗi sự kiện
+ Trong trường hợp Send, bộ đếm Counter được tăng, sau đó Mesg được gởi Đồngthời Mesg mang giá trị mới của Timestamp
+ Trong trường hợp Receive, hành động đúng được quyết định bởi giá trị củaTimestamp trong Mesg Nếu Mesg có giá trị Timestamp cao hơn nhân (Receiver),đồng hồ logic nơi nhận chấp nhận giá trị được gởi với Mesg Ngược lại, đồng hồ
a => b <=> (Hi(a) < Hi(b))
hay(Hi(a) = Hi(b) và i < j)
Trang 8logic nơi nhận được tăng và Mesg chọn giá trị được chấp nhận là giá trị đồng hồmới.
- Trường hợp 3: Cài đặt đồng hồ lôgic:
B1: Tất cả tiến trình Pi, sử dụng đồng hồ lôgic riêng Ci, giá trị khởi tạo là 0
B2: Trước khi xử lý một sự kiện, Pi thực hiện như sau: tăng giá trị đồng hồ và gáncho sự kiện như là timestamp của nó
Trên một trạm cho trước, việc nhận thông điệp có đóng dấu không thể cho nóbiết được sự kiện nào đến trước hay đang ở trên đường Như vậy, ta còn phải nhậnthông điệp từ các trạm khác còn lại
Trang 9Những ứng dụng mà ta có thể thấy rỏ được của đối tượng phân tán đó là:
Xác định một đối tượng từ xa: Những ứng dụng có thể thu được khi
giải quyết vấn đề xử lý các đối tượng ở xa Vi du như một ứng dụng có thể đăng ký mộtđối tượng từ xa với tên gọi đơn giản dể sữ dụng với RMI, thì trước hết ta phải đăng kýRMI Sự lựa chọn, một ứng dụng có thể giải quyết công việc đi qua và trả lại cho mộtđối tượng ở xa cũng như có thể gọi các bộ phận nhỏ từ xa khác
Cách giao tiếp giữa các đối tượng ở xa: Chi tiết của cách giao tiếp với
các đối tượng ở xa đều được điều khiển bởi RMI Khi đó người lập trình chỉ nhìn vào
sự giao tiếp từ xa giống như gọi một phương thức trong Java
Định nghĩa lớp cho các đối tượng: Bởi vì RMI cho phép những đối
tượng sẻ được chuyển sau và về phía trước, nó cung cấp cở chế để tải những định nghĩacủa lớp đối tượng cũng như để truyền dữ liệu của đối tượng
Trang 10Sự minh họa trong hình vẽ sau miêu tả một RMI phân phối ứng dụng mà sửdụng nới đăng ký RMI để thu được những tham chiếu của các đối tượng ở xa Máy chủgọi đăng ký tới một tên gợi nhớ với đối tượng ở xa Khách hàng xem đối tượng ở xa bởitên của nó trong nới đăng ký của máy chủ và sau đó gọi một phương thức trên nó Sựminh họa cũng chỉ ra rằng hệ thống RMI sử dụng một mạng máy chủ hiện hữu để tảinhững lớp định nghĩa, từ máy chủ tới khách hàng và từ khách hàng tới máy chủ, chonhững đối tượng khi cần thiết
Hình 2.4 Mô hình triệu gọi các đối tượng từ xa
* Tạo các ứng dụng phân tán nhờ sử dụng RMI
Thiết kế và biểu diễn các thành phần ứng dụng phân tán
Biên dịch các file nguồn
Tạo các lớp có thể truy cập mạng
Bắt đầu trình ứng dụng
1.2 Ứng dụng RMI để viết chương trình máy chủ Server
Việc tính toán trên server tiếp nhận yêu cầu từ client, thực hiện việc xử lý yêucầu và trả lại bất kỳ kết quả nào Mã lệnh của server bao gồm có một giao diện và mộtlớp Giao diện định nghĩa những phương thức mà có thể được gọi từ client Thực chất,giao diện định nghĩa cảnh quan của client của đối tượng từ xa Lớp cung cấp sự thựchiện đó là:
Thiết kế một giao diện từ xa: Mục này giải thich việc tính toán giaodiện, mà cung cấp kết nối giữa client và server
Trang 11 Thực hiện một giao diện từ xa: Mục này thăm dò lớp thực hiện giaodiện Compute, do đó mà thực hiện với một đối tượng từ xa Lớp này cung cấp cho phâncòn lại của mã lệnh tạo ra chương trình server, kể cả một hàm main phương thức tạo ramột thể hiện của đối tượng ở xa, đăng ký nó với nới đăng ký RMI và thiết lập ngườiquản lý an toàn.
* Thiết kế một giao diện từ xa
Tại trung tâm của máy tính là một giao thức cho phép những yêu cầu trình bàyvới máy tính, máy tính thực hiện những yêu cầu đó và đưa ra kết quả cuối cùng trả vềcho khách hàng (client) Đây là một giao thức hiển thị trong những giao diện mà đượcmáy tính hổ trợ Những thông điệp từ xa cho giao thức này được minh họa ở hình sau:
Hình 2.5 Triệu gọi lẫn nhau giữa Client và Server
Mỗi giao diện chứa đựng một phương thức đơn Tính toán thực hiện các thao tác
từ xa, Compute, cho phép trình bày những yêu cầu tới máy Giao diện khác hàng, Taskđịnh nghĩa như thế nào để thực hiện tính toán, trình bày một nhiệm vụ
Dưới đây là mã nguồn cho giao diện Compute:
Trang 12Như một giao diện từ xa executeTask là một phương thức của một hệ thống từ
xa Bởi vậy, đây là phương thức được định nghĩa như hiện thân cho khản năng ném mộtjava.rmi.RemoteException Đây là một ngoại lệ được ném ra bởi hệ thống RMI từ mộtlời triệu gọi phương thức từ xa để cho biết rằng việc truyền thông tin bị thất bại hoặcmột lỗi ở giao thức đã xuất hiện Một RemoteException là một phương thức để kiểm trangoại lệ, như vậy bất kỳ mã nguồn nào kéo theo một phương thức từ xa cần điều khiểnngoại lệ này bởi một hoặc bắt nó khai báo throws trong mệnh đề của nó Giao diện thứhai cần cho công nghệ tính toán là giao diện Task, mà là phương thức kiểu tham số củaexecuteTask trong giao diện Compute Giao diện Compute.Task định nghĩa giao diệngiữa công nghệ tính toán và công việc mà nó cần làm, cung cấp cách thức để bắt đầucông công việc Dưới đây là mã nguồn của giao diện Task
Giao diện Task được định nghĩa là một phương thức mà không có những tham
số và không ném ra những ngoại lệ Bởi vì giao diện không mở rộng Remote, phươngthức trong giao diện không cần liệt kê java.rmi.RemoteException trong mệnh đề throwscủa nó
Giao diện Compute chứa phương thức executeTask, quay trả lại kết quả thựchiện của giao diện Task chuyển cho nó Do đó phương thức executeTask có kiểu thambiến của chính nó T, đó là kiểu kết hợp trả về chính nó có kết quả thông qua Task RMI
sử dụng Java xếp theo thứ tự cơ chế để truyền tải những đối tượng có giá trị giữa máy
ảo Java Một đối tượng được xem xét có thể sắp xếp theo thứ tự, lớp của nó phải thựchiện java.rmi.Serializable là giao diện đặc trưng Bởi vậy, những lớp thực hiện giaodiện Task cũng phải thực hiện Serializable, cũng như những lớp của đối tượng sử dụngthay thế cho kết quả yêu cầu
* Thực hiện một giao diện từ xa