MỤC LỤC
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.Tuy nhiên,Transparent Migration không được bổ sung trong JAVA - hệ thống ngôn ngữ di động cơ bản dù cho JAVA là rất phổ biến cho mọi người quan tâm đến tính toán di động. • 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ào cấ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.
Khi một object-groups được di chuyển 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ể di chuyển(Tài nguyên). 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.
Và con ngườ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ới những người khác cao hơn. 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. Từ cách nhìn thấp- Một agent chỉ là một quá trình bao gồm code và trạng thái.Một agent đơn giản có thể là một Tcl scrip hay là một chương trình C nhỏ.
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. 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án TACOMA , 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. 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ác mạng không đồng bộ nhưng không hỗ trợ khả năng noncooperation.
Để khởi động Voyager server bằng dòng lệnh chúng ta dùng tiện ích của Voyager.Tiện ích này khởi động một Voyager server chấp nhận sự kết nối và thông báo trên URL nhất định. Một số hệ thống khác: Ngoài các hệ thống trên thì còn có rất nhiều hệ thống khác cũng hỗ trợ cơ chế Migration như Telescrips,Emerald, Arachne….Mỗi một hệ thống đều mang một đặc trưng khác nhau. Hầu hết các hệ thống đều được viết bằng ngôn ngữ java ngoài một số hệ thống như TeleScript, Emerald, Arachne, được viết bằng chính ngôn ngữ của nó hay được viết bằng ngôn ngữ C, C++.
Khái quát hóa giao vận là không cần thiết, TCPlà giao thức phổ biến hiện nay tại sao ta không chọn luôn giao thức TCP. + Khả năng phối hợp hoạt động (Interoperability):Đây là một đặc tính quan trọng của JXTA, tức là các peer dễ dàng định vị lẫn nhau và dễ dàng trao đổi thông tin với nhau cũng như các peer dễ dàng tham gia vào các hệ thống P2P khác nhau. + Không phụ thuộc vào platform (Platform independence ) Tức là nó không phụ thuộc vào ngôn ngữ lập trình, không phụ thuộc vào hệ điều hành và không phụ thuộc vào thủ tục mạng, giao thức mạng (TCP/IP, Bluetooth…) Tóm lại JXTA có thể chạy trên nhiều ngôn ngữ lập trình, nhiều giao thức và hệ điều hành khác nhau.
+ Lớp ứng dụng (JXTA Applications):Quản lí các ứng dụng P2P do người dùng xây dựng và tích hợp các ứng dụng P2P, có thể phối hợp các ứng dụng P2P khác nhau. + Giao thức phát hiện peer (Peer discovery protocol): Cho phép một peer tìm thấy thông báo quảng bá (advertisement) trên các peer khác hoặcbdùng để tìm bất cứ peer, nhóm peer hay thông báo quảng bá nào. + Giao thức phân tích địa chỉ peer(Peer resolver protocol): Cho phép một peer gửi và nhận các truy vấn (queries) để tìm (find, search) peer, nhóm peer, ống và các thông tin khác.
+ Giao thức thông tin peer (Peer information protocol): Cho phép một peer tìm hiểu được khả năng và trạng thái của peer khác. + Giao thức nối ống (Pipe Binding protocol): Cho phép các peer thiết lập kênh truyền thông ảo như một đường ống (pipe) giữa chúng và các peer khác. +Giao thức định tuyến điểm cuối (Endpoint routing protocol): Cho phép một peer hỏi một peer định tuyến về các đường chuyển thông điệp tới một peer đích.
- Môi trường cộng tác phát triển trên nền web (jxta.org) - Được sự hỗ trợ rất lớn của cộng đồng các nhà phát triển P2P.
Giao thức JXTA được xây dựng từ các message XML, mỗi message là một tài liệu XML, tài liệu XML được định nghĩa như một phần của liên kết (communication) và dữ liệu của liên kết. JXTA cho Java giữ nguyên những mặt mạnh của JXTA và mở rộng khả năng quản lý, điều khiển bằng cách thêm vào các đặc tính hướng đối tượng của Java. Ngoải ra còn có giao thức thông tin giữa các peer khác, nó chỉ đơn giản như lệnh ping trong mạng, chỉ khác nó còn mang thêm những thông tin khác của peer.
Đây là một trong những API động, lý do là vì nó sử dụng nhiều dạng khác nhau của pipe, nó được truy cập thông qua lớp PipeService. Lớp PipeService không định nghĩa các pipe, nó chỉ tạo ra và quản lý các pipe, các pipe được định nghĩa đầy đủ trong giao diện các lớp InputPipe và OutputPipe. Sự khác biệt giữa router vả endpoint router là router là được thực hiện trên peer thay vì các phần đặc biệt của phần cứng và phần mềm.
Trong tương lai có thể sẽ xuất hiện router JXTA chuyên dụng nhưng có thuận lợi lớn là bạn có thể sẽ tự mình định tuyến. API này chắc chắn là có hiệu quả thấp hơn so với router chuyên dụng, nhưng endpoint router được xây dựng để định tuyến trong những điều kiện xấu nhất của mạng LAN, firewall, proxy server,. Nhớ rằng khi một peer là thành viên của một group, nó có thể được định vị thông qua dịch vụ tìm kiếm bởi các peer khác trong group đó.
Tất cả các peer đểu là thành viên của group World nên chúng đều có thể nhìn thấy các peer khác bằng dịch vụ tìm kiếm peer của group World.
Khi một ứng dụng của người dùng được đưa vào thông qua một cổng giao tiếp giữa người dùng và hệ thống. Tại đây nó sẽ xét xem ở đâu có thể chạy được ứng dụng đó, nếu ứng dụng đang chạy mà gặp phải một lí do nào đó mà nó không thể chạy tiếp (Máy hỏng,lỗi phần mềm…) nó sẽ tự động chuyển sang một nơi khác chạy tiếp. Khi ưng dụng được hoàn thành , nó sẽ đưa kết quả ra cổng giao tiếp và trả lại kết quả cho người dùng.
Introspection là thư viện cung cấp các hàm giống như là thư viện chuẩn của java. Thread Externalization chuyển các trạng thái của thread đang chạy thành dòng byte và nó được sử dụng bởi Thread Migration để di chuyển Thread giữa các máy ảo Java. Để minh họa cho họat động của hệ thống chúng ta một vài ví dụ trên hệ thống như chương trình in ra các số nguyên từ 1 đến 1000 hay chương trình in ra các số trong dãy Fibonaci.
Ta đưa chương trình vào hệ thống và Start hệ thống.Khi muốn dừng chương trình chúng ta Stop hệ thống và chuyển sang một máy khác và Start lại hệ thống.