Do an Mobile Framework
Trang 1Chương 1:
GIỚI THIỆU
Trang 21 Giới thiệu đề tài
1.1 Tên đề tài :
Xây dựng Mobility framework ứng dụng cho xử lý song song và hệ phânbố trên môi trường Java.
1.2 Giới thiệu đề tài :
Từ lâu, trước cả khi có khái niệm về trí tuệ nhân tạo và hệ phân bố, người sử dụngmáy tính luôn mong muốn có thể tạo ra những chương trình máy tính có khả năng tựthực hiện các công việc tính toán đôi khi nhàm chán và phức tạp cho họ Hiện nay,trước sự phát triển mạnh mẽ của mạng máy tính, hệ phân bố và xử lý song song,mong muốn đó lại càng trở nên thiết thực hơn
Những chương trình mà user có thể định nghĩa các tác vụ mà họ mong muốn, sau đótự các chương trình này thực hiện các công việc gọi là các agent Trong các hệ thốngtrước đây, để thực hiện một công việc nào đó agent thường được tạo ra và chỉ hoạtđộng trên một host cố định, các giao tiếp trên mạng thực ra chỉ mang tính chất trao đổidữ liệu Loại agent này gọi là static agent Nhưng từ khi xuất hiện những công việctính toán lớn hơn với khối lượng dữ liệu nhiều hơn, người ta bắt đầu suy nghĩ đến việc
di chuyển tác vụ chứ không phải chỉ di chuyển dữ liệu trên mạng
Mobile agent là khái niệm mở rộng của static agent để chỉ một thực thể độc lập tự dichuyển trong framework và có khả năng thực hiện các công việc khác nhau trên cáchost khác nhau Tại mỗi host trong framework , mobile agents có thể sử dụng các tàinguyên có sẵn ( nếu được cho phép), thực hiện một số tác vụ và di chuyển đến cáchost khác Mobile agent di chuyển trên mạng nhưng vẫn bảo toàn trạng thái về biếnvà code của nó Ngoài ra mobile agent còn có khả năng giao tiếp với các mobileagent khác để thực hiện đồng bộ và trao đổi dữ liệu với nhau
Mobility framework là một framework trong đó cung cấp cho các mobile agent khảnăng tự di chuyển giữa các host trong mạng, cung cấp môi trường cho các agent nàythực thi các tác vụ mà user mong muốn Có thể nói khả năng tự di chuyển và thựchiện các tác vụ khác nhau ở các host khác nhau của mobile agent chính là đặc điểmnổi bật nhất của mobility framework Bên cạnh đó framework còn cung cấp cho cácagent các dịch vụ của nó để agent hoàn thành công việc của user giao phó, từ đó cóthể phát triển và quản lý các ứng dụng sử dụng lợi điểm của mobile agent để giảiquyết các bài toán xử lý song song và phân bố
Với những ưu điểm nổi bật của mobility framework, ta nhận thấy nhu cầu xây dựngmobility framework ứng dụng cho xử lý song song và phân bố là một hướng nghiêncứu mới và cần thiết Luận văn tốt nghiệp này hướng đến việc thiết kế và hiện thựcmột Mobility Framework nhằm ứng dụng trong xử lý song song và phân bố trong môitrường Java
Mobility framework đề cập trong luận văn này được xây dựng trong môi trường Java
vì Java cung cấp nhiều kỹ thuật hỗ trợ việc di chuyển object như load class động, kỹ
Trang 3thuật serialization …và Java là một ngôn ngữ không phụ thuộc platform, nên cho phépcác mobile agent có thể di chuyển trên nhiều platform khác nhau, đồng thờiframework cũng thừa hưởng cơ chế bảo mật của Java.
2 Giới thiệu về agent technology
2.1 Giới thiệu Agent
Trên quan điểm khoa học máy tính, chúng ta có thể hiểu agent như một thực thểhoạt động tích cực một cách thường trực trong một máy tính nào đó, hoàn toàn khácvới các thực thể khác chỉ thụ động chờ thông điệp gởi tới nó rồi mới thực hiện các tácvụ do thông điệp yêu cầu Cụ thể hơn, chúng ta có thể nói agent có một “ trí thôngminh nhất định “, nó có thể thực hiện một số hành vi để thích ứng với môi trườngxung quanh nó Mỗi agent có thể có hai đặc tính cơ bản là khả năng tự di chuyển và
“trí tuệ ” Đặc tính di chuyển của agent có thể được phân làm nhiều cấp độ Agent dichuyển theo lộ trình cho trước hay ở cấp độ cao hơn agent có thể tự chọn lộ trình đểthích ứng với môi trường xung quanh Để mô tả khả năng trí tuệ của agent, chúng tôisẽ đề cập trên một số khía cạnh :
♦ Có mục tiêu (goal-oriented) : agent được tạo ra nhằm mục đích để giảiquyết một số vấn đề nào đó, điều này cũng giống như các chương trình cổđiển Tuy nhiên điểm khác biệt và là thế mạnh của agent là “tự quản và tựthích nghi để tiến đến mục tiêu”
♦Tự quản (autonomy) : có nghĩa là agent tích cực hoạt động, không thụ độngphản ứng trước những sự kiện xảy ra với nó, không cần sự can thiệp của uservà có thể kiểm soát được một số hành vi cơ bản Agent luôn “xem xét” môitrường xung quanh và có khả năng tự thích ứng với môi trường
♦Tự thích nghi (self-adaptable & reactive) : agent có “trí thông minh”, biết tựthích nghi để nâng cao khả năng của nó Muốn thực hiện điều này, agent cầncó một “bộ não” được tổ chức theo hệ chuyên gia, có cơ sở dữ liệu về các sựkiện và các quy luật diễn dịch Thêm vào đó là một qui trình học và tự họcgồm những quy luật đánh giá hành động quá khứ bằng cách so sánh với mụctiêu Ngoài ra agent không chỉ đơn thuần thích nghi với môi trường xungquanh, mà còn có thể thay đổi môi trường theo mục tiêu của nó
♦Giao tiếp (Social ability) : các agent có thể hợp tác với nhau để giải quyếtvấn đề
Agent được phân thành nhiều loại tùy thuộc vào sự nổi bật một hay nhiều đặc tínhchung của agent Chẳng hạn như khi nhìn ở đặc tính di chuyển của agent, chúng ta cóhai loại mobile agent và stationary agent Ngoài ra nếu đứng ở các khía cạnh khác thìchúng ta có các loại agent như : intelligent agent, autonomous agent, profile agent,simulator agent,
Trang 4Thông thường, agent phải cần đến agent framework là một platform cung cấp khảnăng tạo, thực thi, di chuyển, hủy agent, hỗ trợ sự giao tiếp giữa các agent, và tạođiều kiện cho agent hoàn thành công việc.
Có thể nói Agent Technology là một kỹ thuật dựa trên sự phát triển của các mô hìnhhướng đối tượng và tính toán phân bố, distributed mobile object, process migration, vàdistributed artificial intelligent
2.2 Giới thiệu Mobile Agent
Mobile agent là một agent nhưng nổi bật ở khả năng tự di chuyển Nó có thể dừngquá trình thực thi của nó tại một host trong mạng để di chuyển đến một host khác, rồilại tiếp tục quá trình thực thi Cũng như một agent thông thường, mobile agent đượctạo ra và thực thi trên một mobility framework
Khi một ứng dụng cần thực hiện các yêu cầu, hệ thống framework sẽ khởi tạo mộthay nhiều mobile agent và quá trình thực thi của mỗi mobile agent được xem như làmột process trong framework Framework sẽ truy xuất nhiều mobile agent và cungcấp các dịch vụ khác nhau cho user
Các chương trình mobile agent có thể được xây dựng từ các component của ngôn ngữthủ tục hoặc các classes của ngôn ngữ hướng đối tượng Chương trình mobile agent cóthể được thực thi ở ngôn ngữ máy hoặc ngôn ngữ thông dịch Để hỗ trợ cho tính bấtđồng nhất của hệ thống mạng, các mobile agent thường được thực thi ở ngôn ngữthông dịch Ngôn ngữ thông dịch cho phép các mobile agent chứa những tham khảođến các hàm hoặc các object ở xa, ngoài ra nó còn bảo mật hơn ngôn ngữ máy
Có thể nói mobile agents được xem là một thực thể có khả năng thực hiện một sốthao tác và đặc biệt là nó có thể di chuyển được trên hệ thống mạng để thực hiện cáctác vụ của nó Nhưng làm thế nào để một thực thể có thể di chuyển được ? Thật rađịnh nghĩa trên chỉ đứng ở góc nhìn end user, còn ở góc độ hệ thống, mobile agentđược hiện thực bởi hai thành phần : phần di chuyển và phần cố định là môi trườngthực thi của phần di chuyển Một câu hỏi nữa đặt ra là vì sao và khi nào chúng ta sửdụng mobile agent ? Chúng tôi xin đơn cử một vài thế mạnh cơ bản của mobile agent :
♦Giảm network-load : các hệ thống phân bố thường dựa trên cáccommunication protocol, tần suất gởi nhận dữ liệu khá cao giữa các component củahệ thống Trong khi đó mobile agent cho phép di chuyển quá trình tính toán đến nơicó dữ liệu vì thế tránh được trường hợp một khối lượng lớn dữ liệu di chuyển từ nơilưu trữ đến nơi xử lý
♦Encapsulate protocol : khi dữ liệu được trao đổi trong hệ thống phân bố, mỗicomponent nằm ở các host phải tuân thủ protocol trao đổi dữ liệu và như thế vấn đềbảo mật được đặt ra trong quá trình tính toán Nhưng khi sử dụng mobile agent, khókhăn trên được giải quyết dễ dàng, vì mobile agent sẽ di chuyển đến component đíchthực hiện protocol tại component đó
♦ Execute asynchronously and autonomously : khi có nhu cầu tính toán phânbố, thường thì hệ thống phân bố đòi hỏi hệ thống mạng bên dưới bảo đảm sự nối kếtphải liên thông Trái lại khi mobile agent mang quá trình tính toán đến component
Trang 5chứa dữ liệu thì sự liên thông mạng giữa component tạo ra mobile agent và nơi chứadữ liệu là không còn là yêu cầu bắt buộc liên tục.
♦ Heterogenous : các hệ thống mạng thông thường được chia làm hai loại bấtđồng nhất và đồng nhất, mobile agent có thể di chuyển và thực thi trên hệ thốngmạng mà không cần quan tâm chúng thuộc loại nào
♦ Robust & Fault-tolerant : đặc tính autonomy, reactive và mobile đã mang lạicho mobile agent khả năng này Mobile agent dễ dàng thích ứng với các môi trườngkhác nhau trong quá trình di chuyển Ngoài ra khi một host chứa mobile agent đangthực thi bị chết thì có thể dễ dàng dispatch mobile agent đó vào host khác để tiếp tụcquá trình thực thi
Tất cả các lợi điểm trên của mobile agent chưa thể hiện hết sức mạnh của nó nhưngcũng nói lên được lý do vì sao chúng ta phải nghiên cứu và hiện thực mobile agent
2.3 Tổng quát về mobile agent computing
Mobile agent computing có thể được xem là một phương pháp mới trong lĩnh vực tínhtoán phân bố Nó cung cấp khả năng di chuyển quá trình tính toán đến các cơ sở dữliệu phân bố, có thể tự thích nghi với sự biến đổi của môi trường tính toán dữ liệu màkhông cần sự can thiệp của user Chính vì thế những ứng dụng có liên quan đến cácvấn đề tìm kiếm, truy vấn, mail clients, transaction front-end, thường gắn liền vớimôi trường thực thi của các mobile agent Dưới sự hỗ trợ của một framework, cáctrình ứng dụng sẽ gởi yêu cầu đến các mobile agent, các mobile agent này sẽ nhậnyêu cầu, xử lý rồi trả kết quả về cho chúng Trong các trường hợp khác, không cầncác chương trình ứng dụng, các chương trình mobile agent sẽ tự thực hiện công việcgiao tiếp với user từ các thiết bị nhập xuất Lúc đó, môi trường framework cung cấp
cơ chế thực thi cho các mobile agent sẽ phải gắn liền với các chức năng của hệ điềuhành như quản lý bộ nhớ, timer, file system, Và thông thường framework phảiđược trang bị một hệ thống truyền nhận thông điệp hỗ trợ cho việc giao tiếp của cácmobile agent
Ngoài ra, một trong những nguyên nhân thể hiện tính khả dụng của mobile agentcomputing là khả năng bảo mật của nó Đối với mobile agent computing, chúng ta dễxây dựng hệ thống authentication theo các hình thức password-based, address-basedhay cryptography, cũng như hoàn thiện hệ thống authorization đi kèm
Tóm lại, mobile agent computing là sự thực hiện công việc tính toán trên hệ phân bốdựa trên việc sử dụng các mobile agent
Trang 6Ta có mô hình minh họa :
Hình 1.1 Mô hình framework
2.4 Ứng dụng của mobility framework
Trước đây, một ứng dụng phân bố muốn tính toán trên một tập dữ liệu lớn ở xa, nóbuộc phải tải các dữ liệu này về và thực hiện công việc tính toán Nhưng trong trườnghợp dữ liệu này quá lớn thì việc tải về không hiệu quả, thậm chí không thực hiệnđược Để giải quyết bài toán trên, người ta cho rằng thay vì phải di chuyển dữ liệu vềnơi tính toán, thì nên di chuyển công việc tính toán về nơi có cơ sở dữ liệu, sau đó trảkết quả tính toán về nơi yêu cầu Hoặc trong vấn đề quản lý hệ thống phân bố nhưviệc load balancing, quản lý security nảy sinh nhu cầu cần phải sử dụng các mobileagent có khả năng di chuyển đến từng host làm chức năng thu thập thông tin, hay giảiquyết các sự cố tại host đó
Đó chỉ là một vài bài toán cho thấy nhu cầu cần xây dựng Mobility Framework ứngdụng cho xử lý song song và hệ phân bố Ngoài những nhu cầu trên Mobile Agent vớisự hỗ trợ của hệ thống framework sẽ khẳng định thêm tính khả dụng của nó tronghiện tại và tương lai
Ưu điểm của mobile agent & mobility framework :
♦ Cho phép xây dựng các ứng dụng có tính mobile và tính performance cao.Các ứng dụng sử dụng mobile agent có khả năng tận dụng hệ thống mạng một cáchhiệu quả vì chúng sử dụng tài nguyên mạng trong suốt như sử dụng tài nguyên cục bộ,
do các mobile agent di chuyển đến nơi chứa tài nguyên và sử dụng tài nguyên này để
Client Application Environment
Agent Execution Environment
Message Passing System
Server Application Environment
Agent Execution Environment Message Passing System Communication Infrastructure
Trang 7phục vụ cho yêu cầu của ứng dụng Lợi điểm này rất có ý nghĩa trong hệ thống lowbandwidth
♦ Các ứng dụng không những chỉ có tính performance cao mà còn thể hiện rõthế mạnh về đặc tính portable, compatible và reusable Với sự hỗ trợ của hệ thốngframework, các ứng dụng được tích hợp bởi các mobile agent có thể dễ dàng đượcứng dụng trong nhiều hệ thống platform việc thêm hay bớt các chức năng của ứngdụng chỉ đơn giản là việc thêm bớt các mobile agent chức năng
♦ Đặc tính bảo mật của ứng dụng được tăng cường thông qua hệ thốngframework Đây là một trong những ứng dụng quan trọng của mobility framework
♦ Ngoài ra mobile agents với sự hỗ trợ của mobility framework, về bản chất làsự di chuyển dòng điều khiển trong hệ thống mạng tốt hơn so với kiến trúcrequest/response của mô hình client/server
Những ưu điểm trên tuy chưa thể hiện hết vai trò của Mobile Agent và Framework,nhưng cũng cho chúng ta cơ sở để đi đến nghiên cứu và phát triển MobilityFramework
3 Giới thiệu mobility framework và các framework liên quan.
3.1 Giới thiệu các framework đã được hiện thực
Mobile agent tuy được xem như là một thực thể độc lập và có khả năng tự di chuyển.Tuy nhiên, các đặc tính đó chỉ có thể có khi mobile agent được “tích hợp” vàoframework Một cách tổng quát, framework có thể hiểu như tập hợp các nhóm thànhphần hoạt động phối hợp với nhau theo một qui luật đã được xác định trước trên hệthống mạng Các nhóm thành phần này có thể là tài nguyên, dịch vụ cung cấp chomobile agent và đặc biệt là môi trường thực thi cho các mobile agent khi chúng đếnmột host trong framework Cho đến nay, chúng ta vẫn chưa có một chuẩn frameworknào được công nhận là hoàn chỉnh Do đó, để có thể hiểu rõ hơn về “thế giới “framework, chúng tôi xin giới thiệu một số framework cũng như công cụ hỗ trợmobile agent đã được hiện thực
3.1.1 Concordia Framework
Mitsubishi Electric ‘s Horizon System Labs đã xây dựng hệ thống frameworkConcordia nhằm để phát triển và quản lý các ứng dụng mobile agent xử lý thông tin ởmọi thời điểm và ở mọi nơi với sự hỗ trợ của Java Nó phát triển hướng về các ứngdụng công nghiệp và end user ; mobile agent trong hệ thống framework Concordia làmột mobile object Có thể nói, Concordia là một framework cung cấp các khả năngmobility và autonomy cho mobile agent Hệ thống framework của Concordia bao gồmmột tập hợp các máy trong hệ thống mạng Trên các máy này được cài đặt cácchương trình Concordia server chạy trên máy ảo Java và các mobile agent được hiệnthực bằng một object của ngôn ngữ Java Concordia server tạo hủy cũng như cung cấpmôi trường cho các Concordia mobile agent hoạt động Concordia cung cấp khả năng
di chuyển của các Concordia mobile agent theo protocol TCP/IP Các Concordia
Trang 8mobile agent di chuyển theo một lộ trình đã xác định trước Ngoài ra Concordiaframework còn cung cấp khả năng hỗ trợ lẫn nhau giữa các mobile agent và hệ thốngbảo mật authentication và authorization.
3.1.2 Aglet framework
Aglet Framework do IBM Tokyo Labs hiện thực Nó hiện thực các agent Aglet lànhững Java object có thể di chuyển từ host này đến host khác trên Internet Nhữngobject này có thể thực thi trên một host, treo lại quá trình thực thi, di chuyển đến hostkhác, rồi lại tiếp tục quá trình thực thi Trong quá trình di chuyển, Aglet mobile agentđem theo code chương trình và trạng thái của nó Aglet framework sử dụng socket để
di chuyển các Aglet mobile agent và các Aglet agent cần một context cung cấp môitrường thực thi Nhưng Aglet không cho phép gởi message đến Aglet agent đang dichuyển Dó đó nó rất hạn chế trong vấn đề giao tiếp giữa các agent Hệ thống bảomật vẫn theo các chiến lược authentication và authorization
3.1.3 Odyssey framework
Genaral Magic đã hiện thực lại ngôn ngữ Telescript cho mobile agent, và xây dựngframework Odyssey Odyssey là tâp hợp thư viện được xây dựng bằng Java và RMI ,nhằm mục đích hỗ trợ cho các ứng dụng mobile và phân bố Cũng giống như Aglet,Odussey cũng cung cấp các khả năng tạo mobile agent và lập trình dạy nó các tác vụmà nó cần làm trong quá trình di chuyển, nhưng vẫn hạn chế trong vấn đề giao tiếpgiữa các mobile agent
Một Agent được active trong một agent processes thì có thể sử dụng tài nguyên ở hostchứa agent processes đó.Trong voyager khi một object extends classcom.objectspace.voyager.agent.Agent thì nó trở thành agent
♦Đặc điểm mobility của voyager :
+ Một object có thể được xây dựng thành agent
+ Cung cấp khả năng moving object
+ Cung cấp cơ chế transfer object từ host này đến host khác
Trang 9+ Các ứng dụng có thể thao tác với các agent thông qua cơ chế proxycủa agent còn gọi là NameSpace (gần giống như cơ chế naming củaRMI) Các agent tương tác với các object khác cũngthông qua cơ chếproxy interfaces này.
3.2 Giới thiệu Mobility Framework
Mobility framework được thiết kế và hiện thực dựa trên sự tham khảo các hệ thốngframework trên Mục tiêu chính trong quá trình thiết kế và hiện thực là xây dựng hệthống framework mặc dù vẫn thừa kế một số ưu điểm của các framework khác nhưngphải mang những nét đặc trưng riêng của nó chẳng hạn như framework phải hướngđến sự hỗ trợ cho các ứng dụng tính toán phân bố và xử lý song song Dĩ nhiên trongphạm vi một luận văn tốt nghiệp và do hạn chế về kiến thức, chúng tôi hoàn toànkhông thể hiện thực một framework tập trung được tất cả các ưu điểm của các hệthống framework và như thế mobility framework chỉ thể hiện một phần ưu điểm củacác framework khác
Mobility framework được xây dựng dựa trên định nghĩa mobile agent hoàn toàn khác
so với các framework trên Chúng tôi dựa trên định nghĩa mobile agent là một thựcthể độc lập để xây dựng framework
Ngoài ra, mobility framework được thiết kế dựa trên nền tảng của Concordia, điều đókhông có nghĩa là sao chép hoàn toàn, mà chỉ là lấy những ưu điểm của nó, đồng thờikết hợp với các đặc điểm của các framework như Aglet, Odessey và Voyager để xâydựng nên mobility framework mang những đặc trưng riêng
Theo đó framework là tập hợp các contracts được hoàn thành bởi sự phối hợp củanhiều nhóm thực thể có liên quan Mobility framework chú trọng vào 3 nhóm thànhphần quan trọng : mobile agents, các nguồn tài nguyên, và các dịch vụ của nó Việcđịnh nghĩa mobile agent sẽ dẫn đến hình thành một framework mới Đây là điểmkhác biệt giữa mobility framework với các framework khác Trong khi những mobileagent của Concordia, Aglet và Voyager là các java object thì mobile agent củamobility framework lại là một thực thể độc lập; những mobile agent của Concordia vàAglet có phần độc lập tương đối với framework, thì những mobile agent của mobilityframework góp phần xây dựng nên framework, tạo nên sự gắn bó không thể tách rờigiữa các mobile agent và mobility framework
Ở gốc độ hiện thực, mobility framework đã lấy ý tưởng hiện thực của Odyssey sửdụng RMI để truyền nhận các mobile agent, nhưng được hiện thực theo một cáchkhác Và đặc biệt, với sự hỗ trợ của JINI, tính open của mobility framework có thểmạnh hơn khi so với Odyssey Hơn thế nữa, khả năng collaboration giữa các mobileagent trong mobility framework hoàn thiện hơn khi so với Aglet và Odyssey Cụ thể,mobility framework cung cấp khả năng share data cũng như cơ chế synchronousmessage passing giữa các mobile agent; đây là một trong những thế mạnh quan trọngcủa mobility framework Đồng thời khả năng bảo mật tuy chưa hoàn chỉnh nhưngmobility framework vẫn bảo mật tốt các mobile agent ở mức độ chấp nhận được
Trang 10Chính yếu tố này kết hợp với những ưu điểm của mobility framework có thể bảo đảmsự phát triển của nó trong tương lai.
4 Java và các kỹ thuật rmi & jini
4.1 Vì sao xây dựng mobility framework trên môi trường Java?
Java có nhiều ưu điểm thích hợp với Mobile Agent Technology Một trong những ưuđiểm đó là tính portability Nó sử dụng bytecode và môi trường thực thi thông dịch làmáy ảo java (java virtual machine) Chính đặc tính này đã cho java khả năng độc lậpnền (non-platform), đây là một trong những đặc tính quan trọng để xây dựng mobileagent Một đặc điểm thứ hai khá quan trọng là java được xây dựng hướng về Internetthích hợp với khả năng di chuyển của Mobile Agent và đặc biệt là với kỹ thuật ObjectSerialization cho phép ghi một object thành bytecode stream có thể dễ dàng truyềnnhận trên mạng Ngoài ra Class Loading là quá trình mà trong đó class của javaobject có thể được load trong lúc thực thi từ nơi chứa mã nguồn của nó Java class cóthể được load từ files, Web server, database, hoặc một số nơi chứa source khác Dođó người lập trình có thể xây dựng một class loader cho riêng họ, để có thể loadclasses ở bất cứ nơi nào mà họ muốn Một đặc điểm nữa góp phần cho Java thích hợpvới Internet là khả năng bảo mật của nó Cơ chế sandbox của java đã góp phần đángkể trong việc bảo mật dữ liệu trên mạng
Hơn thế nữa, java còn cung cấp cơ chế RMI (Remote Method Invocation) và côngnghệ JINI RMI thực chất là một cơ chế gọi hàm từ xa, do đó nó cũng có nhiều điểmtương đồng với RPC, tuy nhiên RMI có nhiều ưu điểm hơn với phương pháp lập trìnhhướng đối tượng, ngoài ra nó còn cho phép một Client có thể gửi một Object đến choServer xử lý và Object này có thể là tham số cho lời gọi hàm từ xa Bên cạnh đo,ù JINIlà một hệ thống phân bố dựa trên nền tảng độc lập platform của Java để quản lý tàinguyên trong hệ thống Cụ thể hơn, JINI là tập hợp các specifications cho phép cácdịch vụ tìm thấy nhau trong hệ thống mạng và cung cấp framework cho phép các dịchvụ đó giao tiếp với nhau để thực thi công việc
Từ những lợi điểm trên, Mobility Framework đã được xây dựng trên môi trường Javasử dụng RMI và JINI
4.2 Moving object
Sự phát triển của hệ thống lập trình hướng đối tượng đã cho phép sự giao tiếp giữacác ứng dụng khác nhau nằm trên các host khác nhau trong hệ thống mạng Do đó cácobject trong các ứng dụng đó phải có khả năng giao tiếp với nhau, có thể giao tiếptheo cơ chế remote method (object ở ứng dụng này gọi thực hiện một method củaobject nằm trong ứng dụng khác), hoặc object ở ứng dụng này có thể “move” đến mộtứng dụng khác nằm ở một host bất kỳ trên mạng
Mobile object là một object có thể “di chuyển” từ một ứng dụng ở host này đến ứngdụng ở một host bất kỳ trên hệ thống mạng
Trang 11Để một object có thể di chuyển được, cần phải giải quyết các vấn đề có liên quan đếncác protocol của hệ thống mạng, việc phục hồi dữ liệu cũng như trạng thái của objectsau khi moving, đồng thời phải quan tâm dến các vấn đề khác như : tính bảo mật, cácinterfaces giao tiếp với người sử dụng, input
Có thể đưa ra định nghĩa một cách khái quát về mobile object :
"Mobile object là một object có khả năng “di chuyển” giữa hai hay nhiều ứng dụng khác nhau trên hệ thống mạng Sự di chuyển này bao gồm cả trạng thái, phần hiện thực (implementation), user interface và input của object."
Các vấn đề phát sinh khi xây dựng Mobile object:
♦Làm thế nào để di chuyển một object trong hệ thống mạng ?
Như chúng ta đã biết, object chỉ là khái niệm trừu tượng trong lập trình hướngđối tượng, do đó không có chuyện một object di chuyển từ host này đến hostkhác giống như chúng ta đi học từ nhà đến trường trong thực tế Thực chất củaviệc di chuyển một object là sự di chuyển dòng dữ liệu từ host này đến hostkhác thông qua một giao thức truyền/nhận giữa hai host đó Có thể diễn tả nhưsau :
+ Trước tiên, object được serialize thành dòng dữ liệu(stream)
+ Kế đến, dòng dữ liệu này sẽ được truyền đi thông qua một giao thứcnào đó ví dụ như TCP/IP, UDP,
+ Khi dòng dữ liệu đã đến ứng dụng ở host đích, thì ở đây diễn ra quátrình deserialize để tạo ra một instance của mobile object
Lúc này, tồn tại 2 mobile object cùng class, do vậy để hiện thực sựtrong suốt về sự di chuyển của object, nên local object sẽ bị giết đi
Hình 1.2
♦Local object có quyền truy xuất tài nguyên cục bộ của hệ thống như: userinterfaces, truy xuất file, nhờ CPU thực hiện tính toán, Do đó vấn đề đặt ralà phải xây dựng môi trường cho phép tất cả các object có thể truy xuất đượctài nguyên của hệ thống phân bố Ví dụ như một object muốn truy xuất tàinguyên trên một host nào đó trong hệ thống phân bố, thì nó có thể di chuyểnđến host đó để truy xuất tài nguyên
Serialized Deserialized
Trang 12♦Vấn đề security : trong một hệ thống mobile object thì một object có thể “dichuyển” từ host này đến host khác, và như thế là nếu không hạn chế thì objectđó có toàn quyền truy xuất, thao tác trên hệ thống tài nguyên của host đích,ngay cả việc format lại ổ đĩa của host đó Chính vì thế mà các host phải có mộtsố phương thức bảo vệ, đề phòng các malicious object này Và cũng tương tự,các mobile object cũng phải đề phòng các host mà nó đến hay đi qua.
♦Làm thế nào duy trì được trạng thái cũng như các tham khảo gián tiếp củamobile object ?
Trạng thái của object có thể hiểu là tất cả các giá trị hiện hành của các biến,hằng trong phần dữ liệu của object tính tại một thời điểm đang xét Khi object
di chuyển, thì trạng thái của nó cũng phải được copy từ vùng địa chỉ nguồn đếnvùng địa chỉ đích
♦Làm thế nào di chuyển được phần hiện thực của object ?
Song song với việc di chuyển trạng thái của một object, thì phần đặc tả (class)của object đó phải được di chuyển theo, có như thế mới tạo được instance củaobject ở đích đến Để thực hiện điều này,java cung cấp ClassDescriptor mô tảclass của mobile object và ClassLoader cho phép download class từ xa
4.3 Một số kỹ thuật trong java và RMI:
Đề tài này xây dựng Mobility framework trong môi trường Java vì Java cung cấpnhiều kỹ thuật hỗ trợ việc di chuyển object và Java là một ngôn ngữ không phụ thuộcplatform cho nên cho phép các agent có thể di chuyển trên nhiều hệ điều hành khácnhau
Phần giới thiệu kỹ thuật trong Java và RMI này không chú trọng việc trình bày chitiết kiến trúc cũng như cách sử dụng kỹ thuật RMI mà đi sâu vào nghiên cứu nhữngkhía cạnh cho phép hỗ trợ hệ thống mobile agent
Java và RMI cung cấp một số kỹ thuật hỗ trợ việc moving object :
Cơ chế serialize đối tượng
Cơ chế persistence
Dynamic Class Loading
Cơ chế RMI truyền thông số
Mô hình java security
Sau cùng là phần trình bày khả năng dùng RMI để phát triển Mobile object
4.3.1 Cơ chế serialize đối tượng :
Ngôn ngữ java cho phép một đối tượng được viết xuống kênh truyền một cách dễdàng như các đối tượng dữ liệu khác, đây là một đặc tính rất mạnh của Java Trongviệc xây dựng ứng dụng phân bố sử dụng RMI, vấn đề Serialization rất quan trọng vìcó sự moving các objects
Sau đây, ta xét các cơ chế cho phép một object được viết xuống stream và cách phụchồi chúng
Trang 13Khi một graph được tạo ra, nó bao gồm tất cả các field ngoại trừ những fieldđược đánh dấu là private hay transient.
♦Vấn đề Serialization được RMI quan tâm, java cung cấp 2 interfacejava.io.Serializable và java.io Externalizable nhằm mục đích Serialization Dođó nếu khai báo một object hiện thực một trong 2 giao diện này thì object đócó thể serialized, gọi là Serializable object
♦Một object có thể tham khảo đến nhiều object khác do đó object này phảiđược stored và retrieved cùng một thời điểm với các object mà nó tham khảođến để duy trì được những quan hệ chính xác giữa các đối tượng
4.3.2 Object persistence :
Persistence chỉ khả năng lưu trữ một đối tượng đang tích cực và kích khởi chúng trởlại tại trạng thái khi lưu trữ trước đó Object Serialization cho phép đối tượng đượcđưa vào stream và lưu xuống file sau đó từ file phục hồi lại Object persistence rất
Trang 14quan trọng trong việc thiết kế những ứng dụng hướng đối tượng Trong mô hìnhMobility framework, việc lưu lại các object có ý nghĩa rất quan trọng trong việc phụchồi lại agent khi truyền thất bại Đặc tính này có thể được sử dụng để đảm bảo tínhfault tolerance của hệ thống Ngoài ra khi một sự kiện collaboration được phát đi thìcác agent đang hoạt động phải tạm dừng để ưu tiên cho sự kiện này, persistennceobject sẽ làm nhiệm vụ tạm thời lưu lại các object này và phục hồi lại sau đó.
4.3.4 Dynamic Class Loading:
Java cho phép các giá trị trả về hay tham số truyền đi là một object thực sự với nhữnghành vi và dữ liệu được khai báo trong class RMI sử dụng Serialization để truyềnnhận các object và việc này có liên quan đến class loading
Dynamic class loading là một cơ chế được java thực hiện nếu như trong lúc thực thichương trình mà phải tham khảo đến một object thuộc một lớp không được định nghĩatrên JVM hiện tại Dynamic class loading sẽ tự đi load bytecode của class này và tạo
ra một instance của class này để thực hiện công việc Việc tìm kiếm bytecode củaclass mới phải được người lập trình chỉ ra một các chính xác thông qua Classpath vàcodebase
Như vậy các đối tượng được truyền đi trong dòng dữ liệu đều có những thông tin đặctả class của nó, điều này giúp cho java thực hiện việc load bytecode
Trong RMI, khi một đối tượng được viết xuống stream, một ClassDescriptor cũngđược viết xuống để xác định class của đối tượng này Nơi nhận object stream sẽ đọcClassDescriptor và quyết định những class nào có sẵn cục bộ và nhựng class nào cầnđược load bởi class loader
Trang 15♦ Như vậy khi giá trị trả về hay tham số của một hàm là một đối tượng thì đốitượng của class này có thể được thay bằng đối tượng của một class khác tươngđương Đây chính là ưu điểm của việc load class động trong Java.
♦Class Loading của object serialization:
Trạng thái của một object được xem là tập các giá trị của các biến thành phầncủa object đó, không có code đi kèm theo
Class loading là quá trình mà trong đó class của java object có thể được load trong lúcthực thi từ nơi chứa source code của nó
Java classes có thể được load từ files, Web server, database, hoặc một số nơi chứasource khác Do đó người lập trình có thể xây dựng một class loader cho riêng họ, đểcó thể load classes ở bất cứ nơi nào mà họ muốn
Do vậy trong quá trình xây dựng mobile agent (phần moving) Khi trạng thái củamobile agent được di chuyển đi, thì class của nó cũng có thể di chuyển theo bằngclass loader Khi agent đến host đích, thì class của agent được chứa vào bộ nhớ củahost đó và đồng thời instance của nó được tạo cùng với thông tin trạng thái đi kèm.Đến đây, vai trò của Object Serialization lại được thể hiện, nó sẽ tự động load classcủa agent khi có yêu cầu Trong trường hợp này, Object Serialization gọiClassDescriptor ClassDescriptor là một đối tượng dùng để mô tả class cho một javaobject Trong quá trình ghi serializable object, thì ClassDescriptor được ghi xuốngstream đầu tiên Đây là thông tin mà Object Serialization sử dụng để tạo instance choclass của object
4.3.5 Cơ chế RMI truyền thông số
4.3.5.1 Dữ liệu cơ bản:
Khi một dữ liệu cơ bản được chuyển như một thông số cho lời gọi hàm từ xa thì nóđược RMI truyền theo cơ chế passed by value
4.3.5.2 Thông số là đối tượng:
Khi thông số là một đối tượng thì cơ chế truyền khác với JVM đơn RMI gởi chínhobject chứ không phải là tham khảo đến các JVMs Truyền object vẫn là truyền theogiá trị Vì các JVMs không chia xẻ vùng nhớ heap, nên đối tượng là thông số được gởi
đi và tất cả các đối tượng mà nó được tham khảo đến cũng được gởi kèm Như vậy đốivới một cấu trúc nhiều object thì đòi hỏi băng thông rộng và tốn nhiều thời gian CPU.CPU sử dụng kỹ thuật gọi là Serializable để chuyển object sang dạng linear format vàchuyển đi trên mạng Serialized object có thể được deserialized tại bộ nhớ của máyđích và sẵn sàng cho việc sử dụng
4.3.5.3 Thông số là đối tượng từ xa:
Chương trình client có thể tham khảo đến một đối tượng từ xa thông qua RMI registry.Một cách mà client có thể tham khảo đối tượng từ xa là object được trả về cho clienttừ lời gọi hàm
Trang 16Khi hàm trả về một tham khảo cục bộ đến đối tượng từ xa, RMI không trả về đốitượng đó mà thay vì vậy nó cung cấp một đối tượng khác là remote proxy của dịch vụđó trên dòng trả về.
Quá trình sau đây minh họa làm sao RMI thực hiện một lời gọi hàm:
♦Trả về một tham khảo từ xa từ Server về clientA
♦Gởi tham khảo từ xa từ client A đến client B
♦Gởi tham khảo từ xa từ clientB trở về Server
Suốt quá trình này, tham khảo vẫn luôn chỉ đến một thực thể của đối tượng từ xa Khitham khảo được trả về cho Server nó không chuyển thành một tham khảo cục bộ Nếulàm như vậy có thể tốt hơn nhưng cách hiện thực trên đảm bảo ngữ nghĩa của việctham khảo từ xa
4.4 Phát triển mobile object
Phần này chúng ta xem xét làm sao để tạo một Mobile Object bằng RMI Việc này sẽgiúp ích cho thiết kế framework bởi vì tạo Mobile Agent trong Mobility Framework làsự mở rộng của Mobile Object khi gán cho chúng thêm những đặc tính Mobility khác.Thông số đối tượng trong RMI chia làm 2 loại :
♦ Distributed object : luôn hiện thực giao diện java.rmi.Remote
♦Serializable object : luôn hiện thực giao diện java.io.Serializable hayjava.io.Externalizable
Khi client gọi một hàm có thông số là một Distributed object thì thông số này đượcbiểu diễn là một tham khảo từ xa đến đối tượng, tham khảo này được truyền đếnserver Như vậy, trạng thái và code của đối tượng đó luôn nằm trên client tại mọi thờiđiểm
Ngược lại, khi client gọi một hàm có thông số là Serializable object thì trạng thái củađối tượng này được Serialized và truyền đến server Server tạo ra một bản copy củađối tượng này Trong quá trình Serialization, một class descriptor cũng được viếtxuống để đặc tả class của Serialized object này Byte-code của class này có thể đượctruyền từ client đến server theo yêu cầu Kết quả là client và server có sự trao đổiobject, bao gồm cả biến thành viên và byte-code
Như vậy, để tạo ra một Mobile object sử dụng RMI thì phải định nghĩa mộtSerializable class và sử dụng đối tượng của class này như thông số trong lời gọi hàmtừ xa Khi lời gọi hàm được thực hiện thì đối tượng sẽ được copy từ client sang server.Bảo toàn trạng thái : Khi một đối tượng hiện thực giao diện java.io.Serializable hayjava.io.Externalizable đóng vai trò thông số cho lời gọi hàm từ xa, RMI sẽ serializednó xuống object stream nối giữa các ứng dụng phân bố Đối tượng này sẽ được nơinhận deserialized và sử dụng, quá trình này đảm bảo sự bảo toàn trạng thái củaobject
Trang 174.5 Giới thiệu kỹ thuật JINI
Hình 1.3
4.5.2 Lợi điểm của kỹ thuật Jini :
♦ Đơn giản, tin cậy, và mềm dẻo
♦ Cung cấp chức năng mạng “plug and play”
♦ Hoạt động trên một hệ thống kiến trúc dịch vụ
♦ Tạo ra mạng tự nhiên, trong suốt và đồng nhất
♦ Độc lập về kiến trúc
♦ Tạo ra môi trường động
♦ Xóa bỏ ranh giới giữa phần cứng và phần mềm
♦ Cung cấp một kiến trúc hạ tầng cho việc tính toán phân bố
4.5.3.Đặc điểm của kỹ thuật Jini :
♦ Chạy trên máy ảo Java (JVM)
♦ Cung cấp các dịch vụ hỗ trợ cho việc coding các moving objects
♦ Cung cấp các dịch vụ hỗ trợ cho việc hiện thực downloadable code
NetWork
User Defined Service
Lookup Service Jini Application
Trang 18♦ Dựa vào ngôn ngữ lập trình Java.
♦ Việc thêm bớt các dịch vụ không cần sự quản lý
♦ Các dịch vụ độc lập tương đối, nhưng đều có thể hợp tác với nhau mà không cần sựquản lý tập trung
4.5.4 Cấu trúc tổng quát của kỹ thuật Jini :
+ Multicast Request Protocol
+ Multicast Announcement Protocol
+ Unicast Discovery Protocol
4.5.5.1.1 Multicast Request Protocol :
Một dịch vụ mới hay một ứng dụng được kích hoạt lần đầu tiên, chúng sẽ sử dụngMulticast Request Protocol để tìm lookup service gần nhất đang kích hoạt
Lookup ServiceMulticast Request Protocol Service Item
A new Service|Client App
Trang 19Hình 1.4
4.5.5.1.2 Multicast Announcement Protocol :
Lookup service sử dụng protocol này để thông báo sự hiện diện của nó
4.5.5.1.3> Unicast Discovery Protocol :
Được sử dụng khi cần tạo sự nối kết giữa các dịch vụ và lookup service
Hình 1.5
4.5.5.1.4 Join :
Khi một dịch vụ tìm ra được một community, nó có thể gia nhập community đó bằngprotocol Join thông qua việc gởi proxy object và các thuộc tính của nó đến các look upservices của community đó
Sau quá trình Discovery thành công, nó sẽ trả về một tham khảo đến một objectimplements interface của dịch vụ look up này
Look up được xem như là danh sách các service items và danh sách các thuộc tính môtả dịch vụ đó
+ Mỗi service item chứa một object đóng vai trò proxy cho dịch vụ đó (gọi làproxy service hay service proxy) Các client không cần quan tâm đến về vấn
Lookup Service
Static Connection Service Item
A new Service
Trang 20đề hiện thực của các dịch vụ, mà chỉ cần download proxy object và sử dụng nónhư một front-end để giao tiếp với dịch vụ.
+ Một số thuộc tính cơ bản : tên của dịch vụ, vị trí của dịch vụ, mô tả dịch vụ,
…
Hình 1.6
4.5.5.2.1 Downloadable Proxies :
4.5.5.2.1.1 Dịch vụ hoạt động thông qua Proxy object :
Proxy object được gởi đến clients của dịch vụ để thực hiện những công việc của dịchvụ Chiến lược này đưọc áp dụng trong trường hợp dịch vụ được hiện thực hoàn toànbằng phần mềm và không được hỗ trợ thêm resource từ bên ngoài
4.5.5.2.1.2 Proxy object là một RMI stub kết nối với các dịch vụ từ xa : 4.5.5.2.1.3 Proxy object là một Proxy thông minh :
Nó giao tiếp với client thông qua một protocol chuyên biệt để kết nối với dịch vụ
4.5.5.3 Finding a Service : quá trình một ứng dụng tìm kiếm và sử dụng các services :
Khi đã có tham khảo đến một look up service, một ứng dụng (cũng có thể là mộtservice đã join vào community) có thể duyệt tất cả các sercive items để tìm raservice mà nó mong muốn
Một số phương pháp tìm kiếm :
+ Dựa vào type của proxy object
+ Dựa vào id của service
Lookup Service
Service Item
Service Proxy
Attribute
Trang 21+ Dựa vào các thuộc tính của service.
Kết quả của quá trình look up là một proxy object được trả về cho ứng dụng Và cácứng dụng sử dụng proxy object như là front-end để giao tiếp với dịch vụ được xem làback-end
+ Các dịch vụ có thể bị chết trước khi chúng đăng ký lại với hệ thống
Do đó để giải quyết vấn đề sử dụng hiệu quả tài nguyên, Jini đưa ra kỹ thuật Leasingvà đồng thời chỉ cho phép các services sử dụng tài nguyên trong một khoảng thời gianxác định
uTime – Base Resource Reservation :
Các client phải “đăng ký” thời gian sử dụng tài nguyên hoặc dịch vụ, và nó đượcphép đăng ký lại khi thời gian đã hết Các client có quyền trả lại tài nguyên trước thờigian đăng ký
Leases cung cấp cơ chế giải phóng tài nguyên không còn được sử dụng hay không cầnthiết
Khi thời gian đăng ký đã hết, client phải trả lại tài nguyên hay dịch vụ cho hệ thống,và chúng sẽ không được sử dụng tiếp nếu như chúng không được đăng ký sử dụng lại
Service Item
Client
LookupService
Service
1> Client downloads proxy object for service
2>Client communicates with service via proxy
Trang 224.5.5.5 Remote Event :
Một sự kiện là một object chứa thông tin về sự thay đổi trạng thái của một thành phầnnào đó trong hệ thống
Đặc điểm của remote event :
+ Trong hệ thống phân bố, thiếu sự quản lý các sự kiện một cách tậo trung, vàvấn đề truyền sự kiện trên mạng không bảo đảm tính thứ tự của các sự kiện
+ Không bảo đảm sự kiện đến đúng nơi, không bị sai trong các trường hợp lỗitrong hệ thống mạng như : một bộ phận của hệ thống bị lỗi, hay mạng bị đứt, nơinhận bị treo hay chết …
Jini cung cấp tập các remote events cho các client sử dụng, mà không cần quan tâmchúng được hiện thực như thế nào và nó cũng sử dụng các sự kiện này để đồng bộ cáchoạt động của các dịch vụ và các ứng dụng trong community
4 5.5.6 Transaction :
Transaction bảo đảm tính toàn vẹn dữ liệu Nó nhóm các tác vụ có lên quan thànhtừng nhóm
Transaction cung cấp cơ chế thao tác dữ liệu có các đặc điểm sau :
+ Atomicity : tất cả các tác vụ trong nhóm hoặc đều thành công hoặc đều thấtbại
+ Consistency : sau khi transaction hoàn thành, hệ thống vẫn ở trạng thái ổnđịnh
+ Isolation : transaction trong quá trình thực hiện không giao tiếp với các quátrình khác
+ Durability : tất cả những thay đổi của transaction đều được lưu lại phòngtrường hợp các tác vụ sau bi lỗi
Transaction hoạt động thông qua một thực thể quản lý gọi là transaction manager
uTwo – Phase Commit :
Là protocol mà tất cả các thành phần đều phải thực hiện trước khi transaction thànhcông hay thất bại
Trước tiên, tất cả các kết quả của nhóm tác vụ được tính toán và được giữ lại trong bộnhớ tạm Sau đó mới chuyển chúng từ bộ nhớ tạm đến bộ nhớ chính Chiến lược nàybảo đảm tất cả dữ liệu đều phải được xử lý xong trước khi thật sự lưu chúng vào bộnhớ
Hiện thực bên trong của protocol :
Có hai giai đoạn : precommit và commit
Trang 23các kết quả, rồi lưu chúng vào bộ nhớ tạm Sau khi làm xong, mỗi participant sẽ trảvề một indicator cho transaction manager để thông báo chúng đã vào giai đoạnprecommit thành công.
Hình 1.8
♦Commit :
Sau khi kết thúc giai đoạn precommit, transaction manager sẽ thu thập các kết quảcủa từng participant Nếu như có một participant thất bại, thì manager sẽ bảo mỗiparticipant abort để làm lại Nếu như tất cả đều thành công, thì manager sẽ cho phépcác participant vào giai đoạn commit Lưu giữ lại tất cả các sự thay đổi của chúng
Commit
Trang 244.5.5.7 JavaSpace:
Javaspace có thể được xem như một object storage service của Jini Cụ thể nó chứaJava Object; không những thế, cơ chế lưu trữ và phục hồi các object trong Javaspacerất tự nhiên và dễ dàng đã cho phép Javaspace có khả năng share object giữa các ứngdụng Không giống như các hệ thống lưu trữ object khác, Javaspace không sử dụng
cơ chế naming là phương tiện duy nhất để xác định các object đã được lưu trữ, mà chỉxem tên là một trong những thuộc tính của object mà nó sử dụng để phân biệt cácobject Nếu như JavaSpace không sử dụng tên làm phương tiện duy nhất thì làm thếnào để một ứng dụng có thể tìm thấy và phục hồi object đã lưu trữ ? Câu trả lời là nósử dụng cơ chế attributes-based search giống như lookup service Một object lưu trữtrong Javaspace phải là những Entry ( object đó implements net.jini.core.entry.Entry)của Javaspace Mỗi entry được tìm kiếm thông qua một template đóng vai trò như một
“khuôn mẫu” của Entry cần tìm Template thật ra cũng là một Entry object nhưng cómột số thuộc tính có giá trị cụ thể của Entry object cần tìm kiếm Tuy nhiên để cóJava object lưu trữ trong Javaspace, chúng ta cần phải có thao tác ghi object vào VàJavasapce đã cung cấp tác vụ write, cho phép write một Entry object vào nó Hơn thếnữa, Javaspace còn cung cấp hai tác vụ tìm kiếm Entry là read và take Tác vụ readyêu cầu Javaspace trả về cho nó entry tương ứng với template mà nó đưa vào; tác vụtake cũng có chức năng trên nhưng đồng thời entry bị lấy ra khỏi Javaspace Ngoài raJavaspace còn cung cấp cơ chế notify một dịch vụ hay ứng dụng khi một entrymatches với template của nó Với khả năng này, Javasapce đã cung cấp một cơ chếđồng bộ dữ liệu cho các ứng dụng phân bố Một vấn đề đặt ra là khả năng lưu trữobject của Javaspace là bao nhiêu ? Dĩ nhiên khả năng chứa của Javaspace là hữuhạn và như thế nó chỉ chứa các entry object trong khoảng thời gian được đăng kýtrước trong tác vụ write; khi hết khoảng thời gian này, Javaspace sẽ loại bỏ entryobject đó
Javaspace có hai loại transient và persistent Transient Javaspace chỉ lưu trữ cácobject khi nó đang thực thi Và tất cả các object sẽ không còn được lưu giữ khitransient Javaspace ngưng thực thi Trong khi đó, Persistent Javaspace log các objectđã được lưu trữ xuống đĩa; vì thế, các object đã lưu trữ sẽ được phục hồi khi persistentJavaspace thực thi lại sau khi nó chết
Đến đây, một câu hỏi nữa được đặt ra với một vài tác vụ, làm thế nào Javaspace lạitrở thành công cụ hữu dụng hỗ trợ các ứng dụng tính toán phân bố ? Javaspace sẽ trảlời bằng các đặc điểm của nó
_ Spaces are shared :
Có thể cho phép nhiều ứng dụng đồng thời chia xẻ dữ liệu
_ Spaces are persistent :
Các entry object lưu trữ trong Javaspace tồn tại cho đến khi chúng bị ứngdụng lấy ra ngoài hoặc hết thời gian lease là thời gian tối đa mà Javaspace lưugiữ entry đó
_ Spaces are associative :
Trang 25Sử dụng associative lookup để tìm kiếm các entry object thông qua cáctemplate
_ Spaces are transactionally secure :
Javaspace cung cấp mô hình transaction bảo đảm một tác vụ trong Javaspacelà atomic
_ Exchange executable content :
Khi một enrty object còn được lưu trữ trong Javaspace, nó ở trạng thái thụđộng Tức là ta không thể sửa code hay gọi các methods của nó Nhưng khichúng ta read hoặc take chúng từ Javaspace thì một bản copy của object đóđược tạo và lúc này object đã trở về trạng thái tích cực Chính đặc điểm này đãcung cấp khả năng mở rộng hoạt động của các ứng dụng thông qua Javaspace
Trang 26Chương 2:
ĐẶT VẤN ĐỀ
Trang 271 Mục tiêu thực hiện đề tài
Trọng tâm thực hiện đề tài là đi vào thiết kế và hiện thực một mobility framework.Framework này cung cấp khả năng di chuyển trong suốt cho các mobile agent trongmôi trường Java và cung cấp môi trường thực thi cho các agent trong framework.Ngoài ra framework còn cung cấp cơ chế giao tiếp và phối hợp làm việc giữa cácmobile agent, giải quyết các vấn đề đồng bộ(synchronization), chia sẻ dữ liệu(datasharing), cũng như vấn đề bảo mật Thiết kế và hiện thực mobility framework hướngvào các mục tiêu cụ thể như sau:
1.1 Framework được xây dựng trong môi trường Java:
Để sử dụng tối đa sự tương tác giữa host nơi agent di chuyển đến và các mobile agent,mobility framework được xây dựng trên nền JDK1.3, sử dụng chủ yếu kỹ thuật RMIvà Jini Việc xây dựng framework bằng ngôn ngữ Java cho phép các agent có thể dichuyển trên nhiều flatform khác nhau, kỹ thuật serialization cho phép các đối tượngcó thể được truyền trên mạng như các loại dữ liệu khác nhờ đó framework có thể hỗtrợ việc di chuyển của các agent một cách dễ dàng Ngoài ra kỹ thuật Jini sẽ hỗ trợframework các dịch vụ có sẵn cho hệ phân bố như lookup service, remote event,javaspace, nhờ đó ta dễ dàng hiện thực việc đồng bộ, phối hợp hoạt động và chia sẻdữ liệu…Framework cũng thừa kế tính bảo mật của hai kỹ thuật trên và mô hìnhsandbox của Java 2
1.2 Cung cấp cho người sử dụng một mô hình agent đơn giản, dễ lập trình:
Nghĩa là mobility framework cung cấp một chuẩn agent mà dựa trên đó user dễ dàngđịnh nghĩa một agent của riêng họ và chuyển tải công việc mà họ mong muốn vào nó.Đồng thời framework cũng phải cung cấp nhiều khả năng cho việc lập trình agent nhưkhả năng định thời, khả năng làm được những công việc khác nhau trên các host khácnhau, khả năng đồng bộ, khả năng chia xẻ dữ liệu của agent Có như vậy thì người lậptrình agent mới có thể tận dụng được nhiều lợi điểm của framework vào nhiều mụcđích khác nhau
1.3 Cung cấp khả năng moving trong suốt cho các mobile agent:
Hướng đến việc xây dựng framework hỗ trợ cho việc di chuyển và thực thi công việccủa các agent một cách trong suốt Thực chất quá trình di chuyển của agent là doframework điều khiển, nhưng người sử dụng chỉ nhìn thấy sự di chuyển của mobileagent
1.4 Cung cấp môi trường thực thi cho agent :
Agent được chia làm 2 nhóm : static agent và mobile agent Static agent chỉ thực thicông việc tại một host đơn trong khi mobile agent thì di chuyển và thực thi công việctrên nhiều host khác nhau trong mạng Như vậy để hỗ trợ cho mobile agent, thìmobility framework phải cung cấp môi trường cho mobile agent thực thi tại mỗi host
Trang 28mà nó di chuyển đến Việc thực thi tác vụ không phải bắt đầu lại tại mỗi host mà tiếptục trạng thái của host trước đó, các tác vụ có thể khác nhau ở những host khác nhau.
1.5 Framework phải hỗ trợ remote event :
Framework cung cấp khả năng giao tiếp và phối hợp làm việc giữa các mobile agenthướng đến việc cung cấp cho các mobile agent khả năng collaboration, đồng bộ vàchia sẻ dữ liệu với nhau Điều đó đòi hỏi framework phải hỗ trợ cơ chế truyềnmessage gồm cả bất đồng bộ và đồng bộ Việc thiết kế phải dựa trên những nguyêntắc truyền dữ liệu cơ bản và mở rộng của các nguyên tắc này
1.6 Hiện thực hướng vào tính scalability của framework :
Một trong những đòi hỏi của hệ thống agent trong thực tế là tính scalability Do đó,framework phải được thiết kế sao cho có thể hoạt động với nhiều agent nhất.Framework phải cung cấp một cơ chế persistence để lưu trữ agent và chỉ activateagent khi nó phải hoạt động nghĩa là loại bỏ các thread nhàn rỗi nếu cần thiết
1.7 Hiện thực hướng vào tính mở (openness) của framework
1.8 Framework phải có tính chịu đựng lỗi (fault tolerance) cao :
Cũng như một hệ thống phân bố thông thường, mobility framework phải có tính chịuđựng lỗi cao (fault tolerance) Trong quá trình di chuyển và thực thi của mobile agenttrong framework, khi xảy ra thất bại tại các host hay trong quá trình truyền agent thìmobility framework phải cung cấp một cơ chế phục hồi lỗi
Trang 29Chương 3:
GIẢI QUYẾT VẤN ĐỀ
Trang 301 Phân tích mobile agent & mobility framework
1.1 Mobile Agent
1.1.1 Định nghĩa
Hiện nay, chúng ta có rất nhiều định nghĩa về mobile agent Định nghĩa mobile agentgắn liền với tính năng của framework phục vụ nó Do đó với mobility framework,mobile agent là một thực thể có khả năng thực hiện một số thao tác và đặc biệt là nócó thể tự di chuyển được trên các host của mobility framework, đồng thời còn có khảnăng hợp tác, giao tiếp với các mobile agent khác để thực hiện các tác vụ của nóthông qua synchronous message passing và chia xẻ dữ liệu Vấn đề đặt ra là làm saocó thể hiện thực mobile agent vừa là một thực thể độc lập, lại vừa có thể di chuyểnnhư một moving object Để giải quyết vấn đề trên, chúng ta có thể chia mobile agentsthành hai thành phần : thứ nhất là các mobile agents có khả năng di chuyển để thựchiện tác vụ của nó trên hệ thống mạng và thứ hai là tồn tại framework trong đó chophép các mobile agents được thực thi Do vậy, để có thể hiện thực ý tưởng đó, chúngtôi chia cấu trúc của mobile agents làm hai phần : phần mobile agent di chuyển đượcxem như một moving agent còn nơi cho phép mobile agent hoạt động là agent place
1.1.2 Đặc điểm
Một số đặc điểm của mobile agent :
♦ Mobile : tự di chuyển từ host này đến host khác trong framework Là đặc điểm cơbản nhất của mobile agents
♦ Route determination :
+ Predetermination : lộ trình của mobile agent đã được xác định trước, trong đó
thứ tự của các host mà các mobile agent sẽ đến là quan trọng
+ Dynamic determination : mobile agent có thể chọn đường di cho nó một cách
ngẫu nhiên
+ Hybrid determination : là sự hỗn hợp giữa pre và dynamic determination,
đơn giản, mỗi mobile agent có một danh sách các host đích, nhưng nó có thể tự ý điđến một số host khác Đặc tính này được hiện thực trong mobility framework
♦ Autonomous : là một thực thể độc lập
♦ State-oriented : framework cho phép mobile agent di chuyển ngay cả trong khi nóđang thực thi, lúc đó trong thái hiện thời của mobile agent được đóng gói và di chuyểntheo nó, và ở host đích, mobile agent sẽ được khởi tạo ở trạng thái tiếp theo trạng tháiđược đóng gói theo
♦ Unique identification : mỗi mobile agent đều có một số AgentID định danh duy nhấtcho nó
♦ Data acquisition : mobile agents có quyền yêu cầu một số dịch vụ hay tài nguyêncủa host mà nó đến
Trang 31♦ Timer : là khoảng thời gian được tính từ thời điểm mobile agent được dispatch vàomột host trong framework hoặc vừa đến một host nằm trong lộ trình, nó được thiết lậptương ứng cho từng host trong lộ trình của mobile agent.Timer sẽ không có tác dụngtrong trường hợp mobile agent rơi vào trạng thái deactivation Đặc tính này làm đadạng hóa phương thức moving, mobile agent, nếu như nó không được thiết lập timertương ứng với host mà mobile agent đang “cư trú”, thì mobile agent sẽ được thực thicông việc và rồi di chuyển đi ngay, nhưng nếu user có thiết lập timer này thì mobileagent phải đợi đến hết khoảng thời gian timer, mới được phép thực hiện công việc tạihost đó và di chuyển đi khi hoàn thành công việc.
♦ Communication :
_ Mobile Agent /MobileAgent interaction :
Theo phương thức :
+ Network-oriented : các agents giao tiếp với nhau thông qua cơ chế
message passing khi các agents nằm ở những host khác nhau Và có hình thức cơ bản :
+ Synchronously : việc giao tiếp giữa các mobile agent được đồng bộ
thông qua giao thức gởi nhận message
_Agent group interaction :
Các mobile agent tham gia vào một agent group để có thể đồng bộ theonhóm và trao đổi dữ liệu với nhau Trong trường hợp này, thông thườngagent group thực hiện một công việc do user giao phó và công việc nàyđược chia nhỏ cho các mobile agent thực hiện xong rồi tổng hợp các kếtquả lại
♦ Sharing resource : các mobile agent có thể trao đổi dữ liệu lẫn nhau trong quá trình
di chuyển
♦ Extensible : mobile agents có thể được khởi tạo hoặc hủy bỏ ở thời điểm runtime
♦ Distributed : mobile agents có thể được thực thi ở bất cứ các host trong framework
♦ Parallel : mobile agents có thể hợp tác hoặc tự thực hiện các các công việc songsong nhau
♦ Multimodal
♦ Secure : bảo vệ code, data, trạng thái thực thi của mobile agent trong quá trình thựcthi cũng như trong lúc di chuyển
♦ Dynamic : công việc của agent có thể thay đổi khi đến một host nào đó
♦ Goal_driven : các mobile agent thường thực hiện các công việc của user trong quátrình di chuyển
Trang 32Hình 3.1
♦ Coordinate : các mobile agents có thể gia nhập các Agent Groups để thực hiện việchợp tác
1.1.3 Mô hình life-cycle của mobile agent :
Mobile Agent sau khi do user tạo ra, nó được đưa vào framework; lúc đó nó bước vàogiai đoạn Initialize Sau khi được framework định danh, nhưng nó vẫn ở trạng tháipassive và nó phải được user dispatch để chuyển từ trạng thái passive sang trạng tháiready để framework kiểm tra timer của mobile agent Tức là sau khi dispatch, mobileagent vẫn chưa được thực thi ngay mà phải đợi khi đến hết khoản thời gian timer củamobile agent, thì mobile agent mới được thực thi công việc của nó rồi sau đó dichuyển đi Khi thực thi công việc ở một host, vì một lý do nào đó, mobile agent phảidừng quá trình thực thi nhưng vẫn lưu lại trạng thái hiện thời của nó, lúc đó nó rơi vàotrạng thái deactivation, lúc này timer sẽ không còn tác dụng vì chúng ta không thểbiết thời gian mobile agent ở trạng thái deactivation có vượt quá khoảng thời giantimer không, và sau đó được phục hồi lại quá trình thực thi để chuyển sang trạng tháiactivation; lúc này Mobile Agent sẽ được tiếp tục thực thi tiếp công việc, rồi sau đó dichuyển đi
Moving
Do Tasks
Deactivation Activation
communicate
Trang 33Hình 3.2
initialize initializing
Trang 341.1.4 Phân tích đặc điểm :
1.1.4.1 Mobile
Đặc tính mobile là một trong những đặc điểm quan trọng nhất của mobile agent Cũngnhư đã đề cập ở trên, để cho một thực thể lại có thể di chuyển từ host này đến hostkhác, mobile agent được hiện thực gồm hai thành phần moving agent và agent place.Moving agent là thành phần thực sự di chuyển của mobile agent và agent place đóngvai trò là môi trường thực thi cho moving agent Tại sao phải hiện thực như thế ? Bởi
vì chúng ta không thể di chuyển một thực thể hay một chương trình đang thực thi vàchính vì thế moving agent chỉ đơn thuần là một object Vì chỉ là một object nênmoving agent không thể tự di chuyển được, mà nó phải nhờ đến agent place là môitrường thực thi của các moving agent và cũng là tác nhân di chuyển các moving agent
đi Như vậy, agent place phải được hiện thực như thế nào ? Thật ra agent place đơngiản là tập hợp các dịch vụ hỗ trợ moving agent, là phần tử cơ bản cấu thành mobilityframework Ở đây, để nhấn mạnh sự gắn bó không thể tách rời giữa mobile agent vàmobility framework, đồng thời muốn nói lên tính đặc trưng của mobile agent trongmobility framework, đó là sự tham gia hình thành framework của mobile agent Liệusự tích hợp này có làm cho mobile agent trở nên cứng nhắc, không linh hoạt ? Sự tồntại và đặc tính di chuyển của mobile agent chỉ hiện hữu trong mobility framework Dođó với định nghĩa mobile agent như thế cũng chấp nhận được, bởi vì cho đến naychúng ta vẫn chưa có định nghĩa mobile agent một cách hoàn chỉnh Với cách hiện
thực trên, sự di chuyển của mobile agent là hybrid-determination trong thuộc tính route determination Sự di chuyển có xác định lộ trình trước của mobile agent tuy hơi
cứng nhắc nhưng vẫn thể hiện được thế mạnh của mobile agent khi nó có thể thay đổilộ trình trong lúc thực thi các công việc Một khi mobile agent di chuyển theo các đặctính trên thì nó phần nào có một chút thông minh và điều này không phải dễ thựchiện, ngay cả các hệ thống mobile agent framework trên thế giới cũng chỉ thực hiện
sự di chuyển của mobile agent ở mức độ pre-determination.
1.1.4.2 Autonomous
Đặc tính autonomous thể hiện sự độc lập khi mobile agent di chuyển Tức là nó khôngcần sự can thiệp của user trong quá trình thực thi Có nghĩa là lộ trình của mobileagent cũng như các công việc cần được thực hiện, user sẽ “dạy” cho mobile agenttrước khi dispatch nó vào framework; còn sau đó mọi việc đều do mobile agent tựthực hiện
1.1.4.3 State-oriented
Việc duy trì trạng thái tiếp theo của mobile agent sau khi di chuyển đến một hosttrong framework góp phần thể hiện ý nghĩa của sự di chuyển của các mobile agent.Nếu sự di chuyển của mobile agent chỉ là stateless-oriented thì chẳng khác nào là sự
di chuyển một source chương trình từ host nguồn đến host đích rồi cho chương trình đóthực thi
Trang 351.1.4.4 Unique identification
Vì là một thực thể nên các mobile agent cần có sự định danh duy nhất Việc định danhcho mobile agent không chỉ đơn thuần phân biệt các mobile agent trong frameworkmà còn hỗ trợ việc giao tiếp giữa các mobile agent Do đó, một mobile agent
đang thực thi có một id duy nhất trên toàn mobility framework Dĩ nhiên vấn đề đặt
ra ở đây là làm thế nào để có thể đánh id duy nhất cho từng mobile agent ? Nếu giaocho user xác định ngay khi tạo ra mobile agent thì sự duy nhất sẽ không được đảmbảo Chính vì thế, mobility framework đảm nhận công việc đánh id cho mobile agentkhi nó vừa được tích hợp vào framework Như thế sẽ có thể bảo đảm tính duy nhấtcủa id đánh cho mobile agent Thế nhưng lại nảy sinh vấn đề, do user không thể biếtđược id của những mobile agent này, nên rất khó cho công việc đồng bộ cũng nhưtrao đổi dữ liệu của các mobile agent do user qui định trong quá trình tạo các mobileagent Để giải quyết vấn đề trên, chúng tôi đưa thêm một sự xác nhận tương đối chocác mobile agent; đó là chỉ số order Chỉ số order chỉ có ý nghĩa trong một agentgroup nhằm để phân biệt các thành viên trong group và chỉ số này do user thiết lập
1.1.4.5 Data acquisition
Các mobile agent không chỉ đơn thuần di chuyển, mà nó còn phải thực hiện công việctrong quá trình di chuyển Do đó khi di chuyển đến một host bất kỳ trong framework,nó thường dừng lại để thực thi các công việc và như thế nó thường có nhu cầu sử dụngtài nguyên tại host đó Tuy nhiên không phải mobile agent có quyền sử dụng hết tấtcả tài nguyên tại một host trong framework Mà nó chỉ có quyền sử dụng những gì màframework cung cấp Vấn đề security được đặt ra ở đây
1.1.4.6 Sharing resource
Đây là một trong những thế mạnh của mobile agent, nó cho phép sử dụng các mobileagent trong các ứng dụng xử lý song song và tính toán phân bố Đó là mục tiêu chínhxây dựng mobility framework Các mobile agent có thể chia xẻ dữ liệu khi chúng dichuyển đến một host trong hệ thống framework Việc chia xẻ dữ liệu dẫn đến vấn đềđồng nhất và bảo mật dữ liệu dùng chung
1.1.4.7 Secure
Việc bảo mật trạng thái dữ liệu khi thực thi và khi di chuyển của mobile agent là mộttrong những vấn đề lớn mà mobility framework cần phải giải quyết triệt để Cũng nhưcác framework khác, mobility framework sử dụng các hình thức bảo mậtauthentication, authorization, encryption và software protection
1.1.4.8 Coordinate
Khả năng hợp tác là thế mạnh của mobile agent; điều đó cho phép user có thể tạo racác ứng dụng tính toán phân bố và xử lý song song
Trang 361.2 Mobility Framework
1.2.1 Đặc tả
Từ định nghĩa và các đặc tính của mobile agent, chúng ta đi đến việc thiết kếmobility framework cung cấp cho mobile agent tất cả các đặc tính đã được mô tả ởtrên Ngoài ra, để framework có thể cho phép xây dựng các ứng dụng sử dụng mobileagent trên các lĩnh vực xử lý song song và phân bố, cụ thể như mobile agentcomputing, nó còn được trang bị thêm một số tính năng của một hệ phân bố nhưresource sharing, transparency, fault tolerance, openness, concurrency
Có thể mô tả : mobility framework là một hệ thống phân bố, bao gồm các agentplaces, một số các component đóng vai trò dịch vụ và các moving agents Chức năng
cơ bản của mobility framework là cung cấp một cơ chế cho phép các mobile agentcó thể tự di chuyển giữa các host trong framework Các mobile agent chỉ được phép
di chuyển source code và trạng thái của nó Các mobile agents có thể di chuyển theomột lộ trình là danh sách các host đã định trước, nhưng có thể thay đổi lộ trình trongquá trình thực thi của công việc Như đã giới thiệu ở trên, các agent place là một bộphận của mobile agent có nhiệm vụ di chuyển các moving agent là bộ phận di độngcủa mobile agent Sự di chuyển với một mức độ bảo mật có thể chấp nhận được thìmới bảo đảm vai trò ứng dụng của mobility framework trong tương lai Và agent placeđược cấu thành từ các dịch vụ sẽ có thể đảm nhận được nhiệm vụ trọng tâm này Cácdịch vụ trong agent place phải làm như thế nào để có thể di chuyển một java objectnhư moving agent ? Với kỹ thuật object serialization, java đã cho agent place khảnăng di chuyển các moving agent Tuy nhiên mobility framework không sử dụng trựctiếp object serialization mà sử dụng cơ chế RMI của java vẫn dựa trên nền tảng objectserialization cho phép di chuyển một object với hình thức là một tham số của lời gọihàm từ xa của RMI Chúng ta vẫn có thể sử dụng trực tiếp object serialization, rồi sửdụng socket để gởi các moving agent đi, nhưng với cách làm này không bảo đảm antoàn cho các mobile agent Đó là lý do sử dụng RMI Còn một vấn dề nữa là làm saocó thể phối hợp hoạt động của các agent place trong framework Và vấn đề nay cóthể được giải quyết bằng các công nghệ JINI, JavaBean Enterprise hay Corba,… Vớinhững ưu điểm hỗ trợ tính toán phân bố và đặc biệt là khả năng resource sharing tốt,JINI là một công nghệ thích hợp nhất vì nó phù hợp với mục tiêu xây dựng mobilityframework; đó là hỗ trợ các ứng dụng tính toán phân bố và xử lý song song
Với những đặc tả như trên, liệu mobility framework có đủ khả năng hỗ trợ mobileagent ? Chúng tôi gặp khó khăn trong vấn đề thiết kế xây dựng framework Mặc dùđã có một số agent framework được xây dựng, nhưng chúng ta vẫn chưa có một chuẩnqui định về mobility framework Do đó việc thiết kế mobility framework trước hếtdựa trên sự tham khảo các agent framework đã được xây dựng đồng thời kết hợp vớiviệc nghiên cứu mobile agent đã cho chúng tôi cơ sở thiết kế và hiện thực mobilityframework mang những đặc trưng riêng và có sức mạnh riêng của nó
Tóm lại, mobility framework có một số chức năng và đặc tính như sau:
Trang 37♦ Mobility ( Low level distribution support mechanism ) : cung cấp cơ chếmoving cho các mobile agents và cho phép chúng giao tiếp, phối hợp với nhau.
♦ Identifiers : các agents trong framework được xác định một cách duy nhấtthông qua số danh định Mobility framework phải cung cấp cơ chế cấp địnhdanh trong hệ thống sao cho thống nhất và dễ quản lý
♦ Agent programming language : các mobile agent được viết bằng ngôn
♦ Quản lý life-cycle của các mobile agents trong framework
♦ Quản lý lộ trình của các mobile agents : cung cấp class và method cho phépngười sử dụng nhập itinerary và thiết lập các thuộc tính liên quan đến itineraryđó
♦ Hỗ trợ sự hợp tác giữa các mobile agent trong các Agent Group : cho phépagent gia nhập, rời khỏi hoặc đăng ký lại Agent Group
♦ Persistence : lưu trạng thái của các agent để khắc phục lỗi khi hệ thống bịthất bại
♦ Security : chủ yếu dựa vào các kỹ thuật security do Java cung cấp và chiếnlược authentication và authorization, chúng tôi không đi vào quá sâu vấn đềnày, vì đây là vấn đề lớn, phức tạp của mobility framework đòi hỏi nhiều thờigian và công sức
♦Bên cạnh đó, vì là một hệ phân bố nên mobility framework phải thể hiệnđầy đủ các đặc tính cơ bản của hệ phân bố như resource sharing, transparency,
fault tolerance, openness, concurrency.
Trang 381.2.2 Mô hình
Ta xem xét Mobility Framework ở cấp user view :
Hình 3.3Mô hình mobility framework ở gốc độ hiện thực :
Agent Communication
Trang 392 Thiết kế agent structure & mobility framework
2.1 Thiết kế Mobile Agent
Dựa vào định nghĩa và các đặc điểm của agent, có 2 thành phần liên quan đến việchiện thực một kiến trúc mobile agent : moving agent (phần di chuyển) và agent place(phần cố định)
Hình 3.5 Mô hình mobile agent
Hiện thực Mobile Agent theo công thức :
Mobile Agent = Moving Agent + Agent Place.
Mobile agent được thiết kế hướng vào đặc tính xác định trước (predetermination) lộtrình và công việc, do đó tất cả các mobile agent đều có object Itinerary đi theo, đểxác định trước lộ trình của mobile agent Ứng với mỗi Itinerary, user có thể thiết lậptimer để quy định thời điểm thực thi của mobile agent được tính từ lúc dispatch agentvào framework hoặc mobile mới vừa đến một host trong lộ trình, cộng thêm khoảngthời gian timer Bên cạnh đó ứng với mỗi Itinerary, user có thể thiết lập các tác vụ màuser mong muốn agent thực hiện tại host đó Các mobile agent có khả năng thể hiệnđặc tính dynamic của nó, tức là có thể thực hiện các công việc khác nhau khi đến cáchost khác nhau trong framework Các mobile agent phải thực hiện một công việc hoànchỉnh tại mỗi host trong framework, tuy vậy các công việc có thể liên quan với nhauvề mặt dữ liệu mà mobile agent đó xử lý Vấn đề này cũng liên quan đến đặc tính
State-oriented của mobile agent và nó được kỹ thuật RMI dựa trên Object
Serialization của java thực hiện Để thể hiện đặc tính dynamic này, chúng tôi đã cho
Trang 40phần hành động của mobile agent đi kèm với Itinerary và cũng cho phép mobileagent chỉ làm một hành động duy nhất khi đi đến các host trong framework Hơn thếnữa, để hỗ trợ sự giao tiếp và phối hợp hoạt động giữa các agent, tại mỗi itineraryuser có thể quy định việc đồng bộ giữa các agent(bao gồm việc gởi hay nhận sự kiện)
communication và coordinate của mobile agent được hỗ trợ từ framework dựa vào cơ
chế message passing Ở đây, nảy sinh vấn đề bảo mật các thông điệp, chúng tôi chỉsử dụng các kỹ thuật security của Java
Vì là một thực thể, nên mobile agent có tính Unique identification được hiện thực bằng
cách gán cho mỗi mobile agent một số ID duy nhất trong toàn framework; việc địnhdanh nay do framework thực hiện
Trong framework có hai loại agent, một loại chỉ mình nó thực hiện các công việc,không liên quan đến bất kì một agent nào khác (có thể gọi loại này là normal agent),một loại khác tự nó thực hiện công việc nhưng có sự trao đổi dữ liệu và đồng bộ vớicác agent khác (có thể gọi loại này là collaboration agent) Các collaboration agent sẽtham gia vào các agent group và chỉ có thể trao đổi và đồng bộ với các agent tronggroup đó
2.2 Thiết kế Moving Agent
♦ nội dung của các biến (trạng thái dữ liệu)
♦ trạng thái thực thi (trạng thái chương trình : trạng thái stack, program counter,…)Nhưng chúng ta bỏ qua việc moving trạng thái thực thi Moving agent được gởi đếnhost đích bằng cách gởi trạng thái dữ liệu và source code Host đích sẽ kiểm tra trạngthái dữ liệu nhận được , sau đó yêu cầu load các classes của agent không cục bộ, nằmtại vị trí host nguồn, nơi mà mobile agent xuất phát Sau khi agent được khởi độngthành công tại host đích, nó bị xóa đi tại host nguồn Moving agent có thể gia nhậpvào agent group để các moving agents hợp tác với nhau
Do đó một moving agent đơn giản là một Java serialized object hiện thực một tronghai interface java.rmi.Serializable hoặc Java.io.Externalizable Nó có thể di chuyểntrong mạng như một thông số cho lời gọi hàm từ xa của kỹ thuật RMI
Khi moving agent di chuyển host cuối cùng thì vai trò của moving agent đến đây làkết thúc và nó sẽ bị host đó hủy đi
Mỗi moving agent có một định danh duy nhất trong framework, định danh này sẽ chobiết thông tin về nơi khởi tạo agent đầu tiên Ngoài ra agent còn có thuộc tính typexác định loại agent (normal hay collaboration) Nếu agent thuộc loại collaboration thì