1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java

49 793 2
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 49
Dung lượng 1,23 MB

Nội dung

Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java

Trang 1

Tóm tắt:

Trong hệ thống phân tán việc một máy trong hệ thống vì một lí do nào

đó mà nó không thể tiếp tục công việc được nữa điều đó có thể dẫn đến

hệ thống của chúng ta sẽ bị ngừng hoạt động Vì thế việc xây dựng một hệthống khắc phục lỗi cho hệ thống phân tán la rất cần thiết

Khóa luận sẽ trình bày những khái niệm liên quan đến hệ thống khắcphục lỗi(Fault tolerance) và xây dựng một hệ thống khắc phục lỗi bằngngôn ngữ lập trình Java

Trang 2

Lời nói đầu:

Trong bối cảnh hiện nay, máy tính phát triển rất nhanh,Vì thế có rấtnhiều hệ thống ra đời và nhằm mục đích bảo đảm tính an toàn của hệthống chúng ta cần xây dựng cho nó khả năng khắc phục lỗi Hệ thống đãtrải qua rất nhiều thử nghiệm và tỏ ra hiệu quả cho việc giải quyết vấn đề

ổn định trong hoạt động của hệ thống Vì thế trong khóa luận này tôinghiên cứu về vấn đề trên

Bố cục khóa luận gồm 5 chương

Chưong 1: Giới thiệu về hệ thống phân tán và những đặc trưng của nó

mà trong đó fault tolerance là một đặc trưng không thể thiếu được

Chương 2: Giới thiệu một số hệ thống có sẵn

Chương 3: Giới thiệu về công nghệ JXTA

Chương 4: Xây dựng hệ thống

Chương 5: Tổng kết và hướng phát triển tiếp theo

Trang 3

CHƯƠNG 1: Giới thiệu về Fault tolerance

1.1 Giới thiệu về hệ thống phân tán:

Có nhiều định nghĩa khác nhau về hệ thống phân tán (Distributed system)tùy thuộc vào việc xem xét những khía cạnh khác nhau của hệ thống, nhưng về

cơ bản là giống nhau: Hệ thống phân tán là một tập hợp các máy tính độc lậpđược kết nối và giao tiếp với nhau thông qua giao thức truyền thông mạng(communication network), mỗi máy tính có bộ xử lý (CPU), bộ nhớ (memory), và

Hình 1.1: Mô hình hệ thống phân tán

Theo định nghĩa ở trên, một hệ thống phân tán mà ta có thể dễ dàng bắtgặp đó là mạng Internet Internet là một mạng toàn cầu, tập hợp rất nhiều máytính ở những nơi khác nhau lại với nhau Mỗi máy tính là độc lập và có thể giaotiếp được với nhau

Máy tính

Bộ nhớCPUThiết bị ngoại vi

Máy tính

Giao thức truyền thông mạng(TCP/IP, JXTA…)

(Communication network)

Trang 4

1.1.1 Đặc trưng cơ bản của Hệ thống phân tán

Một hệ thống phân tán mang những đặc trưng sau:

1.1.1.1 Resource sharing

Trong hệ thống phân tán, các máy tính độc lập được kết nối và giao tiếpvới nhau, do đó tài nguyên trên mỗi máy có thể chia sẻ, trở thành tài nguyêndùng chung Những máy tính có nhu cầu sử dụng tài nguyên có thể truy cập và

sử dụng tài nguyên trên máy tính khác Những tài nguyên này có thể là phầnmềm, phần cứng hay dữ liệu Như vậy, các tài nguyên sẽ được sử dụng hiệuquả hơn Đơn giản như: Giả sử máy tính A không có máy in và cần in tài liệu.Máy tính B có máy in rảnh rỗi Nếu hai máy tính không được kết nối, ta phải muamột máy in mới cho máy tính A Còn trong hệ thống phân tán, máy tính A có thể

sử dụng máy in tại máy tính B để in Như vậy, chúng ta đã sử dụng máy in ở máytính B một cách hiệu quả hơn và tiết kiệm được chi phí mua máy in cho máy A

1.1.1.2 Concurrency

Các máy tính trong hệ thống phân tán đều có bộ xử lý và bố nhớ riêng,nhờ vậy chúng có thể xử lý công việc Một công việc có thể được chia nhỏ vàchuyển cho từng máy xử lý đồng thời Vì vậy tốc độ xử lý tăng lên Đối với những

xử lý nhỏ thì việc xử lý không mất nhiều thời gian nếu được xử lý trên một máyđộc lập Ngược lại, những việc có lượng tính toán lớn (như việc phá mã) đòi hỏinhiều thời gian, có khi là không khả thi về mặt thời gian Những công việc nhưvậy có thể được thực hiện trong hệ thống phân tán bằng cách chia nhỏ côngviệc, rồi chuyển giao cho từng máy tính thực hiện đồng thời.Kết quả cuối cùngđược tổng hợp dựa trên kết quả xử lý ở từng máy Thời gian xử lý sẽ giảm điđáng kể

1.1.1.3 Fault-tolerance

Các hệ thống máy tính có thể xảy ra lỗi Khi bị lỗi, kết quả của quá trình

xử lý có thể không đúng hoặc làm ngừng hoạt động của hệ thống Trong hệthống phân tán, lỗi là một phần của hệ thống Điều này có nghĩa là một số thànhphần của hệ thống bị lỗi nhưng không ảnh hưởng tới hoạt động của những thànhphần khác, đảm bảo cho hệ thống tiếp tục hoạt động Các phương pháp khắc

Trang 5

phục lỗi cho hệ thống được nhà thiết kế xem xét và áp dụng ngay từ khi bắt đầutiến hành thiết kế và xây dựng hệ thống, đồng thời căn cứ vào đặc điểm và mụcđích của mỗi hệ thống sẽ áp dụng các phương pháp khác nhau Mục đích là đảmbảo cho hệ thống hoạt động ổn định, và duy tri f được hoạt động lâu dài

1.1.1.4 Scalability

Là khả năng mở rộng qui mô hệ thống mà không làm ảnh hưởng đến hiệuquả hoạt động của hệ thống Qui mô của hệ thống được mở rộng khi có các máytính mới hay các thành phần khác của hệ thống được thêm vào Hệ thông phântán được thiết kế để đảm bảo rằng hệ thống vẫn hoạt động bình thường Ví dụnhư khi thêm mới một máy tính vào hệ thống, phải đảm bảo rằng còn địa chỉ IP

để cấp cho máy tính mới Như vậy hệ thống cần có khoảng địa chi IP chưa sửdụng để cấp cho những máy tính thêm mới trong tương lai

1.1.1.5 Openness

Là khả năng mở rộng tài nguyên của hệ thống Tài nguyên của hệ thốngphải được đảm bảo mở rộng một cách dễ dàng, theo nhiều cách Hệ thống cóthể sử dụng các tài nguyên được cung cấp trên các hệ thống khác hoặc thêmmới tài nguyên Tài nguyên có thể là phần cứng, phần mềm hay dữ liệu và luônsẵn sàng cho người sử dụng

1.1.2 Một số mô hình kiến trúc trong các ứng dụng phân tán

Phần này giới thiệu một số mô hình phổ biến xây dựng các ứng dụngphân tán Các mô hình được trình bày theo mức độ trừu tượng từ thấp đến cao:Message Passing, Client-Server, Pear-to-Pear, Distributed object, Mobile agent

level of abstraction

Mobile agent Ditributed object

Client-Server Message passing

Pear-to-pear

low

hight

Trang 6

Như vậy fault tolerance là một trong những đặc trưng của hệ thông phântán Một hệ thống lớn không thể không có Fault tolerance trong đó Vì vậy việcxây dựng một hệ thống có Fault tolerance chúng ta cần tìm hiểu về nó.

1.2 Giới thiệu Fault tolerance:

1.2.1 Giới thiệu

Fault tolerance là một vấn đề được nghiên cứu nhiều trong nghành khoahọc máy tính Để hiểu được vai trò của nó trong hệ thống phân tán trước hếtchúng ta cần nắm rõ từ những khái niệm về hệ thống phân tán cho đến nhữngkhái niệm về Fault tolerance Sự tồn tại của Fault tolerance trong hệ thống phântán là cần thiết Một hệ thống Fault tolerance cần có những tính chất sau đây:

hệ thống có tính sẵn sàng cao sẽ chờ đợi để làm việc trong mọi thời điểm

1.2.1.2 Reliability:

Tức là hệ thống có thể chạy liên tục mà không mắc lỗi Một hệ thống cótính tin cậy cao sẽ duy trì công việc không bị gian đoạn trong một khoảng thờigian khá dài

Trang 7

1.2.1.3 Safety:

Có nghĩa là khi hệ thống tạm thời mắc lỗi thì nó đảm bảo rằng không có gì

là nghiêm trọng xẩy ra cả Ví dụ, nhiều quá trình điều khiển như là điều khiểnnăng lượng điện hay quá trình gửi sóng trong không gian yêu cầu về độ nghiêmngặt và an toàn cao.Chỉ một lỗi nhỏ cũng có thể gây ra những thiệt hại rất lớn

không hoàn thành Một error là trạng thái của hệ thống có thể làm cho hệ thống

không hoạt động Ví dụ, khi gửi các gói trên mạng, sẽ có một vài gói đã bị pháhủy khi chúng đến nơi nhận Sự phá hủy trong trường hợp này có nghĩa là bênnhận đã nhận được không đúng giá trị các bit hoặc thậm chí là nó không thể tìmthấy một số thứ mà nó đã nhận

Nguyên nhân của error được gọi là fault Tức là tìm ra nguyên nhân gây

ra lỗi là quan trọng Ví dụ, đường truyền sai hoặc kém cũng có thể là nguyênnhân gây ra lỗi khi chuyển các gói trên mạng Trong trường hợp này, hệ thống rất

dễ mắc lỗi Tuy nhiên lỗi đường truyền có thể chỉ do nguyên nhân là ảnh hưởngcủa thời tiết xấu mà nhất là trong mạng không dây(Wireless network)

Xây dựng một hệ thống tin cậy cần có quan hệ chặt chẽ với xử lí các lỗi Vì

mục đích đó của chúng ta, vấn đề quan trọng nhất cần đưa ra là “Fault tolerance” có nghĩa là một hệ thống có thể cung cấp các dịch vụ chính xác và

đúng đắn mặc dù hệ thống vẫn có sự hiện diện của lỗi trong đó Mục đích haynhiệm vụ của nó chính là:

+ Ngăn chặn lỗi

Trang 8

+ Gỡ lỗi

+ Dự đoán trước được các lỗi

Faults thường được phân loại thành các loại sau:

+ Lỗi tạm thời

+ Lỗi không liên tục

+ Lỗi lâu dài

 Lỗi tạm thời(Transient fault) nó xẩy ra trong một khoảng thời gian sau đó

nó lại biến mất, ví dụ như một con chim bay qua chùm của sóng ngắn cóthể gây ra lỗi trên

 Lỗi không liên tục( intermittent fault) xuất hiện khi mất sự liên kết hay liênkết là không rõ ràng Lỗi này có thể gây ra hậu quả rất lớn vì nó rất khóchuẩn đoán

 Lỗi lâu dài(Permanent fault) tồn tại mãi cho đến khi nó được khắc phục thìthôi Một số nguyên nhân của lỗi này như là: Cháy chip, rơi đầu từ đĩa, lỗiphầm mềm

1.2.2 Failure Models:

Một hệ thống có lỗi thì nó tất nhiên sẽ không cung cấp được những dịch

vụ mà nó muốn Nếu chúng ta coi hệ thống phân tán như là tập hợp các serverliên kết lẫn nhau và với các client, khi đó chỉ cần một trong các server hay cả hai

bị lỗi thì rắc rối sẽ xẩy ra cho hệ thống Trong hệ thống phân tán thì quan hệ phụthuộc xuất hiện rất nhiều Một lỗi đĩa có thể làm khó cho sự sống của file server.Nếu file server là một phần của dữ liệu phân tán thì việc này sẽ đưa đến dữ liệu

sẽ có thể bị giữ lại và chỉ có thể một phần dữ liệu truyền qua mà thôi.Như vậy lỗi

sẽ gây ra hậu quả khá là nghiêm trọng, để tìm ra lỗi một cách chính xác thì chúng

ta nên đưa ra phân loại về lỗi:

Crash failure

Một crash failure xẩy ra khi server ngừng làm việc nhưng nó vẫn làm việcchính xác cho đến khi nó dừng Một khía cạnh quan trọng của crash failure là mỗimột server tạm nghỉ, không có bất cứ cái gì được nhận từ nó Một ví dụ đặc

Trang 9

trưng của crash failure là hệ điều hành ngừng lại hẳn vaf chỉ có cách là khởiđộng lại máy tính Nhiều hệ thống PC chụi đựng crash failure và coi đó như làmột lỗi thường xuuyên.

Omission failure

Một Omission failure xẩy ra khi lỗi server để trả lời yêu cầu Tất cả mọithứ là không đúng.Có hại loại Omission failure là receive Omission failure vàsend Omission failure Receive Omission failure tức là server chưa bao giờ cóyêu cầu trong công việc đầu tiên Chú ý rằng nó có thể tốt trong hoàn cảnh là liênkết giữa một client và một server đã được thiết lập chính xác nhưng lại không có

gì lắng nghe điều đó Receive Omission failure ảnh hưởng không lớn đến trạngthái hiện tại của server, server không biết có bất kì thông báo nào gửi đến chonó

Tương tự như vậy, send Omission failure xẩy ra khi server kết thúc công việc của

nó Nhưng vì một lí do nào đó mà lỗi trong khi gửi câu trả lời Ví dụ:Khi gửi xẩy ratình trạng bộ nhớ bị tràn trong khi đó thì server lại không chuẩn bị trước điều đó.Chú ý rằng ngược lại với Receive Omission failure server có thể ảnh hưởng đếntrạng thái.Server chỉ hoàn thành môt dịch vụ cho client Kết quả nếu việc gửi gặplỗi trả lời server cần để chuẩn bị rằng client sẽ gửi lại yêu cầu trước đó một lầnnữa

Một loại nữa của Omission failure không liên quan đến kết nối có thể là nguyênnhân do lỗi phần mềm như vòng lặp vô tận hay quản lí bộ nhớ không đúng

Timing failure

Đây là một có quan hệ với thời gian Timing failure xẩy ra khi câu trả lừi

có được nằm ngoài khoảng thời gian cho phép Cung cấp dữ liệu quá sớm có thể

đó là nguyên nhân gây ra sự cố cho bên nhận nếu nó không đủ bộ đệm để giữlại tất cả dữ liệu mà nó vừa được gửi

Response failure

Đây là một lỗi quan trọng xẩy ra khi câu trả lời của server hoàn toàn là

không đúng đắn Có hại loại Response failure có thể xẩy ra là: Value failure và State transition.Ví dụ: một công cụ tìm kiếm có hệ thống trả về là một trang Web

Trang 10

không có liên quan gì đến những cái mà người sử dụng muốn tìm chúng State transition failure được biết đến như là một lọai khác của Response failure xẩy

ra khi server bất ngờ chống lại yêu cầu Ví dụ như một server nhận được mộtthông báo nhưng nó không thể nhận ra được điều đó

Trang 11

1.3 Giới thiệu về Java Migration:

Sự tính toán di động là là một kiểu chương trình đầy triển vọng trên mạng

- hướng ứng dụng Có rất nhiều loại ứng dụng được đưa ra như là: Thương mạiđiện tử, đấu giá trên mạng, tự động tìm kiếm thông tin, hay quản lí công việc tựđộng…

Khả năng để duy trì trạng thái thực thi trong Migration là một tiêu chí quantrọng của phân loại ngôn ngữ lập trình cho sự tính toán di động Migration đượcgọi là trong suốt nếu một ứng dụng di động được tiếp tục lại trang thái (sau khidừng) một cách chính xác trạng thái trước đó Transparent Migration thì đặc biệt

là quan trọng vì nó cho phép người lập trình viết một ứng dụng di động như làviết một ứng dụng thông thường khác mà không là ứng dụng di động

Hệ thống ngôn ngữ di động đầu tiên được biết đến như là Telescrip vàAglet Tct , chúng đều mang cơ chế của Transparent Migration.Tuynhiên,Transparent Migration không được bổ sung trong JAVA - hệ thống ngônngữ di động cơ bản dù cho JAVA là rất phổ biến cho mọi người quan tâm đếntính toán di động Và có một khó khăn trong việc sử dụng Transparent Migrationtrong Java đó là làm sao để giữ được stack trong Migration

Hai phương pháp đã được đưa ra để là được điều đó là:

+ Sử dụng Java virtual machine

+ Thay đổi mã nguồn

Tuy nhiên cả hai phương pháp trên đề có nhứng khó khăn của nó

Phương pháp thứ nhất yêu cầu ứng dụng di động chạy lien tục trên sự thay đổicủa máy ảo, đây là mộ thuận lợi vì điều này có mặt khắp nơi trên hầu hết cácmáy ảo Java Phương pháp sau nó không thể áp dụng được khi mà mã nguồnkhông sẵn sàng để dung.Trong thực tế thì mã nguồn Java thường không sẵn có

Như vậy việc chúng ta đưa ra hai phương pháp trên và sự đối chiếu củahai phương pháp, thì phương pháp chúng ta có thể tránh được những điều trởngại đó, những hạn chế đó Đó là Bytecode Transformation Trong phương phápnày Bytecode thay thế cho mã nguồn được thay đổi thông qua khả năng có thểTransparent Migration Sự biến đổi của bytecode có nhiều thuận lợi hơn so với

Trang 12

sự biến đổi của mã nguồn Đó chính là sức mạnh của ngôn ngữ Java, làm gọnchương trình, nơi mà chỉ sự chuyển đổi của cấu trúc điều khiển mới được phép

Trong hệ thống phân tán thì một client hay một server gặp sự cố đó làđiều có thể hoàn toàn xẩy ra Vì thế khi một client hay server gặp lỗi thì vấn đề

mà chúng ta cần phải giải quyết là làm thế mà để chương trình của chúng ta vẫn

có thể tiếp tục chạy được trong hệ thống Để làm điều đó chúng ta sử dụng cơchế của Transparent Migration Nhưng vấn đề của chúng ta là làm thế nào đểMigration Điều đó được thực hiện bởi 3 bước :

Saving Execution State

Transmitting Execution State

Restore Execution State

Saving Execution State: Khi dự đoán được có thể xẩy ra một lỗi nào đấy

trong hệ thống mà cụ thể ở đây là lỗi trên một máy nào đấy trong mạng thìtrạng thái máy lúc đó phải được lưu lại và đưa vào trong stack, đưa vàocấu trúc dữ liệu

Transmitting Execution State: Khi các trạng thái thực thi đó được lưu lại

bằng cách dùng máy ảo Java, các trạng thái đó sẽ được chuyển đến đích,

là nơi có thể tiếp tục chạy tiếp chương trình

Restore Execution State: Khi được chuyển tới đích, ở đây các trạng thái

thực thi sẽ được tái tạo lại, và tiếp tục thi hành công việc Nó sẽ lấy lại cácgiá trị trong khung stack Công việc ở đây không phải bắt đầu lại từ đầu,

mà nó sẽ bắt đầu từ chỗ mà nó dừng

Trang 13

CHƯƠNG 2: Giới thiệu một số hệ thống hỗ trợ Migration

Hiện nay có rất nhiều hệ thống hỗ trợ cơ chế Migration, mỗi hệ thống đều

có những mặt mạnh và mặt yếu khác nhau Sau đây chung ta sẽ giới thiệu một vài hệ thống cơ bản

2.1 Giới thiệu hệ thống Sumatra:

Sumatra là sự mở rộng của môi trường lập trình Java có khả năng thíchnghi với chương trình di động Nền tảng độc lập chính là lí do chung ta chọnJava cho công việc của chúng ta Trong Sumatra chung ta không thay đổi ngônngữ java Sumatra có thể chạy trên tất cả những gì thuộc về ngôn ngữ java nếukhông có sự thay đổi Thêm tất cả những chức năng được cung cấp bởi lớp thưviên java đưa ra

Thiết kế của chúng ta cho Sumatra cung cấp cơ chế thich ứng với chươngtrình di động Nét đặc trưng chính giúp ta phân biệt Sumatra với các hệ thốngtruớc đó là nó hỗ trợ chương trình ứng dụng cái mà có sự liên kết với tất cả và

sự di chuyển diễn ra có sự điều khiển ứng dụng.Tuy nhiên sự kết hợp giữa mục

đích phân tán và thread migration cho phép trộn lẫn giữa di chuyển giữ liệu hay

di chuyển sự tính toán Ở trình độ cao của điều khiển ứng dụng cho phép chúng

ta dễ dàng khỏa sát những chính sách khác nhau cho sự kiểm tra tài nguyên vàlàm thích ứng với sự thay đổi của tài nguyên

Sumatra thêm hai khaí niệm chương trình vào java đó là object-groups

execution engines Môt object-groups tạo nên một nhóm đối tượng động Đối

tượng có thể thềm vào hoặc lấy ra khỏi nhóm đối tượng Tất cả các đối tượngtrong pham vi một nhóm được đối xử như nhau Điều nay rất giống với ngôn ngữjava vì mỗi cấu trúc giữ liệu là một đối tượng và nó có thể di chuyển trạng thái đối

tượng trong khoảng thời gian Một execution engines là một khái niệm trong môi

trường phân tán.Cụ thể là nó phù hợp để trình biên dịch thi hành trên một host

Sumatra cho phép một object-groups di chuyển giữa execution engines.

Những thứ chủ yếu cung cấp bởi Sumatra gồm:

Trang 14

Object-group migration: object-groups có thể di chuyển giữa các máy

trên yêu cầu của ứng dụng Đầu tiên tất cả các đối tượng trong một groups đuợc đối xử như là khởi đầu cho tính lưu động liên quan đến quá trình hoạt động Đối tượng trong object-groups tự động kiểm soát sử dụng các loại thông tin lưu trong lớp mẫu của chúng Khi một object-groups được di chuyển

object-tất vị trí tham chiêu đến nó trong nhóm được di chuyển và lưu lại vị trí mới củađối tượng.Tuy nhiên một vài đối tựợng như đối tượng I/O thì không thể dichuyển(Tài nguyên)

Remote method invocation: Method invocation trong đối tượng được

chuyển qua gọi là remote Loại thông tin lưu trong lớp mẫu được dùng để hoàn

thành chức năng RPC nếu nó không có một trình biên dịch gốc.Sumatra không

tự động theo dõi đối tượng di động

Thread Migration:Sumatra cho phép một Thread Migration sử dụng

phương thức engine.go() để gửi đi stack và chương trình đếm và di chuyển

thread đến máy cần thi hành theo nghĩa của nó.Quá trình hoạt động được khôi

phục lại tại nơi chỉ dẫn trứơc sau khi gọi hàm go().Nó tự động đưa vào

stack.Trình thông dịc Sumatra duy trì một laọi stack song song với giá trị stack.Nơi giữ của giá trị stack Khi một thread di chuyển Sumatra vận chuyển tất cảđối tượng thamm chiếu bởi stack nhưng không thuộc nhóm đối tượng nào Đối

tượng của object-groups di chuyển khi object-groups di chuyển Sauk hi thread

di chuyển đến nơi mới nó sẽ thực hiên nôi dung trong stack ở vị trị mới

Remote execution: Môt thread mới có thể được tạo ra bởi recec’ing

trong hàm main() của lớp mẩu trong remote engine.Những đặc trưng của thread

mới được sao lại và chuyển đến nơi remote.Không giống với remote method

invocation, remote execution không là một khối Sauk hi hàm main được gọi nó

lập tức khôi phục lại thread và gửi đến remote engine.Remote execution khác vớiThread Migration là nó tạo ra một thread mới và cahỵ đồng thời với Thread gốc

Remote monitoring:Sumatra cung cấp một tài nguyên giao diện kiêm

tra, cái mà có thể được sử dụng bởi ứng dụng để đăng kí nhu cầu kiểm tra

Sígnal handlers:Sumatra cho phép ứng dụng để đăng kí trình xử lí cho

hệ lệnh của UNIX

Trang 15

Một ví dụ về Sumatra :

filter _object = new Lung_filter();

cancerobject = new Lung_checker(filter_object)myengine = System.rpc.myEngine();

//Createaengineatthexraydatabasesite

remote_engine = new Engine("xrays.gov");// Sendthelung filter classtotheremoteengineremote_engine.downloadClass("Lung filter");// Createanewobjectgroup

objgroup = new ObjGroup("lung filter group");// Addthelung filter objectto theobjectgroupobjgroup.checkIn(filter object);

// Movetheobjectgrouptothedatabasesite

objgroup.moveTo(remote_engine);

//aremotemethodcall selectsinterestingxrayssize = filter_object.query(db,"DarkLungs"); // Aretheretoomanyimagestobring over?

Trang 16

result = cancer object.detect cancer();

// displayresult locally

System.display(result);

2.2 Giới thiệu hệ thống TACOMA:

2.2.1 Dự án TACOMA:Mô hình tác nhân hiện nay nhận đựợc nhiều sự chú ý.

Một tác nhân phổ biến nhất là phần mềm thay thế người dùng Và conngười quan tâm đến làm thế nào để chỉ ra cách đối xử với các tác nhân,

và các tác nhân làm thế nào để liên kết với nhau cũng như liên kết vớinhững người khác cao hơn

Trong dự án TACOMA chúng ta chú trọng đến việc hệ điềuhành liên kết với tác nhân máy tính Động cơ của tác nhân máy tính gồm có :

Hình 2.1 A client-server interaction

Trang 17

Hình 2.2 Moving the computation close to the data.

Hình 2.3: Agent sent to the server location

Hình 2.4: Co-locating communicating agents

Chúng ta bắt đầu dự án TACOMA bằng việc nghiên cứu tỉ mỉ làm thếnào hỗ trợ tác nhân trên internet Chúng ta quan tâm tới việc fault –tolerance,quản lí chương trình, bảo mật và sự tính toán của tác nhân

Trang 18

Mô hình TACOMA và sự thực hiện cơ bản của nó:

Trong mô hình kiểu client – server với tính toán phân tán yêu cầuserver phân công rõ các nút Mô hình đưa ra sự tính toán có thể di chuyển tự dotrên mạng Dự án TACOMA chú trọng đến kiểu agent cho tính toán phân tán.Sauđây là các kiểu của hệ thống tác nhân của chúng ta

2.2.2.1 Agents- The computation Unit:

Đầu tiên chúng ta cần ,ột sự khởi tạo tính toán trong hệ thống của chúng

ta Chúng ta sử dụng khái niệm agent cho mọi sự tính toán Ở đây chúng ta cầnphân biệt rõ client- server – agent

Trong mô hình này chúng ta chú ý đến tất cả các agents Một số agentskhông cung cấp bất kì một dịch vụ nào khác, một vài agents cung cấp dịch vụcho những thứ khác, một vài agent dựa vao những agent khác trong khi nókhông làm việc Một vài agents lại đứng một chỗ trong khi nó có thể dii chuyểnquanh

Từ cách nhìn thấp- Một agent chỉ là một quá trình bao gồm code và trạngthái.Một agent đơn giản có thể là một Tcl scrip hay là một chương trình C nhỏ

Tính lưu động là thành phần quan trọng trong agent Trong chính bảnthân nó quyết định khi nào cần di chuyển và di chuyển đến đâu Đây chính là sựkhác biệt so với Migration

2.2.2.2 Folfders, Briefcases và Cabinets – Duy trì trạng thái.

Một agent phải có thể nắm bắt được dữ liệu.Có hai hướng:

Nó có thể để lại dữ liệu tại vị trí chính xác và nó phải có thể mang theo dữ liệu khi

nó di chuyển Chúng ta đưa ra khái niệm folders vì mục đích đó Folder là nơichứa dũ liệu có thể sử dụng bởi agent.Mỗi folder là một tên ASCII.Mỗi Agent có

thể cất hoặc lấy dữ liệu từ folder này Có nhiều loại folder CODE folder là nơi chứa mã nguồn của một agent, DATA folder là nơi chứa dữ liệu, cái có thể hỗ trợ cho CODE folder.

Tập hợp các folders là một Briefcases Briefcases di chuyển khi các agent

di chuyển

Trang 19

Nhưng folders được sử dụng lâu dài được lưu lại một nơi gọi là FileCabinet Không giống như Briefcases mà File Cabinet không di chuyển khi agent

di chuyển mà nó đứng yên Cụ thể về Folder, Briefcases và Cabinet có thể đượcmiêu tả bởi hình sau:

Hình 2.5: Briefcases(with folder) và file Cabinet(with folder)

2.2.2.3 Meet – the Base Abstraction

Một agent có thể Meet Đây là khái niệm sử dụng cho việc giao tiếp và

đồng bộ giữa các agents.Để thi hành nó ta gọi như sau:

Meet another_agent Briefcases

Agent không giao tiếp bởi sự trao đổi mail.Một meet đơn giản giống như

là xác định và thay đổi một Briefcases Một agent Client có thể yêu cầu một

dịch vụ từ agent hệ thống Agent hệ thống có thể trả lại folder kết quả nếu nócần

Hình 2.6:Meeting giữa hai agent

Trang 20

Nơi để meet

Agent phải có khả năng di chuyển,Có nghĩa là nó có khả năng di chuyển tựnhiên từ máy này đến máy khác trên mạng

Chúng ta làm một sự di chuyển trong suốt với người lập trình ứng dụng

Đầu tiên chúng ta cần loại bỏ hết rexec agent.

Meet rexec Briefcase Briefcase có một CONTACT folder nơi gặp gỡ với các HOST folder ,

ví dụ như ag_tcl lấy từ CODE folder và chạy nó

Meet ag_tcl Briefcase

Sau đó chúng ta cố gắng loại bỏ sự hoat động của HOST folder

Hình 2.7: Moving một agent như là một phần của Briefcase

2.2.2 Cài đặt TACOMA và một ví dụ đơn giản:

2.2.3.1 Một ví dụ Agent đơn giản

Chúng ta xây dựng và thi hành một vài phiên bản của hệ thống phân tánTACOMA , nơi di chuyển sự tính toán và thực hiện trên môi trường mạng khôngđồng nhất.Chúng ta sử dụng Tcl để viết một agent đơn giản

Trang 21

GUI agent có thể được tạo thông qua Tcl _ Tk Tk là bộ công cụ cho X –Windows system.

Chúng ta sẽ nhìn vào một ví dụ đơn giản để minh họa cho các đặc trưng

của hệ thống TACOMA Ví dụ chúng ta cần gửi một thông báo” Lunch now – DJ” Thông báo phải được hiển thị trên dev/console bởi ag_echo.

bc_create out_bc

folder_store out_bc HOST odin

folder_store out_bc DATA “lunch now - DJ”

folder_store out_bc OUTPUT /dev/console

meet ag_echo out_bc

Quá trình thực hiện điều đó chúng ta có thể hình dung bỏi hình vẽ 2.8 như sau:

Trang 22

Hình 2.8:Remote echoing example

2.2.3.2 Cài đặt TACOMA

web:httphttp://www.cs.uit.no/DOS/Tacoma/ và down file có têntacoma_v1.0.dist.tar.gz Chúng ta có thể đặt file này vào thư mục gốc hoặc nơinào đó cho thuận lợi Vidụ: /users/dag/TACOMA/src/

Chúng ta giải nén nó vào thư mục tacoma chúng ta tạo

gunzip tacoma_v1.0.dist.tar.gz

Trang 23

tar xf tacoma_v1.0.dist.tarThư mục chứa 6 thư mục con

• bin/ nơi chứa tcltcp và wishtcp Files chứa đụng phiên bản của Tcl-TCP

và Tk- TCP

• lib/ nơi chứa ag_echo và ag_tcl, thư mục này chỉ chứa Tacoma.tcl file

này chứa thủ tục Tcl như folder_store, bc_create

• man/ chứa trang hướng dẫn

• cabinets/, Nơi chứa cabinets.

• examples/ Nơi chứa ví dụ về TACOMA agent

• sysagents/ Nơi chứa ag_wish

Thư mục Tacoma chỉ chứa hầu hết agents cần cho hệ thống TACOMA

setenv HOST hugin

Tên host của bạn trong ví dụ này là hugin Sau đó là biến môi trừờng củaTACOMA cần được lập:

setenv TACOMAPATH /users/dag/TACOMA/src/tacoma setenv TACOMAPORT 13147

Dấu hiệu khởi động thành công:

=> [1] 27301

TACOMA v1.0

Agent tac_firewall started at hugin (on port 13147)

Trang 24

Date: Wed Mar 1 11:27:22 MET 1995

Path: ‘/users/dag/TACOMA/src/tacoma’

Starting tac_rpc done

2.3 Giới thiệu hệ thống Voyager,Aglets:

Voyager là một hệ thống được viết bằng ngôn ngữ java hỗ trợ cơ chếMigration trong môi trừơng thực thi và tác tử di động.Nó cũng hỗ trợ cho cácmạng không đồng bộ nhưng không hỗ trợ khả năng noncooperation

2.3.1 Starting và stopping một chương trình Voyager

Để khởi động Voyager chúng ta dùng Voyager.startup()

Startup()

Khởi động Voyager như một client không chấp nhận đến sự kết nối với cácchương trình từ xa

startup( String url )

Khởi động Voyager như một server có chấp nhận đến kết nối, mỗi điạc chỉ URL hoặc cổng ngẫu nhiên nêu URL là rỗng (null)

startup( Object object, String url )

Có thể tóm lại như sau:

Voyager.startup(); // startup as a client

Voyager.startup( null ); // startup as a server on a

random unassigned port

Voyager.startup( "8000" ); // startup as a server on port8000

Voyager.startup( "//dallas:7000" ); // startup as server

on port dallas:7000

Voyager.startup( "//10.2.2.20:7000" ); // startup as

server on port 10.2.2.20:7000

Để tắt một Voyager chúng ta dùng Voyager.shutdown()

Ngày đăng: 27/04/2013, 17:47

HÌNH ẢNH LIÊN QUAN

Hình 1.1: Mô hình hệ thống phân tán - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 1.1 Mô hình hệ thống phân tán (Trang 3)
Hình 1.1 : Mô hình hệ thống phân tán - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 1.1 Mô hình hệ thống phân tán (Trang 3)
1.1.2. Một số mô hình kiến trúc trong các ứng dụng phân tán - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
1.1.2. Một số mô hình kiến trúc trong các ứng dụng phân tán (Trang 5)
Tóm lại các loại của Failure được cho bởi bảng tổng kết sau đây: - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
m lại các loại của Failure được cho bởi bảng tổng kết sau đây: (Trang 10)
Hình 1.3. Bảng tổng kết các loại failure - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 1.3. Bảng tổng kết các loại failure (Trang 10)
2.2.1. Dự án TACOMA:Mô hình tác nhân hiện nay nhận đựợc nhiều sự chú ý. - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
2.2.1. Dự án TACOMA:Mô hình tác nhân hiện nay nhận đựợc nhiều sự chú ý (Trang 16)
Hình 2.1  A client-server interaction. - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.1 A client-server interaction (Trang 16)
Hình 2.2. Moving the computation close tothe data. - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.2. Moving the computation close tothe data (Trang 17)
Hình 2.3:  Agent sent to the server location. - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.3 Agent sent to the server location (Trang 17)
Hình 2.2.  Moving the computation close to the data. - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.2. Moving the computation close to the data (Trang 17)
Hình 2.6:Meeting giữa hai agent - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.6 Meeting giữa hai agent (Trang 19)
Hình 2.5: Briefcases(with folder) và file Cabinet(with folder) - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.5 Briefcases(with folder) và file Cabinet(with folder) (Trang 19)
Hình 2.5: Briefcases(with folder) và file Cabinet(with folder) - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.5 Briefcases(with folder) và file Cabinet(with folder) (Trang 19)
Hình 2.6:Meeting giữa hai agent - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.6 Meeting giữa hai agent (Trang 19)
Hình 2.7: Moving một agent như là một phần của Briefcase - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.7 Moving một agent như là một phần của Briefcase (Trang 20)
Hình 2.7: Moving một agent như là một phần của  Briefcase - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.7 Moving một agent như là một phần của Briefcase (Trang 20)
Quá trình thực hiện điều đó chúng ta có thể hình dung bỏi hình vẽ 2.8 như sau: - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
u á trình thực hiện điều đó chúng ta có thể hình dung bỏi hình vẽ 2.8 như sau: (Trang 21)
Hình 2.9:Bảng tổng kết các hên thống hỗ trợ Migration - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.9 Bảng tổng kết các hên thống hỗ trợ Migration (Trang 25)
Hình 2.9:Bảng tổng kết các hên thống hỗ trợ Migration - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 2.9 Bảng tổng kết các hên thống hỗ trợ Migration (Trang 25)
Hình 3.1 - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 3.1 (Trang 26)
Hình 3.2 - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 3.2 (Trang 27)
3.1.4. Tổng quan về mô hình mạng JXTA - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
3.1.4. Tổng quan về mô hình mạng JXTA (Trang 28)
Hình 3.4 - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 3.4 (Trang 29)
Hình 3.5 - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 3.5 (Trang 30)
Hình 3.7 - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 3.7 (Trang 31)
Như vậy chúng ta có thể phân cấp cho các gaio thức JXTA như hình vẽ sau: - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
h ư vậy chúng ta có thể phân cấp cho các gaio thức JXTA như hình vẽ sau: (Trang 32)
Hình 3.10 - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 3.10 (Trang 37)
Hình 3.11 - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 3.11 (Trang 42)
Mô hình hệ thống có thể được hình dung bởi hình vẽ sau đây: - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
h ình hệ thống có thể được hình dung bởi hình vẽ sau đây: (Trang 43)
Hình 4.2: Giao diện chương trình Tổ chức hệ thống: - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 4.2 Giao diện chương trình Tổ chức hệ thống: (Trang 45)
Hình 4.2: Giao diện chương trình Tổ chức hệ thống: - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 4.2 Giao diện chương trình Tổ chức hệ thống: (Trang 45)
Hình 4.3 Tổ chức của công việc Thread Migration - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 4.3 Tổ chức của công việc Thread Migration (Trang 46)
Hình 4.3 Tổ chức của công việc Thread Migration - Trình bày các khái niệm liên quan đến hệ thống khắc phục lỗi và xây dựng một hệ thống khắc phục lỗi bằng ngôn ngữ lập trình Java
Hình 4.3 Tổ chức của công việc Thread Migration (Trang 46)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w