HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA ĐÀO TẠO SAU ĐẠI HỌC
CƠ SỞ DỮ LIỆU NÂNG CAO
CƠ SỞ DỮ LIỆU NÂNG CAO
Đề tài: TÌM HIỂU MOBILE AGENTS
Học viên : Nguyễn Văn Khánh Vũ Hoàng Phi
Đỗ Quang Nghĩa Phạm Thành
Trung
Nguyễn Văn Thịnh Nguyễn Hoàng
Tùng
Lớp : Khoa học máy tính
Khóa : Cao học 2013 - Đợt 1
Giảng viên hướng dẫn : TS. Phạm Thế Quế
Hà Nội, tháng 4 năm 2014
1
Hà Nội, tháng 4/2014
2
Mục lục
PHẦN 1: GIỚI THIỆU VỀ AGENT
1.1. Tổng quan về Agent
Không có một định nghĩa cụ thể nào về agent, nhưng có thể hiểu, agent là một thực thể đặc
biệt có tính tự chủ, tức là có khả năng thích ứng và tương tác với môi trường xung quanh nó.
Agent có thể là con người, máy tính, một thành phần phần mềm, hoặc rất nhiều thực thể khác.
Trong lĩnh vực lập trình hướng Agent, ta hiểu agent như một thành phần phần mềm.
Hay trong cuốn “Artificial Intelligence A Modem Approach”, Russell & Norvig đưa ra định
nghĩa về Agent “Một Agent có thể được nhìn theo hướng là mọi cái mà có thể cẩm nhận được
môi trường của nó thông qua bộ cảm biến và có hành động đáp ứng lại với môi trường thông qua
các effector”
Agent có một số các đặc trưng mà có thể phân biệt nó với các đối tượng khác như:
Tính tự chủ (autonomous_khả năng hoạt động mà không cần đến sự can thiệp trực tiếp từ bên
ngoài và có thể tự kiểm soát được hành động và trạng thái của mình).
Tính xã hội (social_khả năng tương tác với môi trường và các agent khác để thực hiện tác vụ).
Tính phản ứng (reactive_khả năng đáp ứng lại các agent khác hoặc môi trường chứa nó, agent
có thể tự sửa đổi các hành vi của mình nếu như có xảy rất hay đổi trong môi trường).
Tính hướng đích (proactive_hành động của agent để đạt được mục đích đã được thiết lập
ngay từ đầu).
Ngoài ra, tùy vào từng ứng dụng cụ thể mà agent còn có một vài đặc tính khác như: tính di
động, tính trung thực, tính sẵn sang, tính hợp lý, tính tự học….
1.2. Nền tảng xây dựng Agent – JADE
1.2.1. Giới thiệu
JADE là một phần mềm thuộc ngôn ngữ Java, nó đơn giản hóa việc cài đặt hệ thống multi-
agent thông qua một middle-ware phù hợp với các tiêu chuẩn kĩ thuật của FIFA và thông qua các
công cụ đồ họa hỗ trợ cho các phase triển khai và sửa lỗi. Nền tảng agent có thể được phân tán
trên các máy khác nhau mà không cần phải chia sẻ cùng một hệ điều hành và cấu hình có thể
được điều khiển thông qua một giao diện từ xa. Việc cấu hình có thể được thay đổi theo thời gian
thực thi bởi sự chuyển đổi agent từ một node sang một node khác khi có yêu cầu.
3
Các ứng dụng thông minh, các cách giải quyết, các thông tin, các tài nguyên và việc điều
khiển có thể được phân tán một cách rộng rãi trên mạng. Môi trường này có thể giúp giải quyết
các vấn đề linh hoạt bằng các điểm, trong JADE còn gọi là các agent. Các agent vừa có khả năng
yêu cầu vừa có khả năng đáp ứng yêu cầu.
JADE có các đặc điểm sau:
• Tương tác: Trong JADE các agent có thể làm việc với các agent khác tuân thủ theo các
giao thức được đặt ra.
• Tính đồng nhất và tính linh hoạt: JADE cung cấp một tập các API đồng nhất nó độc lập
với mạng và với các phiên bản của JAVA
Dễ sử dụng: Sự phức tạp của JADE được thể hiện bên dưới tập các APIs đơn giản.
Nguyên lý pay-as-you-go (Pay immediately): Lập trình viên không cần sử dụng tất cả các chức
năng mà JADE cung cấp. Các chức năng không được sử dụng thì không yêu cầu các lập trình
viên phải biết về chúng.
1.2.2. Kiến trúc JADE
JADE có các thư viện dùng cho việc phát triển các ứng dụng agent và môi trường thực thi, nó
cung cấp các dịch vụ cơ bản và nó phải được kích hoạt trước để giúp cho các agent hoạt động.
Mỗi trường hợp của JADE thực thi được gọi là container. Một tập các container được gọi là
platform, nó cung cấp một lớp đồng nhất trong suốt với các agent. Các thành phần trong kiến trúc
JADE có thể được biểu diễn như hình bên dưới.
CT_bảng quản lý container: đăng kí các đối tượng tham chiếu và địa chỉ của tất cả các
container thành phần trong platform
• GADT_bảng quản lý các agent: nơi đăng kí của tất cả các agent trong platform bao gồm
trạng thái hiện thời và vị trí của chúng
• AMS và DF: hai agent đặc biệt cung cấp agent quản lý và dịch vụ trang trắng, mặc định
dịch vụ trang vàng cho platform.
AMS giám sát toàn bộ platform, là nơi để tất cả các agent liên hệ để truy cập vào trang trắng
của platform cũng như để quản lý vòng đời của chúng. Mọi agent đều được yêu cầu đăng kí
với AMS với một AID
• LADT_bảng quản lý các agent cục bộ: nơi đăng kí của các agent tại container đó.
4
1.3. Sự cần thiết của Mobile Agent
Agent Mobility là một trong những tính năng của Agent một Mobile Agent là một chương
trinh có khả năng di chuyển một cách tự trị từ nút mạng này sang nút mạng khác và thực hiện các
xử lý thay thế cho con người để đạt được mục tiêu được giao phó. Khi di chuyển, các Mobile
Agent đóng gói mã nguồn, dữ liệu và cả trạng thái thi hành, nhờ vậy Mobile Agent có thể dừng
việc thi hành đang thực hiện tại máy này, di chuyển sang máy
Trước đây ta biết đến một số mô hình phân tán cổ điển như: client-server, remote
execute….Tuy nhiên, ngày nay sự phát triển không ngừng của các kỹ thuật tiên tiến về máy tính,
đặc biệt là các giải pháp mạng, cùng với sự bùng nổ nhanh chóng các dịch vụ và nguồn thông tin
trên mạng đã làm gia tăng số người sử dụng Internet đến con số hàng trăm triệu, các đặc điểm của
nguồn thông tin, tổ chức mạng, cũng như việc khai thác, xử lý thông tin ngày càng trở nên phức
tạp và đa dạng hơn. Các ứng dụng phân tán phát triển theo mô hình client-server truyền thống tỏ
ra một số bất lợi vì đòi hỏi làm việc đồng bộ, đòi hỏi đường truyền băng thông cao, độ trễ thấp và
cuối cùng là các dịch vụ thiếu linh động, khó thay đổi hay bổ sung. Trong mô hình REV, thay vì
yêu cầu thực hiện các hàm từ xa thì client chỉ việc gởi mã nguồn các hàm của nó đến server và
yêu cầu server thực hiện rồi trả về kết quả. Ý tưởng chủ đạo của mobile agent là di chuyển xử lý
đến gần nguồn dữ liệu, nhờ đó có thể giảm tải mạng, khắc phục tình trạng trễ, hỗ trợ xử lý không
đồng bộ và tạo ra sự tương thích mạnh trên các môi trường không đồng nhất.
Sự khác nhau giữa các mô hình được thể hiện qua hình sau: khác và khôi phục lại sự thi hành
tại máy đích.
5
PHẦN 2: MOBILE AGENT
1. Giới Thiệu Về Mobile Agent
Ngày nay, các máy tính và các thiết bị di động ngày càng trở nên phổ biến, tuy nhiên việc
sử dụng có hiệu quả các tài nguyên trên mạng gặp phải một số khó khăn. Trước hết, các máy tính
di động không có kết nối thường trực vào mạng Internet và thường không được kết nối
(disconnect) trong một khoảng thời gian dài. Thứ hai, khi máy tính được kết nối thường có băng
thông thấp, độ trễ cao và hay bị hỏng đột ngột. Chẳng hạn như có một tắc nghẽn về tín hiệu từ
modem. Thứ ba, do máy tính có thể sử dụng các kênh truyền khác nhau phụ thuộc vào vị trí vật
lý của nó, sự thực hiện kết nối mạng có thể rất đa dạng. Cuối cùng, phụ thuộc vào bản chất của
kênh truyền, máy tính có thể gán địa chỉ mạng khác nhau mỗi lần nó được kết nối. Mobile Agent
ra đời, giúp giải quyết những vấn đề trên.
Mobile Agent là một mô hình hiệu quả cho các ứng dụng phân tán, và đặc biệt thích hợp
cho các máy tính kết nối cục bộ. Các máy tính kết nối cục bộ gồm các máy di động như là laptop,
máy tính tại nhà và máy tính cơ quan có gắn modem, thường kết nối với mạng qua kết nối SLIP
hay PPP. Các thiết bị này thường không được kết nối (disconnect) trong một khoảng thời gian
dài, thường có băng thông trễ, kết nối mạng không tin cậy, và thường thay đổi địa chỉ mạng qua
mỗi lần kết nối.
Một Mobile Agent có thể ra khỏi một máy chủ, di chuyển trên mạng Internet và thu thập
thông tin cho người dùng (user) của nó. Nó truy xuất tài nguyên một cách có hiệu quả vì nó di
chuyển đến các vị trí trên mạng, đưa yêu cầu và lấy kết quả trả về qua một máy tính băng thông
thấp. Vì nó không tiếp tục liên lạc với máy tính chủ , agent không chịu ảnh hưởng bởi sự mất kết
nối đột ngột, và có thể tiếp tục công việc của nó thậm chí ngay khi user tắt máy hay ngắt kết nối
khỏi mạng. Khi User kết nối lại, agent sẽ trả về cho máy chủ kết quả sau quá trình di chuyển trên
mạng. Ngược lại, một ứng dụng sống trên mạng cũng có thể gởi một mobile agent cho máy chủ.
Agent này hoạt động như một đại diện cho ứng dụng, tương tác với user một cách có hiệu quả.
Các Mobile Agent dễ phát triển, kiểm tra và triển khai các ứng dụng phân tán vì chúng giấu
các kênh truyền. Chúng loại trừ nhu cầu phát hiện và quản lý các hỏng hóc trên mạng; chúng
không đòi hỏi cài đặt lại các phần mềm ở mỗi site ( mặc dù hệ thống agent phải có ). Mobile
Agent đưa người lập trình ra khỏi mô hình client-server đến mô hình peer-to-peer uyển chuyển,
trong đó nút nào là client và nút nào là server là phụ thuộc vào nhu cầu hiện tại. Mobile agent cho
phép những ứng dụng dễ dàng thay đổi, tùy thuộc vào yêu cầu công việc, mobile agent có thể di
chuyển tới vị trí mạng thích hợp nhất.
2. Các Lý Do Sử Dụng Mobile Agent
6
Mặc dù công nghệ mobile agent áp dụng vào nhiều lĩnh vực, sự quan tâm của chúng ta tập
trung vào lợi ích của chúng trong việc tạo ra các hệ thống phân tán. Sau đây là các lý do mà
chúng ta dùng mobile agent:
1. Giảm lưu lượng tải trên mạng
Các hệ thống phân tán thường dựa vào các giao thức liên lạc tương tác lẫn nhau để hoàn
thành công việc. Việc này dẫn đến có nhiều dữ liệu chuyển tải trên mạng. Mobile agent giải quyết
vấn đề băng thông mạng của client/server. Băng thông mạng trong ứng dụng phân tán là tài
nguyên rất có giá trị. Một giao tác hay vấn tin giữa client và server có thể đòi hỏi nhiều lần di
chuyển trên mạng để hoàn thành. Mỗi cuộc di chuyển trên mạng sẽ cần băng thông. Trong một hệ
thống với nhiều clients và nhiều giao tác, tổng băng thông đòi hỏi có thể vượt quá băng thông
hiện có. Mobile agent cũng hữu ích khi nó giảm lượng dữ liệu thô lưu truyền trên mạng. Khi dữ
liệu thô được lưu trữ ở các host từ xa, các dữ liệu này sẽ được xử lý ở đó. Phương châm rất đơn
giản : đưa chương trình xử lý đến dữ liệu thay vì kéo dữ liệu về để xử lý.
2. Khắc phục độ trể trên mạng
Các hệ thống thời gian thực như robot, trong các tiến trình sản xuất, cần đáp ứng ngay với
tác động của môi trường bên ngoài. Điều khiển các hệ thống như vậy qua mạng sẽ có một độ trễ
nhất định. Đối với các hệ thống thời gian thực, độ trễ như vậy là không chấp nhận được. Mobile
agent đưa ra một giải pháp, chúng được gởi đi từ một trung tâm điều khiển hoạt động một cách
cục bộ và thực hiện trực tiếp theo chỉ dẫn của trung tâm điều khiển đó.
3. Khả năng gói gọn các giao thức
Khi dữ liệu được trao đổi trong một hệ phân tán, mỗi host sẽ có mã cài đặt các giao thức cần
để mã hóa dữ liệu và mã biên dịch dữ liệu đến một cách tương ứng. Tuy nhiên, các giao thức lại
chứa các yêu cầu mới về tính hiệu quả và an toàn, do đó, nó sẽ cồng kềnh, nặng nề. Kết quả là
các giao thức lại trở thành một vấn đề về độ trễ. Ngược lại, mobile agents có thể di chuyển tới
một host ở xa để thiết lập một kênh giao tiếp dựa trên các giao thức riêng.
4. Khả năng thực hiện một cách không đồng bộ và tự quản
Thông thường, các thiết bị mobile phải dựa vào các kết nối mạng không thường xuyên và
chậm. Công việc đòi hỏi một kết nối liên tục giữa thiết bị mobile và một mạng cố định sẽ không
kinh tế. Đề giải quyết vấn đề này, công việc đó sẽ được nhúng vào trong các mobile agent, và
chúng được gởi đi trên mạng. Sau khi được gởi đi, các mobile agent trở thành độc lập và có thể
thực hiện một cách không đồng bộ và tự quản. Sau đó, thiết bị di động có thể kết nối lại và nhận
lại agent.
5. Khả năng thích nghi một cách tự động
Mobile Agent có khả năng cảm nhận môi trường thực hiện và tự phản ứng lại để thay đổi.
6. Khả năng khắc phục tình trạng không đồng nhất
7
Mạng máy tính về cơ bản là không đồng nhất, cả về khía cạnh phần cứng và phần mềm. Các
mobile agent chỉ phụ thuộc vào môi trường thực hiện, chúng cung cấp điều kiện tối ưu cho sự
tích hợp các hệ thông không tương tự với nhau.
7. Khả năng có khả năng tự sửa sai
Khả năng phản ứng lại của mobile agent đối với các tình huống và sự kiện không thuận lời,
và vì vậy làm cho nó dễ xây dựng các hệ thống phân tán tự sửa sai. Nếu một host bị tắt, tất cả các
agent đang thực hiện trên máy đó sẽ được cảnh báo và có một khoảng thời gian để di chuyển qua
host khác và tiếp tục thực hiện các phép toán trên host khác.
Trên đây là các lý do, sự cần thiết của mobile agent. Phần tiếp theo, chúng ta sẽ đi sâu nghiên
cứu các khái niệm trong Mobile Agent.
3. Định Nghĩa Mobile Agent
Như ở trên ta đã biết, agent là một chương trình trợ giúp con người và hoạt động nhân danh
họ. Vậy có thể đưa ra một định nghĩa về Mobile Agent như sau :
1. Mobile Agent
Là một chương trình có thể di chuyển từ máy này qua máy khác trong một mạng không đồng
nhất. Chương trình sẽ chọn di chuyển khi nào và di chuyển tới đâu. Khi di chuyển, nó mang theo
trạng thái và mã lệnh đến môi trường thực hiện trên mạng, và tại đó, agent sẽ tiếp tục thực hiện .
Nó có thể tạm dừng thực hiện công việc tại một điểm tùy ý, di chuyển tới một máy khác và tiếp
tục công việc đang thực hiện. Sau khi tương tác với các agent và tài nguyên trên mỗi máy mà nó
di chuyển đến, cuối cùng nó trở về site chủ khi nhiệm vụ đã xong.
• Trạng thái : các giá trị thuộc tính của agent giúp xác định phải làm gì khi tiếp tục thực
hiện tai nơi đến.
• Mã lệnh : Trong một ngữ cảnh hướng đối tượng, nó là mã lệnh của class cần thiết đề agent
thực hiện.
2. Vòng đời của một Mobile Agent
Mọi Mobile Agent đều thực hiện tuần tự theo logic: Đầu tiên, Mobile Agent được tạo ra, di
trú từ host này sang host khác theo lịch trình, thực hiện các nhiệm vụ được giao và cuối cùng bị
huỷ sau khi đã hoàn thành nhiệm vụ.
8
3. Cơ Chế Di Chuyển Của Một Mobile Agent
Mobile Agent sẽ tự quyết định đóng gói và di trú đến môi trường khác để thực thi là đặc
điểm nổi bật của Mobile Agent. Khi có nhu cầu di trú Mobile Agent sẽ tạm dừng thực thi mã,
thực hiện lưu trạng thái của đối tượng (có thể có khả năng lưu lại cả trạng thái thi hành). Sau khi
mã hoá dữ liệu Mobile Agent sẽ được truyền đi trên hệ thống mạng. Khi đến đích, Mobile Agent
sẽ thực hiện các bước ngượi lại với bên gửi để khôi phục lại trạng thái của Mobile Agent và tiếp
tục thực hiện nhiệm vụ.
Cơ chế di chuyển của mobile agent
4. Định nghĩa mở rộng về mobile agent
9
Một mobile agent là một thực thể phần mềm tồn tại trong một môi trường phần mềm. Nó kế
thừa một số tính chất của một agent. Một mobile agent phải chứa tất cả các mô hình sau :
Mô hình agent : Mô hình này định nghĩa cấu trúc thông minh bên trong của một agent. Nó
định nghĩa tính đặc trưng về tính tự trị, cộng tác agent. Ngoài ra, nó còn mô tả bản chất phản ứng
lại (reactive) của agent.
Mô hình life-cycle : Mô hình này định nghĩa các trạng thái thực hiện khác nhau của một
agent và kết quả có được từ sự di chuyển từ nơi này sang nơi khác. Vì vậy, nó liên hệ chặt chẽ với
mô hình tính toán, mô hình này mô tả sự thực hiện xảy ra như thế nào. Ngày nay, hầy hết các mô
hình life-cycle là mô hình xử lý liên tục, được chấp nhận bở Telescript và AgentTCL, và mô hình
trên cở sở giao việc, được chấp nhận bởi Aglets. Mô hình dựa trên task based bắt đầu ở trạng thái
‘start’. Kế tiếp, phụ thuộc vào tập các điều kiện được tiến hành thông qua mạng các nhiệm vụ.
Mỗi công việc có trạng thái riêng của nó. Tuy nhiên, khi agent di chuyển đến nút mới, ngữ cảnh
của công việc đang thực hiện bị mất. Trước khi di chuyển, agent phải chỉ ra công việc đầu tiên
được bắt đầu trên nút đến. Sự linh hoạt của hướng tiếp cận này bị giảm vì đánh mất thông tin ngữ
cảnh trong quá trình di chuyển.
Mô hình tính toán : Mô hình này định nghĩa một mobile agent thực hiện như thế nào khi nó
đang trong trạng thái ‘running’ (chạy). Sự tính toán xảy ra trong một môi trường và được làm cho
dễ dàng bởi một số vi xử lý. Vi xử lý có thể là CPU của máy tính hay trừu tượng hơn có thể là
một máy ảo trong java. Một tập các chỉ thị cơ sở là một phần của mô hình này. Nó định nghĩa khả
năng tính toán của một agent. Nó bao gồm các chỉ thị thao tác dữ liệu và các chỉ thị điều khiển
luồng.
Mô hình tính toán giúp cho một mobile agent có thể truy xuất tới các mô hình khác, do đó,
cấu trúc của mô hình tính toán ảnh hưởng đến tất cả các mô hình khác. Nếu chúng ta có một mô
hình tính toán tổng quát và mạnh, chúng ta sẽ phải quan tâm đến ảnh hưởng của nó trên khía cạnh
life-cycle, an toàn, thông tin và di chuyển của một mobile agent.
Mô hình an toàn : Sự an toàn của mobile agent có thể được chia làm hai phần :
Bảo vệ các nút host khỏi sự phá hoại của các mobile agent: Một hệ thống mobile agent là
một hệ thống mở. Vì vậy, giống như mọi hệ thống mở khác, các host là các đối tượng có
thể bị chịu các hình thức tấn công cả cũ lẫn mới. Sự tấn công vào host rơi vào các trường
hợp sau:
• Rò rỉ dữ liệu bởi những người không có quyền
• Dữ liệu giả: dữ liệu bị thay đổi bởi những người không có thẩm quyền
• Bị đáng cắp dữ liệu
• Dữ liệu bị phá hoại
Các phương pháp phá hoại, tấn công cổ điển bao gồm việc nghe lén, giả danh, đưa ra các
thông báo giả, lặp đi lặp lại các thông báo và virus. Một mobile agent có thể dùng bất kỳ
một trong các phương thức tấn công này.
Tuy nhiên, do mã lệnh mobile agent được thực hiện bởi một host. Vì vậy, mobile agent có
thể tự động truy xuất đến một số tài nguyên của các host. Với mức truy xuất này, mobile
agent có thể gia tăng sự tấn công bằng cách biến đổi các agent cục bộ khác, truyền virus.
Hướng tiếp cận chuẩn cho vấn đề này là loại bỏ tất cả các mã lạ từ các chương trình xâm
nhập vào host. Nhưng phương pháp này không thể khả thi trong môi trường mobile agent.
Telescript đưa ra một giải pháp cho vấn đề này. Telescript đưa ra ba cơ chế được áp dụng
ở các mức độ khác nhau:
Truy xuất (agent) an toàn và bảo đảm: cho phép tương tác an toàn giữa các agent
và giữa agent với host. Nó đạt được điều này bằng cách dùng các danh hiệu đã
10
được xác nhận, các tham khảo đã được bảo vệ, giao thức tin cậy cho agent gặp
các agent khác và hosts.
An toàn của hệ thống: điều khiển việc truy xuất đến hệ thống cung cấp tài
nguyên. Điều này đạt được bằng cách đưa việc truy xuất các tài nguyên này qua
các đối tượng proxy có hiệu quả. Các cơ chế proxy sau đây được truy xuất file
ngoài, truy xuất qua mạng, và chức năng quản trị.
An toàn trên mạng: thông qua việc dùng chính sách khu vực, kênh an toàn và
giới hạn ‘xuất cảnh’.
Bảo vệ các mobile agent khỏi sự phá hoại của các host: các host sẽ thay đổi trạng thái
hay mã lệnh của agent, hoặc xóa các agent. Vấn đề nguy hiểm là các agent không thể tự
bảo vệ khỏ sự phá hoại của host, vì các agent phải phơi bày dữ liệu và mã lệnh cho môi
trường của host để nó cung cấp phương tiện cho agent hoạt động.
Hiện tại, người ta hoàn toàn nhất trí rằng không thể bảo vệ các agent khỏi sự phá hoại của
các host nguy hiểm. Công cuộc nghiên cứu hiện tại đang tìm kiếm những biện pháp là bắt
buộc phải có một host an toàn.
Mô hình thông tin liên lạc: Mobile agent không thể hữu dụng nếu chúng không thể liên lạc
được với các thực thể khác trong môi trường tính toán. Các thực thể này gồm users, các agent
khác (tĩnh hay động), môi trường mobile agent và các hệ thống khác như CORBA dựa trên hệ
thống phân tán.
Liên lạc được dùng khi truy xuất các dịch vụ vượt ra ngoài mobile agent, trong quá trình
cộng tác, kết hợp giữa mobile agent và các thực thể khác.
Một giao thức là một sự cài đặt của mô hình liên lạc. Hiện tại có rất nhiều giao thức từ mức
cơ bản nhất (email RPC) cho đến mức tổng quát và phức tạp hơn (Knowledge Query and
Manipulation Language - KQML). Các giao thức thay đổi phụ thuộc vào loại của các thực thể
liên lạc. Con người không muốn liên lạc với agent qua giao thức KQML, chúng ta thích dùng
ngôn ngữ con người hơn, hay tương tác với nhau qua hệ thống GUI trực quan. Do đó có nhiều
giao thức được dùng trong liên lạc, các mobile agent cần nhiều mô hình liên lạc. Với nhiều giao
thức dùng trong liên lạc sẽ dẫn đến nhu cầu biên dịch giữa các giao thức. Khả năng biên dịch như
vậy có thể ở trong một mobile agent hay có thể là một hợp đồng từ một dịch vụ chuyển dịch bên
ngoài.
Mô hình di chuyển: Cuối cùng chúng ta quan sát khía cạnh di chuyển của mobile agent.
Mô hình này quan tâm tất cả các khía cạnh di động của agents từ sự phát hiện và giải pháp của
host đến agent theo cách mà mobile agent được chuyển đến. Hiện nay, mô hình này đang được sự
chú ý nhất của các nhà nghiên cứu. Hầu hết các nhà nghiên cứu trong lĩnh vực này đều đồng ý
các mục sau phải được quan tâm:
Qui ước đặt tên cho tất cả các thực thể trong hệ thống mobile agent (agents,
hosts, dịch vụ,…)
Truy xuất thông tin bất chấp môi trường mobile agent từ xa
Khả năng để di chuyển một mobile agent đang trong trạng thái ‘tạm dừng’ – sẵn
sàng để di chuyển đến một host từ xa.
Khả năng di chuyển một mobile
agent – đang trong trạng thái ‘tạm dừng’ – đến một môi trường agent từ xa.Khả
năng nhận mobile agent ‘tạm dừng’ từ một host ở xa và khôi phục nó lại trong
một môi trường mới.
Java Aglet: Aglet giới thiệu một bước nhảy vọt về lập trình agent trên Internet, mã
chương trình được gởi đi cùng với thông tin trạng thái (state information). Aglet là các đối tượng
java có thể di chuyển từ một host này đến một host khác trên Internet. Một aglet đang thực hiện
11
trên một host có thể dừng thực thi, tự gởi chính nó đến một host khác, và tiếp tục thực hiện tại
host đó. Khi aglet di chuyển, nó mang theo mã chương trình thực thi. Aglet là một mobile java
agent hỗ trợ khái niệm chương trình tự quản trị cũng như tự định hướng lấy lộ trình di chuyển. Ta
có thể xem aglet như sự tổng quát hóa và mở rộng của applets và servlets. Server của aglet cung
cấp một môi trường cho aglet một cơ chế an toàn khi nhận aglets. Như vậy, Aglet là sự kết hợp
agent và applet.
Aglet API : là một công cụ phát triển agent, nói cách khác, Aglet API là một tập các lớp
(classes) và giao tiếp (interface) cho phép ta tạo các mobile java agents. Vấn đề mới của aglet
API là sự mở rộng khái niệm ‘viết một lần, thực thi mọi nơi’ của chương trình java để áp dụng
cho mobile agent. Đó là ‘ viết một lần, di chuyển mọi nơi‘. Nghĩa là, một khi ta đã tạo ra một
aglet, nó sẽ thực hiện trên các máy có hỗ trợ Aglet API. Aglet API phản ánh mô hình applet trong
java. Lúc này, ta không cần quan tâm đến phần cứng hay hệ điều hành, hay sự cài đặt cụ thể của
Aglet API trên host mà aglet đang hoạt động. Aglet API thực chất là mô hình applet trong java.
Mục đích là đưa tính di động vào applet.
4. Các Thành Phần Của Một Hệ Thống Mobile Agent
Hai thành phần cơ bản trong mô hình mobile agent là agent và môi trường thực hiện của nó –
place.
1. Agent
Một mobile agent là một thực thể có 5 thuộc tính: trạng thái, sự cài đặt, giao tiếp, danh hiệu
và người ủy nhiệm. Khi một agent di chuyển trên mạng, nó mang theo các thuộc tính này cùng
với nó.
12
Trạng thái: cần thiết cho agent để tiếp tục thực hiện chương trình sau khi di chuyển. Khi
một agent di chuyển, nó mang theo trạng thái hiện tại cùng với nó, và trạng thái này được nó
dùng để tiếp tục thực hiện chương trình tại host đến. Đối với hầu hết các ngôn ngữ lập trình, ta có
thể chia trạng thái của agent ra làm hai: trạng thái tự nhiên – bao gồm cả bộ đếm chương trình,
khung hoạt động stack, và trạng thái của đối tượng (chứa giá trị của các biến trong đối tượng).
Cài đặt: cần thiết cho việc thực hiện chương trình của agent độc lập với vị trí. Giống như
mọi ngôn ngữ lập trình khác, một mobile agent cần mã để thực hiện. Khi nó di chuyển, nó sẽ
mang theo một tùy chon để cho host đến biết là nó đang mang theo mã cài đặt, hay là phải kiểm
tra xem mã đã có chưa, và sẽ lấy mã còn thiếu trên mạng.
Giao tiếp: cần thiết cho việc liên lạc của agent. Một agent cung cấp một sự giao tiếp để các
agent khác và hệ thống tương tác với nó. Các agent khác giao tiếp với nó thông qua một tập các
phương thức như là tri thức (knowledge) query và ngôn ngữ giao tác (manipulation language)
(KQML).KQML là ngôn ngữ để liên lạc giữa các agent. KQML đưa ra các kiểu thông báo đa
dạng để diễn đạt nội dung trao đổi.
Danh hiệu: cần thiết để nhận dạng và định vị các agent. Mỗi agent có một danh hiệu duy
nhất trong suốt thời gian hoạt động. Danh hiệu này có thể là sự kết hợp danh hiệu của người ủy
nhiệm và một chuỗi số. Vì danh hiệu của agent là duy nhất và không thể thay đổi được, nó được
dùng như một khóa trong các thao tác tham khảo đến thể hiện của agent.
Người ủy nhiệm: cần thiết để xác định trách nhiệm về sự hợp pháp. Người ủy nhiệm là
một thực thể mà danh hiệu của người đó được các hệ thống chấp nhận và cho phép truy xuất. Một
người ủy nhiệm có thể là một các nhân, một tổ chức hay một công ty. Đối với agent, có cả 2
người ủy nhiệm chính:
• Nhà chế tạo: nhà cung cấp cài đặt của agent.
• Người chủ: người có trách nhiệm về các hành vi của agent (ví dụ như người tạo ra
aglet).
2. Môi trường hoạt động – Place
Là môi trường mà agent hoạt động. Ta có thể xem nó như là một điểm vào cho các agent
đang muốn thực hiện. Place cung cấp một tập các dịch vụ mà agent có thể dựa vào đó để hoạt
động bất chấp vị trí hiện tại của nó. Ta có thể xem place là hệ điều hành cho agent. Trong place,
có 4 nội dung đóng vai trò quan trọng :
13
Bộ xử lý : máy ảo cho các places
Tài nguyên : cơ sở dữ liệu, CPU, và các dịch vụ do host cung cấp
Vị trí : địa chỉ mạng của một place
Người ủy nhiệm : trách nhiệm việc quản lý các thao tác trên một place.
Bộ xử lý : máy ảo cho các places. Bản thân place không thể thi hành các agent. Để thực hiện
điều đó, các agent phải có trong nó một bộ xử lý. Bộ xử lý phục vụ như một máy ảo cho các
places và agent của chúng. Nó cung cấp cho các places, các agent và các đường kết nối tới mạng.
Trong hệ thống mobile agent dựa trên java, bộ xử lý tương tự như máy ảo của java và hệ điều
hành.
Bộ xử lý định nghĩa một cấu trúc phả hệ như trong hình. Một máy tính trên mạng có thể quản
lý nhiều bộ xử lý ; Mỗi bộ xử lý có nhiều places, và mỗi place chứa nhiều agents.
Tài nguyên : Bộ xử lý và place cung cấp việc điều khiển truy xuất đến các tài nguyên và
dịch vụ cục bộ như mạng, cơ sở dữ liệu, các vi xử lý và bộ nhớ, đĩa, các phần cứng cũng như các
dịch vụ phần mềm.
Vị trí : địa chỉ mạng của place. Vị trí đóng vai trò quan trọng cho các mobile agent. Vị trí của
một agent đang thực hiện là sự kết hợp giữa tên của place (mà nó đang thực thi trong đó) và địa
chỉ mạng của bộ xử lý (mà place đang tồn tại trong đó). Vị trí được viết như một địa chỉ IP và
cổng của bộ xử lý.
14
Sự ủy nhiệm : trách nhiệm về việc quản lý các thao tác trên một place.
5. Các Phương Thức Cơ Bản Trong Agent
1. Tạo Agent
Một agent được tạo trong một place. Việc tạo có thể từ một agent khác trong cùng một place
hoặc bởi một agent ở ngoài place. Người tạo ra agent phải có quyền trên place, thiết lập quyền và
ủy nhiệm quyền đó cho agent. Người tạo ra agent cũng cung cấp các tham số ban đầu cho agent.
Lớp định nghĩa cần để khởi tạo agent có thể nằm ở host cục bộ hay ở một host từ xa, hay nếu cần
thiết, có thể được cung cấp bởi người tạo. Việc tạo agent gồm 3 bước :
• Gán danh hiệu : Lớp cài đặt được nạp vào, thực hiện, và đối tượng agent được tạo. Lớp
agent chỉ ra cả phần giao tiếp và phần cài đặt của agent. Place gán một danh hiệu duy nhất
cho agent.
• Khởi tạo : Agent khởi tạo bằng các tham số khởi tạo do người tạo cung cấp. Chỉ khi nào
việc khởi tạo hoàn thành, thì agent mới được gọi là tạo xong trong place.
• Tự thực hiện : Sau khi được tạo trong place, agent bắt đầu thực thi. Giờ đây, nó có khả
năng thực hiện độc lập và có thể tương tác với các agent khác trong cùng place.
2. Hủy Agent
Vậy agent sẽ kết thúc như thế nào ? Sự hủy bỏ một agent có thể do bản thân nó thực hiện,
hoặc bởi một agent khác cùng trong place, hoặc bởi một agent không cùng trong một place. Một
agent có thể được hủy bởi hệ thống do một trong các lý do sau :
- Hết thời gian tồn tại
- Không một ai tham khảo hay sử dụng agent này nữa
- Agent vi phạm một số quy tắc an toàn
- Hệ thống bị shutdown
Quá trình hủy bỏ một agent gồm 2 bước:
- Chuẩn bị hủy: Agent có một khoảng thời gian để kết thúc công việc hiện tại trước khi bị
hủy.
- Tạm dừng công việc: Place dừng việc thực thi của agent
3. Di chuyển Agent
Quá trình di chuyển có thể được khởi tạo bởi chính agent, hoặc bởi một agent khác trong
cùng place, hoặc bởi một agent đang tồn tại ngoài place. Sau đó, agent được gởi đi từ place hiện
tại và được nhận bởi place đến.
Cả hai places hiện tại và đến đều quản lý tiến trình gởi. Khi place gởi kết nối được với place
đến, thì place đến hoặc hoàn thành tiến trình hoặc trả về một thông báo lỗi cho place gởi. Nếu
place gởi không kết nối được với place đến thì nó sẽ gởi một thông báo lỗi đến agent.
Gửi agent: Khi một agent chuẩn bị cho một cuộc di chuyển, nó phải nhận biết được nơi đến
của nó. Khi vị trí của nơi đến đã xác định, mobile agent thông báo cho hệ thống agent cục bộ: nó
muốn di chuyển đến hệ thống agent đến. Thông báo này được gửi qua một lệnh API bên trong
giữa agent và hệ thống agent. Khi hệ thống agent nhận được yêu cầu di chuyển của agent, nó sẽ
thực hiện các việc sau:
• Tạm dừng agent: agent được cảnh báo về việc di chuyển sắp xảy ra, và được cho phép
chuẩn bị khởi hành
15
• Phát hành agent: Agent – trạng thái và lớp của nó – được phát hành bởi bộ xử lý. Phát
hành là tiến trình tạo một đại diện của đối tượng agent để di chuyển sắp xảy ra, và được
cho phép chuẩn bị khởi hành.
• Phát hành (Serialize) agent: Agent – trạng thái và lớp của nó – được phát hành bởi bộ xử
lý. Phát hành là tiến trình tạo một đại diện của đối tượng agent để di chuyển trên mạng.
Sự phát hành agent bao gồm cả trạng thái thực hiện của nó.
• Mã hóa agent phát hành: lúc này, bộ xử lý sẽ mã hóa agent phát hành cho một giao thức di
chuyển đã chọn.
• Gởi agent đi: Bộ xử lý thiết lập một kết nối mạng với host đến và chuyển agent phát hành
đã mã hóa đến đó.
Tiếp nhận Agent: Trước khi một bộ xử lý nhận agent, nó phải xác định liệu nó có chấp
nhận một agent đến từ host gửi hay không. Chỉ sau khi người gửi xác nhận với bộ xử lý nơi nhận,
thì tiến trình nhận agent xảy ra như sau:
• Nhận agent: Khi bộ xử lý nơi nhận đồng ý cuộc di chuyển, agent đã mã hóa được tiếp
nhận.
• Giải mã: bộ xử lý sẽ giải mã agent đến
• Seserialize agent: đại diện của agent được tạo. Lớp agent được khởi tạo và trạng thái
của agent chuyển đến được phục hổi.
• Tiếp tục thực hiện agent: agent tiếp tục thực hiện công việc đang thực hiện tại nơi đến.
Di chuyển lớp Agent: Agent không thể tiếp tục thực hiện trong bộ xử lý cũ ở nơi đến mà
không có lớp của nó. Có một số phương pháp để lớp agent hiện diện tại bộ xử lý của nó, phụ
thuộc vào vị trí của lớp:
• Lớp đã có ở nơi đến: trong trường hợp này thì không cần di chuyển lớp. Agent được
chuyển đến chỉ cần chứa thông tin để nhận diện lớp, chẳng hạn như tên lớp. Nó cũng
có thể chứa thêm thông tin mô tả vị trí của định nghĩa lớp.
16
• Lớp ở nơi gửi: Nếu lớp có ở nơi gửi - và thường là trong trường hợp này – nó được
chuyển đi một cách dễ dàng cùng với trạng thái của agent đến bộ xử lý của nơi đến.
Mã theo nhu cầu: trường hợp này lớp có tại server và bộ xử lý của nơi đến phải lấy lớp tại
server. Trong trường hợp này, bộ xử lý của nơi đến phải thực hiện thêm một kết nối mạng để lấy
lớp agent.
Sau khi một agent được khởi tạo, nó thường tạo ra các đối tượng khác. Dĩ nhiên, lớp của
các đối tượng này cần cho việc tạo đối tượng và cần để tiếp tục việc thực thi. Nếu bất kỳ lớp nào
không tồn tại cho bộ xử lý, nó phải được chuyển đến từ nơi gửi hay từ người gửi agent.
6. Sự di chuyển của Mobile Agent
Mobile agent có tất cả các đặc trưng mà một agent thông thường có, ngoài ra chúng có
thêm một đăc trưng nữa là khả năng có thể di chuyển được trong cùng một nền tảng hay giữa các
nền tảng để hoàn thành công việc được giao.
Di chuyển agent là một phương thức của agent có thể được khởi tạo bởi chính agent, hoặc
bởi một agent khác trong cùng Place, hoặc bởi một agent đang tồn tại ngoài Place. Sau đó, agent
được gửi đi từ place hiện tại và được nhận bởi Place đến.
Cả hai Place hiện tại và Place đến đều quản lý tiến trình gửi. Khi Place gửi kết nối được với
place đến thì place đến hoặc hoàn thành tiến trình hoặc trả về một thông báo lỗi cho place gửi.
Nếu place gửi tkhoong kết nối được với place đến thì nó sẽ gửi một thông báo lỗi đến agent.
1. Di chuyển bên trong platform
JADE cung cấp một dịch vu platform được gọi là Agent Mobility Service mà thực thi di
chuyển bên trong nền tảng. Nó cung cấp phần mềm agent để di chuyển giữa các container khác
nhau trong cùng một nền tảng. Tuy nhiên, cơ chế này không cho phép các agent chuyển tới một
container thuộc platform khác.
1. MOBILITY ACCESSORS - truy nhập di động
17
Trong JADE di chuyển agent được điều khiển đơn giản thông qua phương thức doMove()
ở lớp Agent void doMove(Location destination )
Đối số destination phải là một đối tượng của lớp implement từ interface Location. Trong
JADE platform có hai class implement từ interface này, cả hai đều trong gói jade.core.mobility.
• Đầu tiên là ContainerID được sử dụng để thông báo đích của agent là container của
platform nào nơi mà nó đang chạy.
• Thứ hai là PlatformID được sử dụng để định danh đích của agent là main container của
một platform khác. Khi một platform từ xa được chỉ định như là đích của agent di chuyển,
cơ chế di chuyển bên trong platform
Mỗi lần phương thức khởi tạo này được gọi thì sẽ diễn ra tiến trình di chuyển agent tới
container đích đã thiết lập. Phần lớn code để đạt được điều này nằm trong gói jade.core.mobility.
Lời gọi phương thức doMove() được chuyển tiếp tới Agent Mobility Service thông qua phương
thức move() trong nó. Hành động đầu tiên để thay đổi trạng thái của agent từ ACTIVE sang
TRANSIT để agent dừng và tạm hoãn các hoạt động hiện thời của nó trong khi platform định vị
lại nó. Người dùng có thể xác định các hoạt động được kích hoạt khi một tiến trình agent di động
được bắt đầu, ví dụ như lưu trạng thái của agent. Những hoạt động được xác định bằng cách nạp
chồng phương thức trong lớp Agent:void beforeMove()
Một phương thức tương tự được gọi afterMove() có thể xác định xác định kích hoạt hoạt
động được thực hiện sau khi agent di chuyển, trược khi nó lấy lại trạng thái ACTIVE trong địa
chỉ đích.
2. AGENT SERIALIZATION - Nối tiếp agent
Sau khi gọi beforeMove(), hỗ trợ đưa ra một lệnh thẳng đứng (vertical command) yêu cầu
agent phải di chuyển tới container đích sau lệnh đó.
• Nếu lệnh chứa một đối tượng đích, là một thể hiện của lớp PlatformID, dịch vụ di chuyển
giữa các nền tảng sẽ khởi tạo di chuyển agent tới một platform đã được chỉ định.
• Khi đối tượng đích là một thể hiện của lớp Container, dịch vụ di chuyển agent sẽ khởi
tạo di chuyển agent tới container đích tại platform hiện tại.ContainerID của bất kì
container nào đều có thể được yêu cầu lấy từ AMS agent và khởi tạo nó từ lớp
ContainerID.
Di chuyển của một agent phải bao gồm truyền ít nhất là code và data và có thể có trạng
thái. Trong JADE các mô hình agent, trạng thái thực thi của chúng là dữ liệu bên trong agent, do
đó nó chỉ cần truyền code và data. Dữ liệu được chứa trong đối tượng java miêu tả agent đó.
Truyển các đối tượng này với code của nó sẽ đủ để khôi phục nó tại đích.
Java serialization được sử dụng để truyền một agent qua một kết nối mạng bằng cách đệ
quy ghi lại các giá trị thành viên bên trong agent thành một dòng byte. User phải xác định các dữ
liệu thành viên nào được truyền cùng với agent sử dụng bộ điều chỉnh tạm thời.
Ví dụ: nếu một agent có thang viên FileInputStream và nó không được khai báo là chuyển
tiếp, quá trinh di chuyển sẽ lỗi và ném trả NotSerializableException.
3. MOBILE AGENT CLASSLOADER
Mỗi agent khởi tạo theo thứ tự, nó được truyền tới container đích bằng một lệnh nằm
ngang(horizontal).
Tuy nhiên JADE container thường được đặt ở các vị trí khác nhau trên máy ảo java trên
các host khác nhau. Nếu một agent chuyển từ một host này tới một host khác những lớp file gốc
của nó cũng phải sẵn có như là deserialization tiến trình của một đối tượng agent tại container
18
đích của nó yêu cầu gọi một cấu trúc lớp. Để quản lý điều này, dịch vụ agent mobility sử dụng
một xây dựng một lớp tải khả năng nạp của các lớp yêu cầu của container từ xa thông qua lệnh
ngang. Mỗi container nhận yêu cầu vị trí, yêu cầu file và gửi nó tới container yêu cầu.
Nếu quá trình thực hiện của agent thành công, một luồng được tạo cho đối tượng tái sinh
và một tiến trình “power up” được thực thi để restart lại agent. Tất cả các bản tin được gửi trong
suốt quá trình di chuyển sau đó được loại bỏ từ một bộ đệm tạm thời tại các container gốc và
chuyển hướng về phía vị trí agent mới. Cuối cùng, tại các container nguồn agent di chuyển vào
tình trạng GONE, chỉ ra rằng một di chuyển đã thành công và bản sao địa phương hiện nay nên
được terminated. Các afterMove () được gọi và agent đã chuyển tới container.
4. AGENT CLONING-bản sao agent
JADE cũng cung cấp một cơ chế cloing để đưa ra một bản sao của agent sử dụng phương
thức: public void doClone(Location destination, String newName)
Đối số đích được sử dụng cùng với sự di chuyển để xác định container nào mà clone của
agent hiện tại sẽ được tạo. Đối số newName là tên được sử dụng để tạo ra clone AID. Bản than
tiến trình cloning dường như cùng chuyển động, ngoại trừ agent khởi tạo không kết thúc, vì vậy 2
kết quả là giống nhau
5. INDIRECT MOBILITY ASSERTION - xác nhận di chuyển gián tiếp
Quá trình di chuyển một agent có thể thực sự được xác nhận bởi bản thân agent hoặc gián
tiếp bởi platform AMS. Sau đó được khởi tạo khi một agent hoặc người dùng thông qua RMA
GUI, gửi một thông điệp ALC tới platform AMS yêu cầu rằng một agent xác định được di
chuyển. Nếu một AMS nhận được một yêu cầu như thế, và quyền của bên yêu cầu được xác
nhận, AMS tự động gọi phương thức doMove() hoặc doClone() của agent được chỉ định. Vì lý do
này một vài chú ý nên được thực hiện khi tạo phương thức afterMove() và beforeMove() của
agent. Bởi vì việc gọi doMove() không nhất thiết phụ thuộc vào chính các agent, nó rất thận trọng
để đảm bảo những hành động này, chẳng hạn như giải phóng tài nguyên và lưu trữ thông tin được
thực hiện để ngăn chặn các vấn đề xảy ra nếu sự di chuyển gián tiếp được bắt đầu
2. Di chuyển bên ngoài platform
Như ở phần trên chúng ta đã tìm hiểu sự di chuyển bên trong platform của Mobile agent.
Như vậy thì di chuyển giữa các platform sẽ như thế nào, phương thức di chuyển của chúng ra
sao, chúng ta sẽ cùng tìm hiểu ở phần này.
Inter-Plafform Mobility Service (IPMS) được thêm vào JADE để cung cấpsự di chuyển giữa các
nền tảng cho các JADE agent, đây là tính năng không được tích hợp sẵn trong dịch vụ Agent
Mobility
1. Quá trình di chuyển
Kĩ thuật chính của IPMS là sự di chuyển của các agent giữa các nền tảng sử dụng thông điệp
FIFA-ACL như là phương tiện vận chuyển. Các thông điệp được gửi giữa các AMS của các nền
tảng đầu mút. Như đã đề cập đến, một vài đặc điểm kĩ thuật gốc của FIFA đã được thay đổi;
ontology bây giờ định nghĩa hai hành động: move và power-up.
19
- Hành động đầu tiên (move) thể hiện sự di chuyển của mã và đối tương agent.
- Hành động thứ hai (power-up) miêu tả sự kích hoạt một sự di chuyển của agent để hoàn
thành.
Ngoài ra có một số khái niệm được định nghĩa như mobile-agent-description, chứa tất cả
thông tin về agent bao gồm code, data và mobile-agent-profile của nó. Moblile agent profile: định
nghĩa đặc trưng cơ bản của agent để giúp đảm bảo sự tương thích với nền tảng nhận, chẳng hạn
như tên của hệ thống agent gốc của nó, ngôn ngữ nó đã được viết và giao thức di chuyển đã được
sử dụng. Nó mang các thông điệp chứa thông tin này, phù hợp với ontology di chuyển, sẽ là đủ
cho một nền tảng từ xa để quyết định xem nó có thể thực thi một agent đến hay không. Cả hai
hành động, move và power-up là kết quả sử dụng chuẩn giao thức tương tác Request FIFA. Trong
mỗi trường hợp một thông điệp Request được gửi tới nền tảng đích với một thông điệp Inform
hoặc thông điệp Failure nếu không sẽ là một phản hồi. Xét giao thức yêu cầu di chuyển FIFA.
FIFA yêu cầu giao thức mobility
Agent kích hoạt(agent A) gửi một Request để chuyển một thông điệp tới nền tảng cuả nó cái
mà sẽ lần lượt gửi một Request để chuyển bản tin chứa mã agent, dữ liệu tới nền tảng đích đã
được xác định(ở bên phải). Nếu nền tảng đích lấy thành công agent từ thông điệp Request, một
thông điệp Ìnform được trả lại cho nền tảng ban đầu. Sau khi đã nhận, thông điệp này tác động
nền tảng ban đầu để kết thúc agent yêu cầu (agent A) và gửi yêu cầu bật (a power up Request) tới
nền tảng đích, ở đây bắt đầu một agent. Nếu như có lỗi, trạng thái của agent ở nền tảng ban đầu
được khôi phục và tất cả cái gì của agent đó xuất hiện ở nền tảng đích đều bị loại bỏ.
- Ưu điểm của việc sử dụng thông điệp ACL để vận chuyển agent giữa các nền tảng:
không cần thiết thêm một kênh truyền thông giữa các nền tảng
- Nhược điểm: hiệu suất thực hiện không cao do quá trình mã hóa và giải mã bên trong
thông điệp ACL.
20
Chuẩn của MTPs được thiết kế để cải thiện hiệu suất gửi và nhận bản tin ACL, có thể sử dụng
giả mã những nội dung ít quan trọng
2. Tích hợp các dịch vụ mobile agent(intergration mobile service)
IPMS cần tính toán để đưa Intra-Platform Mobility Service được xậy dựng trên JADE vào bởi
vì:
- Phương thức để di chuyển giữa các nền tảng và phương thức để di chuyển giữa các
container trong cùng một nền tảng là cơ bản giống nhau theo hướng nhìn của người dùng.
Phương thức move() có tham số truyền vào là PlatformID để chỉ nền tảng đích mà agent
muốn chuyển đến trong trường hợp giữa các nền tảng và ContainerID cho trường hợp
giữa các container trong cùng một nền tảng. Giống như IPMS được cài đặt sử dụng kiến
trúc dịch vụ JADE, nó chỉ cần đợi để nhận lệnhtừ Intra-Platform Mobility Service với một
vị trí của loại PlatformID. Sau đó, nó đơn giản chỉ cần hủy bỏ lệnh và bắt đầu công việc
của nó.
Dưới đây là lược đồ mô tả luồng di chuyển thẳng đứng.
Luồng lệnh di chuyển thẳng đứng
- Bởi vì trong cùng một nền tảng, mã của các agent thực thi không được ở cùng một
contain, do đó các agent muốn di chuyển, do đó một chiến lược thu hồi (retrieval) code là
cần thiết. Giống như dịch vụ bên trong nền tảng di động(intra-platform mobility service)
không thể di chuyển mã agent, IPMS chứa thêm một tầng chiến lược bên trên sự di
chuyển của bên trong nền tảng để đảm bảo rằng mã di chuyển được đến nơi khi một agent
di chuyển giữa các container của chúng.
3. Code grouping
21
Để di chuyển một agent từ một vị trí tới vị trí khác, tất cả mã của nó phải được nhóm lại vào
một vị trí trên thông điệp ACL. Sự xác định vị trí mã này không phải là công việc đơn giản, như
trong JADE Classpath dùng để trộn chuẩn khác nhau từ mã platform và thư viện, và mã agent.
Điều này gây nên khó khăn để quyết định xem có hay không một thư viện hay một lớp trong
Classpath phải được sử dụng bởi một agent trong tương lai.Hai giải pháp khác nhau được đưa ra
để giải quyết vấn đề này.
- Cách tiếp cận thứ nhất:
Phương pháp lập trình đơn giản(mặc dù không đơn giản cho người dùng): các lập trình viên
đóng gói bằng tay các agent bên trong một file Jar với tất cả mã và thư viện nó sẽ yêu cầu. File
Jar này có thể sau đó được truyền tới các agent cạnh nhau
Dịch vụ bên trong nền tảng di động cung cấp một cơ chế cho hệ thống di chuyển, tự sinh một file
jar cho agent. File jar này chứa tất cả mã của agent và lập trình viên sẽ không bao giờ nhận thấy
sự tồn tại của nó. Cơ chế này được xây dựng bằng cách kiểm tra đệ quy lớp agent chính, tìm kiếm
tất cả các lớp phụ thuộc và xây dựng một jar từ cái cuối cùng đã đạt được. Trong phiên bản hiện
tại, có thể trong một số trường hợp đặc biệt không phải tất cả các lớp agent đều được phát hiện
thích hợp. Điều này có thể xảy ra ở những agent ở đâu, ví dụ các lớp tải (ví dụ
Class.forName(“ClassName”).newInstance()). Nếu vấn đề xảy ra với agent di chuyển rất có thể là
một số lớp chưa được thêm vào file jar của agent.
Hiện nay để tránh vấn đề này file jar phải được tạo bằng tay. Jar nên được đặt tên tương
ứng với tên lớp chính của agent. Ví dụ, một agent với class chính là org.example .myAgent phải
được gói ở trong file jar với tên org_example_MyAgent.jar. Jar sau đó phửi được đặt ở trong
folder cái mà được xác định trên dòng lệnh khi khởi chạy JADE.
Cách tiếp cận thứ hai: lập trình tinh vi hơn nhưng trong suốt với người dùng, bao gồm tự
động nhận dạng tất cả các lớp cần thiết và khởi tạo một file jar chứa chúng. Lớp lựa chọn được
điều khiển bởi dịch vụ điều đó kéo theo sự lựa chọn tối ưu có thể không được thực hiện
4. Jade mobility ontology
Jade-mobility-ontology chứa tất cả các khái niệm và hành động cần thiết để hỗ trợ agent di
chuyển. JADE cung cấp lớp jade.domain.mobility.MobilityOntology với chức năng như là một
singleton cho phép truy cập đến một single, chia sẻ đối tượng(instance_phiên bản) của JADE
mobility ontology trong phương thức getInstance(). Ontology extends
JADEManagementOntology, chứa năm khái niệm và hai hành động, mỗi liên kết với một lớp của
gói jade.domai.mobility.
- Mobile-agent-description: mô tả một mobile agent. Nó được biểu diễn bởi class
MobileAgentDescription
- Mobile-agent-profile: mô tả môi trường tính toán cần thiết cho mobile agent, được biểu
diễn bởi class MobileAgentProfile
- Mobile-agent-system: mô tả hệ thống run-time được sử dụng bởi mobile agent, biểu diễn
bởi class MobileAgentSystem
- Mobile-agent-language: mô tả ngôn ngữ lập trình được sử dụng bởi mobile agent, biểu
diễn bởi class MobileAgentLanguage
Mobile-agent-os: mô tả hệ điều hành cần thiết cho mobile agent, được biểu diễn bởi class
MobileAgentOS
7. Sự truyền thông
22
Agent có thể liên lạc với các agents khác trong cùng một place (intraplace) hoặc với các
agent trong các place khác. Một agent có thể cần đến một phương thức của agent khác hoặc gởi
đến agent khác một thông báo. Tổng quát, sự thông báo của agent có thể là peer-to-peer hay
broadcast. Broadcast là cơ chế thông báo từ một agent đế nhiều agent khác cùng một lúc. Nó cho
phép một agent gởi một thông báo đến một nhóm các agent và rất hữu ích trong các hệ thống
nhiều agent.
Sự liên lạc giữa các agent diễn ra theo ba cách sau:
Thông báo kiểu Now: Đây là dạng thông báo thường dùng và phổ biến nhất. Loại thông
báo này là đồng bộ và ngăn chặn sự thực thi của agent cho đến khi người nhận thông báo đã
hoàn thành việc nhận thông báo và trả lời nó.
Thông báo kiểu future: Loại thông báo này không đồng bộ và không ngăn cản sự thực thi
hiện tại của agent. Người gửi giữ lại một handle để có thể dùng lưu kết quả. Vì người gửi không
cần phải đợi người nhận trả lời, loại thông báo này linh động và hữu ích khi nhiều agent liên lạc
với nhau.
Thông báo kiểu one-way: Loại thông báo này không đồng bộ và không ngăn cản sự thực
thi hiện tại của agent. Người gửi không cần giữ lại một handle cho thông báo này, và người nhận
không cần phải trả lời nó.
23
8. MASIF
Phương tiện thao tác bên trong của hệ thống mobile agent (Mobile agent system
Interoperability Facility - MASIF) là một tập hợp các định nghĩa và giao diện, nó cung cấp một
giao diện thao tác bên trong cho hệ thống mobile agent. MASIF có hai thành phần cơ bản (thực
chất là hai giao diện): MAF Agent System và MAF Finder.
MAF Agent System định nghĩa các phép toán cho việc tạo, quản lý, và di chuyển và các
agent. MAF Finder định nghĩa các phép toán cho việc đăng ký, hủy đăng ký, định vị các agent,
place, và hệ thống agent.
MASIF có thể sử dụng các dịch vụ được cung cấp bởi CORBA (Common Object Request
Broker Architecture), bao gồm tên các dịch vụ, externalization và dịch vụ an toàn. Mối quan hệ
cới CORBA làm đơn giản hóa MASIF. Ví dụ như MASIF không cần phải chỉ ra tương tác từ xa
với các agent và hệ thống agent. Trong MASIF, hệ thống agent là một đối tượng CORBA. Các
ứng dụng client có thể truy xuất các đối tượng hệ thống agent này (hay chúng có thể truy xuất lẫn
nhau) thông qua giao diện CORBA. MASIF không cần phải chỉ rõ bản chất các đối tượng của
agent.
1. Giao diện MAF Agent System
Giao diện này định nghĩa các phương thức và đối tượng hỗ trợ các công việc quản lý agent
như là lấy tên hệ thống agent và nhận agent. Các phương thức và đối tượng này cung cấp một số
24
các thao tác cơ bản cho việc di chuyển agent. Giao diện được trình bày ở đây trong Interface
Description Language (IDL), đó là ngôn ngữ giao diện (độc lập với ngôn ngữ lập trình) được
dùng bởi nhóm quản lý các đối tượng OMG (Object Management group)
2. Giao diện MAF Finder
Các dịch vụ CORBA được thiết kế cho các đối tượng tĩnh. Khi các dịch vụ CORBA được áp
dụng cho mobile agent, chúng có thể không quản lý tốt tất cả các trường hợp. Vì vậy, giao diện
MAF Finder được đưa và trong MASIF. Chức năng của nó là một giao diện để quản lý các cơ sở
dữ liệu các agent, place, và các hệ thống agent.
MAF Finder là dịch vụ lấy tên agent. Trước khi một client yêu cầu MAF Finder tìm một đối
tượng, client đó phải chứa một đối tượng tham khảo đến MAF Finder. Để thực hiện được điều
này, client có thể dùng hoặc là dịch vụ đặt tên của CORBA, hoặc là giao tiếp bên trong được
cung cấp bởi hệ thống agent. Sau đó, client có thể sử dụng phương thức get_MAFFinder trong
giao diện MAFAgentSystem – giao diện này cũng được định nghĩa trong IDL.
9. Một số ứng dụng của mobile Agent
Thu thập dữ liệu từ nhiều nơi : tìm dữ liệu từ cơ sở dữ liệu phân tán là một ứng dụng phổ
biến của mobile agent. Thay vì di chuyển một lượng lớp dữ liệu đến bộ xử lý tìm kiếm để tạo chỉ
mục tìm kiếm, ta sẽ gửi các agent đến nguồn chứa thông tin từ xa, nơi mà chỉ mục tìm kiếm sẽ
được tạo.Một trong các khác biệt chính giữa mobile code – như applets - và mobile agent là lộ
trình. Trong khi mobile code luôn di chuyển từ điểm A đến điểm B, thì mobile agent có một lộ
trình và có thể lần lượt di chuyển qua nhiều site. Do đó, một ứng dụng rõ ràng của mobile agent
là thu thập thông tin trên mạng.
Tìm kiếm và lọc dữ liệu : Lượng thông tin trên mạng internet ngày càng nhiều, do đó, việc
tìm kiếm thông tin cần thiết trên mạng sẽ tốn nhiều thời gian. Vì vậy, việc lọc bớt một số thông
tin không tích hợp là một vấn đề quan trọng.
Kiểm tra dữ liệu : Một số thông tin không trải ra theo không gian mà theo thời gian. Các
thông tin mới không ngớt được đưa ra và công bố trên mạng. Các agent gửi đi có thể đợi cho tới
khi lấy được thông tin chắc chắn. Chẳng hạn như một agent có thể tới một thị trường chứng
khoán, đợi cho tới khi thị trường chưng khoán đạt tới một giá chắc chắn, và sai đó đặt mua nhân
danh user của nó.
Loại ứng dụng này nêu bật bản chất không đồng bộ của mobile agent. Nếu bạn gửi đi một
agent, bạn không cần ngồi đợi kết quả. Bạn có thể lập trình cho agent để nó đợi lấy được thông
tin chắc chắn. Ngoài ra bạn cũng không cần kết nối vào mạng cho tới khi agent gửi kết quả về.
Một agent có thể đợi cho đến khi nào bạn kết nối lại.
Đàm phán : Bên cạnh việc tìm kiếm cơ sở dữ liệu và file, các agent còn thu thập thông tin
bằng cách tương tác với các agent khác. Ví dụ nếu bạn muốn lập kế hoạch gặp gỡ một số người,
bạn gởi một agent tương tác với các agent đại diện cho những người mà bạn muốn gặp. Các agent
có thể đàm phán và sắp xếp lịch.Trong trường hợp này, mỗi agent chưa thông tin về thời khỏa
biểu user của nó. Nếu đồng ý về thời gian, các agent sẽ trao đổi thông tin.
Đặt hàng : thương mại ddienj tử là môi trường tốt để áp dụng công nghệ mobile agent. Một
mobile agent có thế thay bạn đi mua sắm, bao gồm việc đặt hàng và trả tiền. Chẳng hạn như nếu
bạn muốn bay từ thung lũng Silicon đến một đảo ở Nam Thái Bình Dương, một agent có thể tới
cơ sở dữ liệu các chuyến bay và tham khảo giá của các hãng hàng không.nó tìm ra chuyến bay có
giá rẻ nhất và thời gian thích hợp nhất, đặt chỗ cho bạn và thành toán với số credit card của
bạn.Thương mại điện tử cũng xảy ra giữa các agent. Ví dụ có một host dành riêng để mua, bán xe
25