Do an Mobile Framework - Pdf 56

Chöông 1:
GIÔÙI THIEÄU
1. 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ụ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

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,. . .
Thô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à

♦ 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ố

Application
Environment
Agent
Execution
Environment
Message Passing System
Communication Infrastructure
phụ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

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.
+ 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.

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.
Chí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

+ 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
Object Bytes
Network
Bytes Object
♦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

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 đó

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.
♦ 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

♦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

♦ 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 :
Các dòch vụ Jini •• JavaSpaces
•• Transaction managers
•• Storage, database,…
Kiến trúc nền của Jini
•• Discovery
•• Lookup Service
•• Leasing
•• Remote events
•• Transactions
Mô hình lập trình Jini
•• Leasing
•• Distributed Events
•• Transactions
4.5.5 Cấu trúc chi tiết của kỹ thuật Jini :
4.5.5.1 Discovery :
Jini Discovery protocol được các dòch vụ và các ứng dụng sử dụng để tìm ra các
community.
Bao gồm :
+ 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

+ 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
+ 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 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
bạ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ò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.
uuTwo – 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

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ả


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status