Giao diện skeleton động (DSI )

Một phần của tài liệu Một số khía cạnh lý thuyết và thực tiễn trong xử lý phân tán (Trang 65)

K hi biên dịch ID L sẽ tự động xuất hiện g iao diện skeleton tĩnh (S S I). G iao tiếp này hoàn thành c á c hoạt động như tách /g ỡ (dem u xin g/d ep atch ing) và giải phóng tham số.

Còn D yn am ic Skeleton (D S I) là do C O R B A đưa ra, D SI cu ng cấp cách thức để đưa c á c yêu cầu từ m ột O R B đến m ột đối tượng thực thi m à không cần thời gian biên dịch để biết về k iểu củ a đối tượng đang thực thi.

D SI cung cấp c á c chứ c năng ch o server tương tự như c á c chứ c năng được D II cu n g cấp trôn clie n t. D SI phải được định nghĩa trước tiên khi xây dựng c á c cầu nối O R B . D SI ch o phép server viết m ã ch o lời gọi bất kỳ trên đối tượng C O R B A .

2 .3 .2 C á c d ịc h vụ C O R B A

M ôi trường O R B tạo điều kiện thuận lợi ch o việc trao đổi thông tin giữa c á c dôi tượng và để c á c đối tượng xác định nhau. Tuy nhiên c á c tính năng đó chưa đủ để xây dựng c á c ứng dụng phân tán qui m ô lớn, đặc b iệ t đối với c á c ứng dụng thích hợp ch o chu yên ngành hẹp. Vì vậy O M G đã đưa ra m ột số tính năng mới thể hiện dưới dạng c á c dịch vụ và c á c phương tiện (hình 2 .1 4 ).

N hổm O M G m ô tả c á c dịch vụ (giao diện m à c á c dịch vụ cu ng cấp) mà không qui định cá ch cà i đặt c á c dịch vụ như th ế nào. C ác dịch vụ đó độc lập với môi trường O R B và do dó số lượng dịch vụ phụ thuộc vào sán phẩm C O R B A của từng hãng.

L u ậ n vãn tốt H iịhiệp ca o học

T ra n g 65

H ìn h 2.14 C á c d ịc h vụ và c á c p h ư ơ n g tiện c ủ a C O R BA

2 .3 .2 .ỉ D ịch vụ đ ặt tên

D ịc h vụ đặt tên (N am ing S e rv ice) là m ột trong c á c dịch vụ cơ bản nhất trong c á c d ịch vụ của kiến trúc C O R B A nói riêng và trong c a c ứng dụng m ạng nói ch u n g , nó ch o phép c á c ứng dụng C lien t x á c định được đối tượng phục vụ trên m ạn g bằng cá ch cung cấp tên sau đó sẽ nhận được tham chiếu đến đối tượng (O b je c t R e fe re n ce ). D ịch vụ này ch o phép c á c đối tượng Servant được đăng ký và x á c định bằng tên, nó sử dụng "nam ing co n tex t" để bảo đảm tập c á c tên là duy nhất. Sự kết hợp giữa tên với đối tượng gọi lầ ràng bu ộc tên “ N am e b in d in g ” và luôn được định nghĩa liên quan với ngữ cảnh củ a tên.

L u ậ n vãn tốt HíỊhiệp cao h ọc

T ra n g 66

Hình 2.15 Mô hình dịch vụ Naming Service

D ịch vụ N am ing Service ch o phép kết hợp m ột hoặc nhiều tên lo g ic với một tham chiếu đối tượng lưu giữ c á c tên trong không gian tên dưới dạng phân cấp và ch o phép dăng ký tên đối tượng trong thời gian chạy. C ác ứng dụng C lient có thể tìm ra đối tượng cần sử dụng bằng cá ch xác định tham ch iếu đối tượng trong không gian tên, qui trình củ a dịch vụ này được thể hiện trên hình 2 .1 5 . Hàm b in d (n a m e ,o b jR e f) dùng để tạo ràng bu ộc tên, hàm reso lv e(n am e) x á c định đối tượng ràng bu ộc với tên trong ngữ cảnh đã ch o .

D ịch vụ N am ing Serv ice được m ô tả trong m odule C osN am ing và được viết dưới dạng ngôn ngữ ID L như sau:

module CosNaming { t y p e d e f s t r i n g I s t r i n g ; s t r u c t N a m e C o m p o n e n t { I s t r i n g i d ; 1 s t r i n g k i n d ; } ; t y p e c l e f s e q u e n c e < N a m e C o m p o n e n t > Name; enum B i n d i n g T y p e { n o b j e c t , n c o n t e x t } ; s t r u c t B i n d i n g { Name b i n d i n g _ n a m e ; B i n d i n g T y p e b i n d i n g _ t y p e ; I ; t y p e d e f s e q u e n c e < B i n d i n g > B i n d i n g L i s t ; i n t e r f a c e B i n d i n g I t e r a t o r ;

Liicjn vein tot nghiệp cao học

T ra n g 6 7 interface NamingContext ( en um N o t - F o u n d R e a s o n { m i s s i n g n o d e , n o t _ c o n t e x t , n o t _ o b j e c t } ; e x c e p t i o n N o t F o u n d { N o t F o u n d R e a s o n w h y ; Name r e s t _ o f _ n a m e ; } ; e x c e p t i o n C a n n o t P r o c e e d { N a m i n g C o n t e x t e x t ; Name r e s t _ o f _ n a m e ; } ; e x c e p t i o n I n v a l i d N a m e { } ; e x c e p t i o n A l r e a d y B o u n d { Ị ; e x c e p t i o n N o t E m p t y { } ; v o i d b i n d ( i n Name n , i n O b j e c t o b j ) r a i s e s ( N o t F o u n d , C a n n o t P r o c e e d , I n v a l i d N a m e , A l r e a d y B o u n d ) ; v o i d r e b i n d ( i n Name n , i n O b j e c t o b j ) r a i s e s ( N o t F o u n d , C a n n o t P r o c e e d , I n v a l i d N a m e ) ; v o i d b i n d _ c o n t e x t ( i n Name n, i n N a m i n g C o n t e x t n c ) r a i s e s ( N o t F o u n d , C a n n o t P r o c e e d , I n v a l i d N a i r t e , A l r e a d y B o u n d ) ; v o i d r e b i n d _ c o n t e x t ( i n Name n, i n N a m i n g C o n t e x t n c ) r a i s e s ( N o t F o u n d , C a n n o t P r o c e e d , I n v a l i d N a m e ) ; O b j e c t r e s o l v e ( i n Name n) r a i s e s ( N o t F o u n d , C a n n o t P r o c e e d , I n v a l i d N a m e ) ; v o i d u n b i n d ( i n Name n) r a i s e s ( N o t F o u n d , C a n n o t P r o c e e d , I n v a l i d N a m e ) ; N a m i n g C o n t e x t n e w _ c o n t e x t 0 ; N a m i n g C o n t e x t b i n d _ n e w _ c o n t e x t ( i n Name n) r a i s e s ( N o t F o u n d , A l r e a d y B o u n d , C a n n o t P r o c e e d , I n v a l i d N a m e ) ; v o i d d e s t r o y ( ) r a i s e s ( N o t E m p t y ) ; v o i d l i s t ( i n u n s i g n e d l o n g h o w _ m a n y , o u t B i n d i n g L i s t b l , o u t B i n d i n g l t e r a t o r b i ) ; } ; interface Bindinglterator { b o o l e a n n e x t _ o n e ( o u t B i n d i n g b ) ; b o o l e a n n e x t _ n ( i n u n s i g n e d l o n g how^ma ny, o u t B i r i d i n g L i s t b l ) ; VO -d d e s t r o y () ; } ; } ;

M od u le C osN am in g b ao gồm hai thành phần g iao diện chính:

Luận văn tốt n^hu’i> c a o học

- G iao diện N am ingC ontext: C ung cấp c á c thao tác phục vụ ch o việc nhúng c á c đối tượng và giải quyết c á c vần đổ về ngữ cảnh củ a tên. - G iao diện B indinglterator: Cung cấ p c á c thao tác lặp lại v iệc nhúng

c á c đối tượng.

D ịch vụ đặt tên được sử dụng chủ yếu trong khi lần đầu tiên truy nhập đến c á c đối tượng phục vụ, sau lần đầu truy nhập tên của đối lượng sẽ được gán ch o ứng dụng C lient.

2.32.2 Dịch vụ sự kiện

C ác ứng dụng dựa trên kiến trúc C O R B A phải c ó cơ c h ế đồng bộ giữa c á c đối tượng khi thực hiện. D ịch vụ dịch vụ sự kiện (Event S erv ice) cung cấp cá c cô n g cụ đê c á c đối tượng C O R B A c ó thể gửi/nhận c á c sự kiện, dịch vụ này phải đảm bảo c á c yêu cầu sau:

- Đ áin b ả o việc phân phát sự kiện ch ín h x á c , đối tượng C O R B A ch ỉ đưa sự kiện vào và sẽ đảm bảo sự kiện đó đến đích theo yêu cầu.

- C ác sự kiện được phân phát theo kiểu hàng đợi.

- Cho phcp c á c tin báo nặc danh (bên phát/nhận không cần biết tên định danh củ a bên k ia).

- C ho phcp kênh sự kiện , bên nhận được phép đăng ký ch ỉ nhận m ột số loại sự kiện .

D ịch vụ sự kiện thực hiện việc liên lạc giữa c á c dối tượng. Đ ể đảm nhiệm vai trò này nó định nghĩa hai vai trò ch o đối tượng: vai trò phát sinh sự kiện (E v en t Supplier) và vai trò xử lý sự kiện (E v en t C onsum er). T rao đổi dữ liệu củ a sự kiện giữa bên phát sinh và bên xử lý được thực hiện bằng cách đưa ra c á c yêu cầu th eo tiêu chuẩn C O R B A . Đ ê phục vụ việc trao đổi thông tin giữa bcn phát sinh và bên xử lý sự kiện, kiến trúc C O R B A đề xuất hai m ô hình sau: (adsbygoogle = window.adsbygoogle || []).push({});

- M ô hình đẩy (push): C ho phép bên phát sinh sự kiện chủ động k ích hoạt việc truyền dữ liệu của sự kiện đến bèn sử dụng. Như vậy phía phát sinh sự kiện dóng vai trò chủ động.

- M ô hình kéo (pull): C ho phép bôn xử lý sự kiện được phép yêu cầu dữ liệu từ bên plìát sinh sự kiện, bên xử lý sự kiện đóng vai trò chủ động. Hai IT1Ô hình trên cù ng thực hiện nhiệm vụ trao đổi thông tin giữa bên phát sinh và hên xử lý sự kiện. Tuy nhiên trône m ô hình thứ nhất bên phát sinh sự

T ra n g 6 (S’

L u ậ n văn tất nghiệp ca o học

T ra n g 69

kiện chủ dộng kích hoạt việc chuyển dữ liệu ch o bôn xử lý, ngược lại trong m ô hình thứ hai bên xử Ịý sự kiện chủ động đưa ra ycu cầu chuyển dữ liệu. Đ ể thực hiện cá c yêu cầu củ a dịch vụ này, nhóm O M G đưa ra đặc tả gồm bốn m od u le: C o sE v cn tC o m m , C osE ven tC h an n elA d m in , C osT yp eđ E ven tC om m , C osT yp cd E v en tC h an n elA đ m in .

V í dụ m odule C osE ventC om m đảm nhiệm chứ c năng liên lạ c giữa bên phát sinh và bên xử lý sự k iện , nó cung cấp 4 g iao diện và được thể hiện trên ngôn ngữ ID L như sau: module CosEventConun { e x c e p t i o n D i s c o n n e c t e d ! } ; i n t e r f a c e P u s h C o n s u m e r { v o i d p u s h ( i n a n y d a t a ) r a i s e s ( D i s c o n n e c t e d ) ; v o i d d i s c o n n e c t _ p u s h _ c o n s u m e r ( ) ; } ; i n t e r f a c e P u s h S u p p l i e r { v o i d d i s c o n n e c t _ p u s h _ s u p p l i e r 0 ; } ; i n t e r f a c e P u l l S u p p l i e r { a n y p u l l () r a i s e s ( D i s c o n n e c t e d ) ; a n y t r y _ p u l l ( o u t b o o l e a n h a s _ e v e n t ) r a i s e s ( D i s c o n n e c t e d ) ; v o i d d i s c o n n e c t _ p u l l _ s u p p l i e r ( ) ; } ; i n t e r f a c e P u l l C o n s u m e r { v o i d d i s c o n n e c t _ p u l l _ c o n s u m e r { ) ; } ; } ;

G ia o diện PushC onsum er dùng để nhận (lữ liệu củ a sự kiện. Như vậy bên cung cấ p sự k iện sử dụng hàm p u sh (...) để truyền dữ liệu ch o bên nhận sự kiện. G ia o d iện PushSupplier cu ng cấp hàm đ iscon n ect_p u sh _su p p lier() để giải phóng c á c tài nguycn m à b ên cu ng cấp sự kiện đã dùng trong quá trình truyền sự k iện . G ia o diện PullSupplier dùng để phát đi dữ liệu củ a sự kiện, bên sử dụng sự kiện gọi hàm p u ll() hoặc try _p u ll(...) để ycu cầu nhận dữ liệu củ a sự k iệ n . G ia o diện P ullC onsu m er cung cấp hàm d iscon n ect_p u ll_co n su m er để k ết thúc v iệc trao đổi thông tin và giải phóng c á c tài nguyên mà bên sử dụng sự kiện đã dùng để hỗ trợ ch o v iệc truyền sự kiện .

G iữ a đối tượng phát sinh sự kiện và đối tượng xử lý sự kiện thường được cài đặt lớp trung gian gọi là Event Channel (kênh sự k iện ). Đ ây là dịch vụ đóng cả hai vai trò: phát sinh và xử lý sự kiện. Thực chất việc cài dặt kênh sự kiện Iìhằm m ục đích hỗ trợ ch o việc trao đổi thông tin theo m ô hình nhiều đối

L u ậ n văn tôt nạhiệp cao h ọc

tượng phát sinh sự kiện và cá c tiến trình xử lý song song, do đó tăng hiệu suất hoạt động của hệ thống.

2.3.23 D ịch vụ duy trì bển vữtiíỊ

D ịch vụ duy trì bền vững (P ersisten ce S erv ice) cung cấp g iao diện chung để b ảo đảm việc duy trì và quản lý trạng thái liên tục củ a c á c đối tượng. K hi quá thời hạn tồn tại, thường c á c đối tượng sẽ được lưu trong c ơ sở dữ liệu và khi cần thiết c ó thể phục hồi lại. T rạn g thái củ a m ột đối tượng gồm hai phần: trạng thái dộng (d y n am ic) và trạng thái bền vững (p ersisten t). T rạn g thứ nhất là thể hiện khi đối tượng được lưu trong bộ nhớ, điều đó không đảm bảo tính an toàn của dữ liệu khi xảy ra sự c ố vì vậy đối tượng sử dụng trạng thái bền để c ó thể dễ dàng khôi phục trạng thái động.

T ra n g 70

Hình 2.16 Nguyên tắc dịch vụ Persistence

Hình 2 .1 6 m inh hoạ c ơ c h ế hoạt động của dịch vụ trạng thái bền vững với nguyên tắc hoạt động như sau:

- C á c đối tượim được lưu trong từng bộ lưu trữ (sto rag e hom e) trong kho dữ liệu.

- M ổi tiến trình tạo ra c á c biến dối tượng (o b je c t in stan ce) và ánh xạ tương ứng với c á c đối tượng trong kho dữ liệu.

L iu ìn văn tôt n ạhiệp ca o học

T ra n g 7 1

Đ ê truy nhập vào đối tượng trong kho dữ liệu cẩn thiết phải tạo liên kết giữa tiến trình với k h o dữ liệu và nhúng đối tượng logic với đối tượng lưu trong kho

dữ liệu. Như vậy v iệc cập nhật c á c biến đối tượng sẽ k éo th eo việc cập nhật đối tượng tương ứng trong kho dữ liệu.

2 .3 2 .4 D ịch vụ v ề chu kỳ sốn g củ a đ ố i tượng

D ịch vụ về chu kỳ sống (L ife C y cle S e rv ice) qui định c á c qui tắc để tạo /x oá/sao chép/di chu yên c á c đối tượng C O R B A . C ác m ôi trường dựa trên kiến trúc C O R B A hỗ trợ c á c đối tượng phân tán, do đó dịch vụ này xây dựng c á c qui ước để ứng dụng C lient có thể thực hiện c á c thao tá c trên đối tượng phân tán tại c á c vị trí khác nhau. T ron g thực tế cá c thao tác này thường gặp những vấn đề sau:

+ V ấ n đ ề k h i tạ o m ộ t đối tư ợ n g m ớ i: ứng dụng C lien t cần phải kiểm soát được vị trí để tạo đối tượng m ới và vị trí đó phải được quyết định th eo ch ín h sách quản trị. K hi tạo m ột đối tượng m ới ứng dụng C lient phải tìm ra thực thể tạo lập đối tượng và liên kết với thực thể đó để tạo đối tượng m ới, m ức độ ảnh hưởng củ a C lient đối với c á c giá trị ban đầu củ a đối tượng m ới tạo lập

+ V ấ n đ ê đi chuyển h o ặ c sa o c h é p đ ố i tượng: ứ ng dụng C lient c ó thể k iểm soát được vị trí của đối tượng nguồn và đích tuân thủ theo chính sá ch quản trị. T ron g qua trình này ứng dụng C lien t phải liên kết với thực th ể phục vụ ch o việc sao ch ép hoặc di chu yển đối tượng đồng thời x á c định những ảnh hưởng đối với m ã lệnh thực hiện củ a c á c đối tượng được sao ch ép h o ặc di chuyển.

+ Ả n h hưởng đ ến c á c đối tượng k h á c : C ác đối tượng phân tán thường c ó m ối liên k ết với nhau (gọi là quan hệ giữa c á c đối tượng), v iệc sao chép/di ch u y ển h oặc xoá c á c đối tượng c ó thể sẽ ảnh hưởng tới c á c đối tượng k h á c, vì vậy cần phải x á c định ranh giới quan hệ củ a đối tượng khi thực hiện c á c thao tác trên.

Đ ể giải q u yết c á c vấn đề trcn, dịch vụ về chu kỳ sống xây dựng m ô hình xử lý củ a C lien t về chu kỳ tồn tại của đối tượng phục vụ ch o c á c thao tác tương ứng

khi tạo lập, x o á, sao ch ép và di chu yển . Đ ặc tả của dịch vụ này viết trên ngôn ngữ ID L như sau:

i n c l u d e < C o s N a m i n q . i d l > (adsbygoogle = window.adsbygoogle || []).push({});

4 p r a g m a p r e f i x " o m g . o r g "

module C o s L i f e C y c l e i

I t là II Vihi tot n iịh iệ p ca o học

T rư n g 72 t y p e d e f C o s N a m i n g : : Name K e y ; t y p e d e f O b j e c t F a c t o r y ; t y p e d e f s e q u e n c e < F a c t o r y > F a c t o r i e s ; t y p e d e f s t r u c t NVP { C o s N a m i n g : : I s t r i n g name; a n y v a l u e ; } N a m e V a l u e P a i r ; t y p e d e f s e q u e n c e < N a m e V a l u e P a i r > C r i t e r i a ; e x c e p t i o n N o F a c t o r y { K e y s e a r c h _ k e y ; } ; e x c e p t i o n N o t C o p y a b l e { s t r i n g r e a s o n ; } ; e x c e p t i o n N o t M o v a b l e { s t r i n g r e a s o n ; } ; e x c e p t i o n N o t R e m o v a b l e { s t r i n g r e a s o n ; } ; e x c e p t i o n I n v a l i d C r i t e r i a f C r i t e r i a i n v a l i d _ c r i t e r i a ; } ; e x c e p t i o n C a n n o t M e e t C r i t e r i a { C r i t e r i a u n m e t _ c r i t e r i a ; } ; i n t e r f a c e F a c t o r y F i n d e r { F a c t o r i e s f i n d _ f a c t o r i e s ( i n K e y f a c t o r y _ k e y ) r a i s e s ( N o F a c t o r v ) ; } ; interface LifeCycleObject { L i f e C y c l e O b j e c t c o p y ( i n E’a c t o r y F i n d e r t h e r e , i n C r i t e r i a t h e _ c r i t e r i a ) r a i s e s ( N o F a c t o r y , N o t C o p y a b l e , I n v a l i d C r i t e r i a , C a n n o t M e e t C r i t e r i a ) ; v o i d m o v e ( i n F a c t o r y F i n d e r t h e r e , i n C r i t e r i a t h e _ c r i t e r i a ) r a i s e s ( N o F a c t o r y , N o t M o v a b l e , I n v a l i d C r i t e r i a , C a n n o t M e e t C r i t e r i a ) ; v o i d r e m o v e {) r a i s e s ( N o t R e m o v a b l e ) ; } ; interface GenericFactory { # i f d e f N O _ E S C A P E D _ I D E N T I F I E R S b o o l e a n s u p p o r t s ( i n K e y k ) ; # e l s e b o o l e a n _ s u p p o r t s ( i n K e y k ) ; # e n d i f O b j e c t c r e a t e _ o b j e c t ( i n K e y k, i n C r i t e r i a t h e _ c r i t e r i a ) r a i s e s ( N o F a c t o r y , I n v a l i d C r i t e r i a , C a n n o t M e e t X r i t e r i a ) ; } ;

L u ậ n van tốt nghiệp (CIO học

Tao đòi tượng:

Tổn tại Iĩiột đối tượng tên là Factory c ó nhiệm vụ tạo ra c á c đôi tượng m ới. úiìg dụng C lien t liên tạo đối tượng mới b ằn g cá ch tham chiếu đến đối tượng Factory và gửi yêu cẩu tạo lộp đối tượng.

Xoá đối tư ợng, sao chép hoặc di chuyển đối tượng:

Tón tại g ia o d iên L ife C y c le O b je c t cung cấp c á c thao tác liên quan tới sự tôn tại của c á c đối tượng. Đ ể thực hiện c á c thao tác này, trước hết C lien t phải

Một phần của tài liệu Một số khía cạnh lý thuyết và thực tiễn trong xử lý phân tán (Trang 65)