Do an Mobile Framework
Trang 1Chương 1:
GIỚI THIỆU
Trang 21 Giới thiệu đề tài1.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ụng má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ống trướ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 đổi dữ 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ệc tí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ự di chuyển trong framework và có khả năng thực hiện các công việc khác nhau trên các host khác nhau Tại mỗi host trong framework , mobile agents có thể sử dụng các tài nguyê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ác host 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ến và code của nó Ngoài ra mobile agent còn có khả năng giao tiếp với các mobile agent 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ày thự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ực hiện các tác vụ khác nhau ở các host khác nhau của mobile agent chính là đặc điểm nổi bật nhất của mobility framework Bên cạnh đó framework còn cung cấp cho các agent 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ải quyế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ựng mobility framework ứng dụng cho xử lý song song và phân bố là một hướng nghiên cứ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ực một Mobility Framework nhằm ứng dụng trong xử lý song song và phân bố trong môi trườ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ép các mobile agent có thể di chuyển trên nhiều platform khác nhau, đồng thời framework 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ác vớ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ác vụ 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ông minh nhất định “, nó có thể thực hiện một số hành vi để thích ứng với môi trường xung 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 di chuyể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ôi sẽ đề 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ải quyế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ụ động phả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 user và có thể kiểm soát được một số hành vi cơ bản Agent luôn “xem xét” môi trườ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ần có 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ọc gồm những quy luật đánh giá hành động quá khứ bằng cách so sánh với mục tiêu Ngoài ra agent không chỉ đơn thuần thích nghi với môi trường xung quanh, 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ết vấ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ính chung 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ình hướ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ừng quá 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ồi lại tiếp tục quá trình thực thi Cũng như một agent thông thường, mobile agent được tạ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ột hay 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à cung cấ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ác tá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ường thự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ác communication protocol, tần suất gởi nhận dữ liệu khá cao giữa các component của hệ thống Trong khi đó mobile agent cho phép di chuyển quá trình tính toán đến nơi có 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ơi lưu trữ đến nơi xử lý.
♦Encapsulate protocol : khi dữ liệu được trao đổi trong hệ thống phân bố, mỗi component 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 đích thực hiện protocol tại component đó.
♦ Execute asynchronously and autonomously : khi có nhu cầu tính toán phân bố, 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ết phả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ứa dữ 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ống mạ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ại cho mobile agent khả năng này Mobile agent dễ dàng thích ứng với các môi trường khác nhau trong quá trình di chuyển Ngoài ra khi một host chứa mobile agent đang thực thi bị chết thì có thể dễ dàng dispatch mobile agent đó vào host khác để tiếp tục quá 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ưng cũ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ính toá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ác vấn đề tìm kiếm, truy vấn, mail clients, transaction front-end, thường gắn liền với môi trường thực thi của các mobile agent Dưới sự hỗ trợ của một framework, các trình ứng dụng sẽ gởi yêu cầu đến các mobile agent, các mobile agent này sẽ nhận yê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ần cá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ệc giao 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ều hà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ác mobile agent.
Ngoài ra, một trong những nguyên nhân thể hiện tính khả dụng của mobile agent computing 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-based hay 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ường hợ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 mobile agent 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ải quyế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 ứng dụng cho xử lý song song và hệ phân bố Ngoài những nhu cầu trên Mobile Agent với sự hỗ trợ của hệ thống framework sẽ khẳng định thêm tính khả dụng của nó trong hiệ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ách hiệ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 để
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 low bandwidth
♦ 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ống framework, 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 ứng dụ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ống framework Đâ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úc request/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 Mobility Framework.
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ào framework Một cách tổng quát, framework có thể hiểu như tập hợp các nhóm thành phầ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 cho mobile agent và đặc biệt là môi trường thực thi cho các mobile agent khi chúng đến một host trong framework Cho đến nay, chúng ta vẫn chưa có một chuẩn framework nà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 framework Concordia 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 ứng dụ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ăng mobility và autonomy cho mobile agent Hệ thống framework của Concordia bao gồm mộ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ác chương trình Concordia server chạy trên máy ảo Java và các mobile agent được hiện thực bằng một object của ngôn ngữ Java Concordia server tạo hủy cũng như cung cấp mô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 Concordia framework còn cung cấp khả năng hỗ trợ lẫn nhau giữa các mobile agent và hệ thống bả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ững object 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 host khá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ôi trường thực thi Nhưng Aglet không cho phép gởi message đến Aglet agent đang di chuyển Dó đó nó rất hạn chế trong vấn đề giao tiếp giữa các agent Hệ thống bảo mậ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ựng framework 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ếp giữa các mobile agent.
3.1.4 Voyager tool
Voyager chưa phải là một framework, nó chỉ được xem là một công cụ hỗ trợ agent và hỗ trợ chuẩn CORBA.
Voyager cung cấp các agent là các object tương đối độc lập với ứng dụng, các object này có thể di chuyển giữa các ứng dụng khác nhau Voyager còn cho phép xây dựng các agent từ các process từ xa Voyager hỗ trợ mobile agent theo cơ chế bảo mật và persistences Do đó nó còn hỗ trợ các place processes cung cấp cho các agent tính độc lập với các host và khả năng di chuyển Có thể nói, các agent processes cung cấp các môi trường cho các Voyager agent thực thi khi chúng di chuyển trên mạng Voyager agent có thể được xây dựng từ nhiều host khác nhau thông qua cơ chế gọi từ xa Các instance của các agent được tạo và thực thi trong các agent processes Các agent processes sử dụng các proxy (tham khảo đến remote object) để có thể truy xuất các remote agent (giống như RMI, CORBA)
Một Agent được active trong một agent processes thì có thể sử dụng tài nguyên ở host chứa agent processes đó.Trong voyager khi một object extends class com.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ế proxy của agent còn gọi là NameSpace (gần giống như cơ chế naming của RMI) 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ống framework 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ưng phả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 trong phạ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àn khô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ủa cá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ực thể độ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ời kết hợp với các đặc điểm của các framework như Aglet, Odessey và Voyager để xây dự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ủa nhiều nhóm thực thể có liên quan Mobility framework chú trọng vào 3 nhóm thành phầ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ểm khác biệt giữa mobility framework với các framework khác Trong khi những mobile agent của Concordia, Aglet và Voyager là các java object thì mobile agent của mobility 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 mobility framework 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ời giữ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ách khá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 mobile agent 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ế synchronous message passing giữa các mobile agent; đây là một trong những thế mạnh quan trọng của mobility framework Đồng thời khả năng bảo mật tuy chưa hoàn chỉnh nhưng mobility 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 đảm sự 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ập nền (non-platform), đây là một trong những đặc tính quan trọng để xây dựng mobile agent Một đặc điểm thứ hai khá quan trọng là java được xây dựng hướng về Internet thí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 Object Serialization cho phép ghi một object thành bytecode stream có thể dễ dàng truyền nhận trên mạng Ngoài ra Class Loading là quá trình mà trong đó class của java object 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ể load classes ở 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ợp với Internet là khả năng bảo mật của nó Cơ chế sandbox của java đã góp phần đáng kể 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ông nghệ 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ểm tươ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ình hướng đối tượng, ngoài ra nó còn cho phép một Client có thể gửi một Object đến cho Server 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,ù JINI là 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ài nguyên trong hệ thống Cụ thể hơn, JINI là tập hợp các specifications cho phép các dịch vụ tìm thấy nhau trong hệ thống mạng và cung cấp framework cho phép các dịch vụ đó 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 Java sử 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ữa cá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ác object trong các ứng dụng đó phải có khả năng giao tiếp với nhau, có thể giao tiếp theo cơ chế remote method (object ở ứng dụng này gọi thực hiện một method của object 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 ứng dụ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 đến cá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 object sau 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ác interfaces 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ụngkhá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ệnthự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 host khác giống như chúng ta đi học từ nhà đến trường trong thực tế Thực chất của việc di chuyển một object là sự di chuyển dòng dữ liệu từ host này đến host khá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ức nà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ư: user interfaces, truy xuất file, nhờ CPU thực hiện tính toán, Do đó vấn đề đặt ra là phải xây dựng môi trường cho phép tất cả các object có thể truy xuất được tài nguyên của hệ thống phân bố Ví dụ như một object muốn truy xuất tài nguyê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ể “di chuyể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ột số 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ủa mobile 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 đến vù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ủa object ở đí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ấp nhiều kỹ thuật hỗ trợ việc di chuyển object và Java là một ngôn ngữ không phụ thuộc platform cho nên cho phép các agent có thể di chuyển trên nhiều hệ điều hành khác nhau.
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 chi tiế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ững khí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 Trong việ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ục hồi chúng.
Trang 134.3.1.1 Marshaling:
Marshaling là quá trình chia dữ liệu thành những bytes mà có thể truyền dễ dàng trên kênh truyền DataOutputStream có thể xử lý việc marshaling trên những kiểu dữ liệu cơ bản Nếu dữ liệu là một đối tượng thì đối tượng này phải được chia ra sao cho có thể phục hồi lại được tại nơi nhận Object Serialization được dùng để chỉ quá trình marshaling một đối tượng thực sự sao cho chúng có thể được truyền đi trên kênh truyền và phục hồi lại tại nơi nhận Trong quá trình Serialization dữ liệu thành những byte stream, thì nó đồng thời cũng lưu lại những thông tin cần thiết để phục hồi lại dữ liệu Cách truyền một đối tượng là lưu một graph mô tả cấu trúc của các tham khảo của object đó.
4.3.1.2 Unmarshaling:
Unmarshaling là quá trình phục hồi lại dữ liệu nhận được với những thông tin như trên.
4.3.1.3 Marshaling Object:
Để có thể truyền được object thì Java hỗ trợ class ObjectOutputStream cho phép ghi một đối tượng xuống stream Class này sẽ thực hiện việc marshaling object thành byte stream và ghi xuống DataOutputstream Như đã trình bày, quá trình marshaling này bao gồm cả một graph mô tả các tham khảo của object.
4.3.1.4 Unmarshaling object:
Tại nơi nhận, byte stream này sẽ được ObjectInputStream xử lý và phục hồi nó thành object lúc ban đầu.
♦Trong quá trình serialization, một graph của đối tượng và các tham khảo của nó được tạo ra Nhiều tham khảo đến cùng một object được đếm sao cho các bảng copy của object đó không được tạo ra trong quá trình deserialiation Khi một object được đọc tại ObjectInputStream thì một bản copy được tạo ra, đối tượng nằm trên dòng vẫn không bị ảnh hưởng bởi sự thay đổi trong quá trình deserialization.
Khi 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 interface java.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ình Mobility framework, việc lưu lại các object có ý nghĩa rất quan trọng trong việc phục hồ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ính fault 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, persistennce object 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 đó.
Security mức resource có liên quan đến việc phát triển ứng dụng bởi vì nó tác động trực tiếp đến tài nguyên của hệ thống.
Java sử dụng mô hình sandbox, là một vùng được xem là an toàn cho những code không tin cậy Đặc tính của nó là những code cục bộ đáng tin cậy mới có thể có quyền truy cập những tài nguyên hệ thống quan trọng, trong khi những code được download thì chỉ được truy cập một số tài nguyên giới hạn nào đó trong sandbox.
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ững hành vi và dữ liệu được khai báo trong class RMI sử dụng Serialization để truyền nhậ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 thi chương trình mà phải tham khảo đến một object thuộc một lớp không được định nghĩa trê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ủa class 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 đặc tả 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ẽ đọc ClassDescriptor 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ì đối tượ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ần củ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úc thự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ứ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ể 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ủa mobile agent được di chuyển đi, thì class của nó cũng có thể di chuyển theo bằng class loader Khi agent đến host đích, thì class của agent được chứa vào bộ nhớ của host đó 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 class của agent khi có yêu cầu Trong trường hợp này, Object Serialization gọi ClassDescriptor ClassDescriptor là một đối tượng dùng để mô tả class cho một java object Trong quá trình ghi serializable object, thì ClassDescriptor được ghi xuống stream đầu tiên Đây là thông tin mà Object Serialization sử dụng để tạo instance cho class 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ính object chứ không phải là tham khảo đến các JVMs Truyền object vẫn là truyền theo giá 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 đối vớ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 client từ 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ề đối tượ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 Khi tham khảo được trả về cho Server nó không chuyển thành một tham khảo cục bộ Nếu là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ệc tham 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 hay java.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 được biểu diễn là một tham khảo từ xa đến đối tượng, tham khảo này được truyền đến server 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ết xuống để đặc tả class của Serialized object này Byte-code của class này có thể được truyền từ client đến server theo yêu cầu Kết quả là client và server có sự trao đổi object, 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ột Serializable class và sử dụng đối tượng của class này như thông số trong lời gọi hàm từ 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 hay java.io.Externalizable đóng vai trò thông số cho lời gọi hàm từ xa, RMI sẽ serialized nó xuống object stream nối giữa các ứng dụng phân bố Đối tượng này sẽ được nơi nhận deserialized và sử dụng, quá trình này đảm bảo sự bảo toàn trạng thái của object.
Trang 174.5 Giới thiệu kỹ thuật JINI4.5.1 Giới thiệu :
Jini là kỹ thuật dựa trên Java với mục đích tạo ra các mạng linh hoạt và trong suốt bằng cách thực hiện các dịch vụ và mở rộng chức năng của chúng ra toàn mạng Hệ thống Jini là 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ài nguyên.
Trong hệ thống Jini, các dịch vụ liên kết với nhau để hoạt động hỗ trợ lẫn nhau và một tập hợp các dịch vụ này được gọi là một community Tất cả các dịch vụ trong một community đều có khả năng nhận biết nhau và sử dụng lẫn nhau.
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.
User Defined Service
Lookup ServiceJini 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ụng Multicast Request Protocol để tìm lookup service gần nhất đang kích hoạt.
Lookup Service Multicast 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ằng protocol Join thông qua việc gởi proxy object và các thuộc tính của nó đến các look up services của community đó.
4.5.5.2 Look up :
Mỗi look up service có thể phục vụ một hay nhiều community và một community có thể có một hay nhiều look up services
Là một process chạy nền, quản lý các dịch vụ đã gia nhập vào hệ thống Jini Không giống như Name Server, không những nó cung cấp cơ chế mapping giữa hệ thống tên với hệ thống objects, mà còn có một số chức năng như : tìm kiếm và resolve theo kiểu của các objects, hoặc tìm kiếm lớp cha và các interfaces của objects.
Sau quá trình Discovery thành công, nó sẽ trả về một tham khảo đến một object implements 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ịch vụ 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àn bằ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ột service đã join vào community) có thể duyệt tất cả các sercive items để tìm ra service 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.
Hình 1.7
4.5.5.4 Leasing :
Vấn đề :
+ Không thể đảm bảo các communities luôn ổn định, không bị lỗi , và khó có thể phát hiện và khắc phục vấn đề hệ thống bị lỗi ở một vùng nào đó cũng như các services nắm giữ tài nguyên trong thời gian dài mà ít được sử dụng tới.
+ 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 Leasing và đồng thời chỉ cho phép các services sử dụng tài nguyên trong một khoảng thời gian xá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ó được phé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ời gian đă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ần thiế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.
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ần nà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ỗi trong 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ơi nhậ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âm chú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ác hoạ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ành từ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ất
+ Durability : tất cả những thay đổi của transaction đều được lưu lại phòng trườ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ành cô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ày bả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 ♦Precommit :
+ Trước tiên, transaction manager tập hợp các tác vụ bao gồm trong transaction lại với nhau Các tác vụ này được gọi là participants trong transaction.
+ Sau đó, tín hiệu điều khiển được gởi đến từng participants để cho phép chúng vào giai đoạn precommit Trong giai đoạn này, các participants tính toán tất cả
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ạn precommit 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ỗi participant abort để làm lại Nếu như tất cả đều thành công, thì manager sẽ cho phép cá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.
Trang 244.5.5.7 JavaSpace:
Javaspace có thể được xem như một object storage service của Jini Cụ thể nó chứa Java Object; không những thế, cơ chế lưu trữ và phục hồi các object trong Javaspace rất tự nhiên và dễ dàng đã cho phép Javaspace có khả năng share object giữa các ứng dụ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ác object 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ụ read yê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 ra Javaspace còn cung cấp cơ chế notify một dịch vụ hay ứng dụng khi một entry matches 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ữu hạ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ỏ entry object đó.
Javaspace có hai loại transient và persistent Transient Javaspace chỉ lưu trữ các object khi nó đang thực thi Và tất cả các object sẽ không còn được lưu giữ khi transient 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 persistent Javaspace 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ại trở 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ị ứng dụng lấy ra ngoài hoặc hết thời gian lease là thời gian tối đa mà Javaspace lưu giữ entry đó.
_ Spaces are associative :
Trang 25Sử dụng associative lookup để tìm kiếm các entry object thông qua các template
_ Spaces are transactionally secure :
Javaspace cung cấp mô hình transaction bảo đảm một tác vụ trong Javaspace là 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 khi chú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 trong mô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ác mobile agent, giải quyết các vấn đề đồng bộ(synchronization), chia sẻ dữ liệu(data sharing), cũng như vấn đề bảo mật Thiết kế và hiện thực mobility framework hướng và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 RMI và Jini Việc xây dựng framework bằng ngôn ngữ Java cho phép các agent có thể di chuyển trên nhiều flatform khác nhau, kỹ thuật serialization cho phép các đối tượng có 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ình sandbox 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ác nhau, khả năng đồng bộ, khả năng chia xẻ dữ liệu của agent Có như vậy thì người lập trì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ệc củ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à do framework điều khiển, nhưng người sử dụng chỉ nhìn thấy sự di chuyển của mobile agent.
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 thi công việc tại một host đơn trong khi mobile agent thì di chuyển và thực thi công việc trê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ếp tụ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 agent hướ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ền message gồm cả bất đồng bộ và đồng bộ Việc thiết kế phải dựa trên những nguyên tắ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ỉ activate agent 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 agent trong 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 framework1.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 agent gắ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 sao có 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ển như một moving object Để giải quyết vấn đề trên, chúng ta có thể chia mobile agents thành hai thành phần : thứ nhất là các mobile agents có khả năng di chuyển để thực hiện tác vụ của nó trên hệ thống mạng và thứ hai là tồn tại framework trong đó cho phép các mobile agents được thực thi Do vậy, để có thể hiện thực ý tưởng đó, chúng tôi chia cấu trúc của mobile agents làm hai phần : phần mobile agent di chuyển được xem 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ển theo 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ất cho nó
♦ Data acquisition : mobile agents có quyền yêu cầu một số dịch vụ hay tài nguyên củ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ào một host trong framework hoặc vừa đến một host nằm trong lộ trình, nó được thiết lập tương ứng cho từng host trong lộ trình của mobile agent.Timer sẽ không có tác dụng trong trường hợp mobile agent rơi vào trạng thái deactivation Đặc tính này làm đa dạng hóa phương thức moving, mobile agent, nếu như nó không được thiết lập timer tương ứng với host mà mobile agent đang “cư trú”, thì mobile agent sẽ được thực thi cô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ì mobile agent 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ại host đó 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ộ theo nhóm và trao đổi dữ liệu với nhau Trong trường hợp này, thông thường agent 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ết quả 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 song song nhau
♦ Multimodal
♦ Secure : bảo vệ code, data, trạng thái thực thi của mobile agent trong quá trình thực thi 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ệc hợ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ào giai đoạn Initialize Sau khi được framework định danh, nhưng nó vẫn ở trạng thái passive và nó phải được user dispatch để chuyển từ trạng thái passive sang trạng thái ready để framework kiểm tra timer của mobile agent Tức là sau khi dispatch, mobile agent vẫn chưa được thực thi ngay mà phải đợi khi đến hết khoản thời gian timer của mobile agent, thì mobile agent mới được thực thi công việc của nó rồi sau đó di chuyển đi Khi thực thi công việc ở một host, vì một lý do nào đó, mobile agent phải dừ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ào trạ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 gian timer không, và sau đó được phục hồi lại quá trình thực thi để chuyển sang trạng thái activation; lúc này Mobile Agent sẽ được tiếp tục thực thi tiếp công việc, rồi sau đó di
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ũng như đã đề cập ở trên, để cho một thực thể lại có thể di chuyển từ host này đến host khá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 đóng vai 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ên moving agent không thể tự di chuyển được, mà nó phải nhờ đến agent place là môi trườ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 đơn giả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 mobility framework Ở đâ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 trong mobility framework, đó là sự tham gia hình thành framework của mobile agent Liệu sự 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ồn tạ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 nay chú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ínhroute 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 đổi lộ 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 đặc tí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ực hiệ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ông cần sự can thiệp của user trong quá trình thực thi Có nghĩa là lộ trình của mobile agent cũng như các công việc cần được thực hiện, user sẽ “dạy” cho mobile agent trướ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 host trong 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 danh cho mobile agent không chỉ đơn thuần phân biệt các mobile agent trong framework mà 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 giao cho user xác định ngay khi tạo ra mobile agent thì sự duy nhất sẽ không được đảm bảo Chính vì thế, mobility framework đảm nhận công việc đánh id cho mobile agent khi nó vừa được tích hợp vào framework Như thế sẽ có thể bảo đảm tính duy nhất củ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 mobile agent Để 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 cho các mobile agent; đó là chỉ số order Chỉ số order chỉ có ý nghĩa trong một agent group 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ệc trong 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ụng tài nguyên tại host đó Tuy nhiên không phải mobile agent có quyền sử dụng hết tất cả 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 mobile agent trong các ứng dụng xử lý song song và tính toán phân bố Đó là mục tiêu chính xây dựng mobility framework Các mobile agent có thể chia xẻ dữ liệu khi chúng di chuyể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ột trong 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ật authentication, 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 ra các ứng dụng tính toán phân bố và xử lý song song.
Trang 361.2 Mobility Framework1.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 mobile agent trên các lĩnh vực xử lý song song và phân bố, cụ thể như mobile agent computing, 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 agent places, 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 agent có 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 theo một lộ trình là danh sách các host đã định trước, nhưng có thể thay đổi lộ trình trong quá 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 động củ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ác dịch vụ trong agent place phải làm như thế nào để có thể di chuyển một java object như 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ực tiếp object serialization mà sử dụng cơ chế RMI của java vẫn dựa trên nền tảng object serialization 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ọi hà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 an toà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 sao có 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ới nhữ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 mobility framework; đó 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ợ mobile agent ? 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ẩn qui định về mobility framework Do đó việc thiết kế mobility framework trước hết dựa trên sự tham khảo các agent framework đã được xây dựng đồng thời kết hợp với việc nghiên cứu mobile agent đã cho chúng tôi cơ sở thiết kế và hiện thực mobility framework 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ất thông qua số danh định Mobility framework phải cung cấp cơ chế cấp định danh 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 ngữ Java
♦ Agent communication : các mobile agents giao tiếp bằng cơ chế message passing synchronously và share data.
♦ Cung cấp cơ chế tạo, hủy một mobile agent : khi tạo một agent thì Mobility framework phải quan tâm đến vấn đề security sao cho tránh việc tạo ra các agent nguy hiểm phá hoại hệ thống vì ta biết agent có thể sử dụng tài nguyên tại host mà nó đến Hoặc khi một agent trở nên không tin cậy hay đã hoàn thành công việc thì framework có thể hủy nó đi.
♦ 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ép ngườ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ép agent 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ến lượ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ời gian 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 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ệc hiệ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ập timer để quy định thời điểm thực thi của mobile agent được tính từ lúc dispatch agent vào framework hoặc mobile mới vừa đến một host trong lộ trình, cộng thêm khoảng thờ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ác host khác nhau trong framework Các mobile agent phải thực hiện một công việc hoàn chỉnh tại mỗi host trong framework, tuy vậy các công việc có thể liên quan với nhau về 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 mobile agent 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 itinerary user 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 định danh 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ới cá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 trong group đó.
2.2 Thiết kế Moving Agent2.2.1 Moving Agent
Moving Agent là phần di chuyển thực sự của mobile agent, di chuyển từ host này đến host khác trong framework để thực hiện một số công việc nào đó.
Một moving agent bao gồm các trạng thái sau: ♦ program code.
♦ 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 đến host đích bằng cách gởi trạng thái dữ liệu và source code Host đích sẽ kiểm tra trạng thá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ằm tại vị trí host nguồn, nơi mà mobile agent xuất phát Sau khi agent được khởi động thành công tại host đích, nó bị xóa đi tại host nguồn Moving agent có thể gia nhập và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 trong hai interface java.rmi.Serializable hoặc Java.io.Externalizable Nó có thể di chuyển trong 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ẽ cho biế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 type xác định loại agent (normal hay collaboration) Nếu agent thuộc loại collaboration thì