MỤC LỤC
Lời cảm ơn .
Lời cam đoan .
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 1
MỤC LỤC 2
MỞ ĐẦU 4
CHƯƠNG 1: NHỮNG VẤN ĐỀ CƠ SỞ CỦA VIỆC QUẢN LÝ NHIỀU BẢN SAO 6
I. Các khái niệm và thuật ngữ 6
I.1. Sự giao dịch (Transaction) 6
I.2. Gắn bó dữ liệu 7
I.2.1. Khái niệm 7
I.2.2. Cơ chế then cài 8
I.3. Tiến trình 9
I.4. Hợp lực và đồng bộ hoá các tiến trình 9
I.5. Cung cấp tài nguyên 10
II. Vai trò và tầm quan trọng của việc quản lý nhiều bản sao 10
II.1. Sự đáp ứng của cơ sở dữ liệu phân tán và nhiều bản sao 10
II.2. Những vấn đề đặt ra cho việc quản lý nhiều bản sao 11
III. Ví dụ về thông tin có nhiều bản sao 12
III.1. Đặc tả ví dụ 12
III.2. Tổ chức nhiều bản sao 13
CHƯƠNG 2: CÁC PHƯƠNG TIỆN QUẢN LÝ NHIỀU BẢN SAO 15
I. Thuật toán quản lý nhiều bản sao 15
I.1. Khái quát 15
I.2. Thuật toán đảm bảo sự gắn bó yếu nhờ dấu 16
I.2.1. Nguyên lý 16
I.2.2. Triển khai hệ ổn định 16
I.2.3. Các hành vi bên ngoài của chế độ bình thường 17
I.3. Thuật toán đảm bảo sự gắn bó yếu nhờ bộ tuần tự 17
I.3.1. Nguyên lý 17
I.3.2. Triển khai hệ ổn định 17
I.3.3. Hành vi bên ngoài của chế độ bình thường 17
I.4. Thuật toán đảm bảo sự gắn bó mạnh 18
I.4.1. Nguyên lý 18
I.4.2. Triển khai hệ ổn định 18
I.4.3. Hành vi ngoài chế độ bình thường 19
II. Ngôn ngữ lập trình Java hỗ trợ việc lập trình phân tán 19
II.1. Giới thiệu về Java 19
II.2. Java với môi trường phân tán 20
II.2.1. Java IDL 20
II.2.2. Stub và Skeleton 21
III. Công nghệ CORBA (Common Object Request Broker Architecture) 22
III.1. Các thành phần của CORBA 22
III.1.1. CORBA hỗ trợ kiến trúc Client/Server 22
III.1.2. Object Request Broker 23
III.2. Hệ phân tán và CORBA 24
III.2.1. CORBA với hệ thống mạng 24
III.2.2. Quản lý giao dịch trong CORBA 25
CHƯƠNG 3 : THUẬT TOÁN VÀ CHƯƠNG TRÌNH QUẢN LÝ CÁC BẢN SAO TÀI KHOẢN NGÂN HÀNG 27
I. Tổ chức dữ liệu 27
I.1. Đối tượng ngân hàng 27
I.2. Đối tượng Tài khoản 28
I.3. Đối tượng Khách hàng 28
II. Mô hình Client/Server và thuật toán quản lý nhiều bản sao 30
II.1. Xây dựng hệ thống Client/Server 30
II.2. Mô tả thuật toán quản lý nhiều bản sao 32
III. Thiết kế chương trình 33
III.1. Định nghĩa các lớp giao diện 34
III.2. Chương trình Server 35
III.3. Chương trình Client 37
III.4. Cài đặt và thử nghiệm chương trình 38
KẾT LUẬN 43
PHỤ LỤC 45
TÀI LIỆU THAM KHẢO 49
50 trang |
Chia sẻ: netpro | Lượt xem: 1628 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu xây dựng phương án quản lý nhiều bản sao thông tin, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
iÌm.
Nhõ thÆ, nÜi mæt cŸch täng quŸt l¡ : nÆu ta ch¶m döt thúc hiÎn cŸc giao dÙch cºp nhºt , thÖ t¶t c¨ cŸc b¨n sao trê th¡nh (hay cÜ thÌ trê th¡nh) giâng nhau ho¡n to¡n sau mæt kho¨n théi gian xŸc ½Ùnh. Ta nÜi r±ng ta ½¨m b¨o mæt sú g°n bÜ yÆu giùa cŸc b¨n sao.
‡iËu kiÎn ½ð cho sú g°n bÜ yÆu l¡ viÎc cºp nhºt ½õìc thúc hiÎn theo cïng mæt trºt tú cho t¶t c¨ cŸc cŸc b¨n sao.
Ba thuºt toŸn m¡ ta sÁ má t¨ sau ½µy ½õìc lúa chàn vÖ lû do ½çn gi¨n v¡ rß r¡ng. ‡Ü l¡:
+ Nguyªn lý c¬ b¶n cña thuËt to¸n.
+ ViÖc triÓn khai nã trong thùc tÕ theo chÕ ®é b×nh thêng, cã nghÜa lµ trong c¸c ®iÒu kiÖn sau :
- C¸c tr¹m vµ c¸c ®èi tîng cã sè lîng cè ®Þnh.
- C¸c tiÕn tr×nh cña c¸c tr¹m vµ hÖ thèng viÔn th«ng cã sù cè, nhng kh¾c phôc ®îc.
+ C¸c chØ dÉn cÇn thiÕt cho viÖc më réng khi cÇn ®Ó xö lý c¸c t×nh huèng n»m ngoµi chÕ ®é b×nh thêng.
ThuËt to¸n ®¶m b¶o sù g¾n bã yÕu nhê dÊu
Trong mét sè trêng hîp kh«ng yªu cÇu nhiÒu vÒ chi tiÕt : c¸c b¶n sao ph¶i gièng nhau trong mäi thêi ®iÓm. Nh thÕ ta cã thÓ ¸p dông c¸c rµng buéc toµn vÑn yÕu h¬n : chØ ®ßi hái r»ng viÖc truy cËp vµo mét b¶n sao cã thÓ ®îc phÐp khi tr¹ng th¸i bªn trong cña nã lµ g¾n bã. Nãi mét c¸ch tæng qu¸t lµ : nÕu ta chÊm døt mét giao dÞch cËp nhËt, th× tÊt c¶ c¸c b¶n sao trë thµnh gièng nhau hoµn toµn sau mét kho¶n thêi gian x¸c ®Þnh. Cã thÓ nãi r»ng ®¶m b¶o mét sù g¾n bã yÕu gi÷a c¸c b¶n sao.
ThuËt to¸n ®¶m b¶o sù g¾n bã yÕu nhê dÊu ®îc tr×nh bµy trong c¸c c«ng tr×nh nghiªn cøu cña Herman.
Nguyªn lý
TËp hîp c¸c yªu cÇu cËp nhËt ®îc x¾p xÕp theo cïng mét kiÓu trªn tÊt c¶ c¸c tr¹m nhê c¬ chÕ dÊu. Nh thÕ, mçi yªu cÇu ®îc ph¸t ®i cho tËp hîp c¸c tr¹m. Trªn mçi tr¹m, tån t¹i mét tiÕn tr×nh Server ®¶m nhËn nhiÖm vô tiÕp nhËn c¸c yªu cÇu theo trËt tù cña dÊu. §iÒu ®ã cho phÐp cã ®îc mét sù g¾n bã yÕu gi÷a c¸c b¶n sao.
TriÓn khai hÖ æn ®Þnh
C¸c giao dÞch cÇn xÐt lµ kh¶ n¨ng ®äc, ghi hay cËp nhËt vµ thao t¸c kiÓm tra. Mçi Server tiÕp nhËn c¸c yªu cÇu tõ c¸c tr¹m côc bé còng nh c¸c tr¹m kh¸c, ë thêi ®iÓm cho tríc. Nã tiÕp nhËn c¸c yªu cÇu vµ tÝnh to¸n trªn c¬ së dÊu l©u nhÊt. ViÖc x¸c ®Þnh yªu cÇu kh«ng ®îc tiÕn hµnh ngay tøc kh¾c v× nguyªn do ta kh«ng thÓ biÕt ch¾c ch¾n yªu cÇu nµo lµ l©u nhÊt. YÅu c·u lµu nh¶t cÜ thÌ ½ang truyËn trÅn ½õéng.
CÜ hai trõéng hìp c·n xem x¾t :
+ Tºp hìp cŸc yÅu c·u ghi khi ché chöa cŸc yÅu c·u t÷ t¶t c¨ cŸc trm khŸc. Trong trõéng hìp n¡y cŸc yÅu c·u ½i qua, nÆu chîng tãn ti, l¡ mèi hçn so vèi cŸc yÅu c·u ½¬ ½i qua. NÜi cŸch khŸc, yÅu c·u lµu nh¶t chÏnh l¡ yÅu c·u ½ang ché.
+ Tãn ti cŸc trm m¡ kháng cÜ b¶t kü yÅu c·u n¡o ½õìc truyËn ½Æn. Ta ½õìc ½õa ½Æn trõéng hìp trõéng hìp trõèc ½µy b±ng cŸch truyËn cho t¶t c¨ cŸc trm mæt tháng bŸo yÅu c·u v¡ b°t buæc ph¨i xŸc nhºn. Do vºy, sau mæt kho¨n théi gian, theo gi¨ thiÆt vË ½æ än ½Ùnh, ta sÁ nhºn ho´c l¡ cŸc yÅu c·u ½i qua, ho´c l¡ cŸc tr¨ léi cho tháng bŸo yÅu c·u. Lîc n¡y, ta cÜ ½õìc cŸc tháng bŸo ½Æn t÷ t¶t c¨ cŸc trm.
C¸c hµnh vi bªn ngoµi cña chÕ ®é b×nh thêng
Hai mê ræng ½âi vèi thuºt toŸn cho ph¾p rît ra hay ch¿n v¡o tïy û mæt trm n¡o ½Ü. Ngõìc li, thuºt toŸn ch× sâng trong trõéng hìp cÜ sú câ, nÆu cŸc ½iËu kiÎn sau ½µy ½õìc thay thÆ :
- ViÎc m¶t ½i mæt trm ph¨i ½õìc cŸc trm khŸc phŸt hiÎn.
- ViÎc phŸt mæt tháng bŸo l¡ mæt ph¾p toŸn kháng chia c°t ½õìc nùa : mæt tháng bŸo ho´c l¡ t¶t c¨ ½Ëu ph¨i nhºn ½õìc ho´c l¡ kháng trm n¡o nhºn c¨.
NÜi mæt cŸch täng quŸt, nÆu ½iËu kiÎn ½·u tiÅn ½õìc kiÌm tra, thÖ ½iËu kiÎn thö hai r¶t khÜ ½¨m b¨o.
ThuËt to¸n ®¶m b¶o sù g¾n bã yÕu nhê bé tuÇn tù
HiÎn ti, cÜ r¶t nhiËu phõçng Ÿn cho gi¨i thuºt n¡y ½¬ ½õìc cáng bâ. Ta ch× má t¨ ê ½µy mæt phõçng Ÿn cða Le Lann.
Nguyªn lý
Trõèc khi phŸt mæt yÅu c·u, mæt trm n¡o ½Ü c·n ph¨i kÆt hìp vèi nÜ mæt sâ thö tú ½õìc c¶p t÷ bæ tu·n tú tu·n ho¡n. CŸc yÅu c·u ½õìc tiÆp nhºn ti måi trm trong cïng mæt trºt tú. ‡iËu ½Ü giîp ta cÜ ½õìc mæt sú g°n bÜ yÆu. Nh°c li r±ng cç chÆ phµn phâi cŸc sâ dúa trÅn nËn t¨ng tä chöc cŸc trm theo kiÌu vÝng trÝn ¨o.
TriÓn khai hÖ æn ®Þnh
Bæ tu·n tú cung c¶p cho måi mæt yÅu c·u sâ s°p tèi cÝn chõa dïng, gi¨ sø ½Ü l¡ T. Khi ½Æn phiÅn cða trm nhºn bæ tu·n tú, nÜ yÅu c·u mæt sâ lõìng n sâ ½îng b±ng sâ lõìng cŸc yÅu c·u cºp nhºt ½ang ché trÅn trm n¡y. CŸc sâ n¡y l¡ :
T, T + 1, ..., T + n - 1
NÜ tiÆp tòc chuyÌn bæ tu·n tú cho trm kË liËn sau nÜ v¡ sâ s°p tèi chõa dïng ½Æn l¡T + n .
Khi mæt trm ½¬ cÜ sâ, nÜ phŸt yÅu c·u cºp nhºt cïng vèi sâ n¡y. TrÅn måi trm, cŸc cºp nhºt ½õìc thúc hiÎn b±ng cŸch tiÆp nhºn cŸc yÅu c·u cïng cŸc sâ liÅn tiÆp nhau (theo mæt trºt tú). ‡Ì xŸc ½Ùnh yÅu c·u s°p ½Æn c·n ph¨i xø lû, måi mæt trm duy trÖ mæt biÆn chöa sâ V ½õìc phâi hìp vèi yÅu c·u xø lû cuâi cïng. CŸc yÅu c·u mang cŸc sâ lèn hçn V + 1 ½õìc lõu trù trong khi ché xø lû yÅu c·u V + 1.
Hµnh vi bªn ngoµi cña chÕ ®é b×nh thêng
Trõèc hÆt, ta c·n nh°c li l¡ hiÎn ½ang tãn ti cŸc giao thöc cho ph¾p tŸi sinh bæ tu·n tú khi bÙ m¶t v¡ ½´t c¶u hÖnh vÝng trÝn ¨o trê li mæt cŸch ½æng.
CŸc giao thöc n¡y hot ½æng trong ½iËu kiÎn gi¨ ½Ùnh l¡ mng viÍn tháng cho ph¾p phŸt hiÎn cŸc sú câ cða mæt trm v¡ c·n ph¨i ½õìc bä khuyÆt ½·y ½ð nh±m duy trÖ trºt tú to¡n ph·n c·n thiÆt cho viÎc g°n bÜ :
- ViÎc tŸi sinh bæ tu·n tú c·n ph¨i tiÆn h¡nh song song vèi viÎc tÏnh toŸn sâ s°p ½Æn cÜ s³n ½Ì dïng.
- Khi ta phŸt hiÎn cÜ mæt trm bÙ sú câ, ta c·n ph¨i xŸc ½Ùnh cŸc sâ m¡ trm n¡y ½¬ l¶y v¡ cŸc sâ cÝn chõa sø dòng, rãi gøi cŸc yÅu c·u mang cŸc sâ n¡y.
- ViÎc cho hæi nhºp mæt trm v¡o li trong vÝng trÝn c·n ph¨i tiÆn h¡nh song song vèi viÎc cºp nhºt li b¨n sao cða nÜ.
Sø dòng cŸc sâ liÅn tòc cho ph¾p trŸnh ½õìc hiÎn tõìng mæt v¡i cºp nhºt bÙ m¶t v¡ cŸc l·n m¶t m¡ kháng ½õìc phŸt hiÎn. ViÎc triÌn khai mæt bæ tu·n tú tu·n ho¡n cñng l¡m cho ta g´p ph¨i mæt sâ khÜ kh¯n khŸc.
ThuËt to¸n ®¶m b¶o sù g¾n bã m¹nh
B±ng cŸch bÞ qua cŸc pha chuyÌn, ho´c ½âi tõìng ½ang trong quŸ trÖnh cºp nhºt v¡ t¶t c¨ cŸc b¨n sao ½õìc truy cºp ch× ½Ì ½àc v¡ giâng nhau ho¡n to¡n. Theo ½Ùnh nghØa, kiÌu hot ½æng kiÌu n¡y triÌn khai mæt sú g°n bÜ mnh giùa cŸc b¨n sao ½âi tõìng.
Thuºt toŸn n¡y ½õìc trÖnh b¡y trong cáng trÖnh cða Ellis.
Nguyªn lý
Tºp hìp bao gãm cŸc trm ½õìc tä chöc theo kiÌu vÝng trÝn ¨o. CŸc cºp nhºt ½õìc thúc hiÎn theo 2 thÖ :
- Thâng nh¶t giùa cŸc trm.
- Thúc hiÎn cºp nhºt.
Do vºy, thuºt toŸn n¡y ½¨m b¨o mæt sú g°n bÜ mnh. NÆu cÜ nhiËu yÅu c·u cºp nhºt diÍn ra ½ãng théi, thÖ ta ph¨i cÜ quy t°c ½Ì cÜ thÌ quyÆt ½Ùnh yÅu c·u n¡o ½õìc tiÆp nhºn v¡ thÞa m¬n. Nh±m phòc vò cho û tõêng ½Ü, ta thõéng hay sø dòng d¶u phâi hìp cho måi cºp nhºt v¡ ta xø lû yÅu c·u cÜ théi gian d¶u lµu nh¶t.
TriÓn khai hÖ æn ®Þnh
Trng thŸi cÜ thÌ cða måi trm l¡ :
- repos : Trm kháng thúc hiÎn cºp nhºt n¡o c¨.
- actif : Trm ½¬ nhºn mæt yÅu c·u cºp nhºt còc bæ m¡ yÅu c·u n¡y ½¬ ½õìc truyËn cho cŸc trm khŸc ½Ì kiÌm tra.
- passif : Trm ½¬ ½ãng û cho mæt cºp nhºt v¡ ché trºt tú tõçng öng.
- modification : Trm ½ang trong tÖnh trng chuyÌn cða cºp nhºt, trong khi ½Ü t¶t c¨ cŸc yÅu c·u khŸc truyËn ½Æn ½Ëu ½õìc lõu trù. Chîng sÁ ½õìc xø lû khi quay vË mæt trong cŸc trng thŸi khŸc. Lîc khêi sú, t¶t c¨ cŸc trm ½Ëu trong trng thŸi repos.
Trm khêi sú viÎc cºp nhºt, ½·u tiÅn, c·n ph¨i gøi mæt yÅu c·u cho ph¾p cºp nhºt, nÜ ch× l¡m ½õìc cáng viÎc ½Ü trong trng thŸi repos. Lîc n¡y nÜ ½õìc nhºn d¶u v¡ ½õìc gøi v¡o vÝng trÝn, trm khêi sú chuyÌn trng thŸi t÷ repos sang actif.
NÆu ch× cÜ mæt yÅu c·u duy nh¶t ½õìc ½õa v¡o vÝng trÝn, nÜ ½i qua t¶t c¨ cŸc trm ½Ì chuyÌn cŸc trm n¡y t÷ repos sang passif. Khi nÜ ½¬ trê vË nçi khêi sú, thÖ viÎc tháng nh¶t coi nhõ ho¡n t¶t. ViÎc cºp nhºt nÜi riÅng lîc n¡y ½õìc gøi ½i v¡ måi trm sau khi thúc hiÎn li trê vË trng thŸi repos.
NÆu cÜ nhiËu yÅu c·u ½õìc ½õa ra ½ãng théi trong vÝng trÝn, thÖ tÖnh hÖnh ½Ü dÍ d¡ng diÍn ra xung ½æt. Lîc n¡y, ta ph¨i chàn mæt yÅu c·u cÜ théi gian d¶u lµu nh¶t. ‡Ì tiÆn h¡nh cáng viÎc ½Ü, ta nÅu bºt vai trÝ cða "bæ ch°n ½õéng" (barrage) cho cŸc trm khêi sú : mæt trm n¡o ½Ü trong trng thŸi repos hay passif ph¨i chuyÌn to¡n bæ yÅu c·u ½¬ ½Æn vèi nÜ; mæt trm trong trng thŸi actif ch× ph¨i chuyÌn cŸc yÅu c·u cÜ théi gian lµu hçn cŸc yÅu c·u m¡ chÏnh nÜ ½¬ phŸt ½i; cŸc yÅu c·u khŸc ½Ëu bÙ d÷ng li v¡ ½õìc lõu trù.
CŸc yÅu c·u bÙ lõu li sÁ ½õìc gøi tiÆp v¡o vÝng trÝn, khi trm lõu trù chîng ho¡n th¡nh viÎc cºp nhºt riÅng cða mÖnh.
Hµnh vi ngoµi chÕ ®é b×nh thêng
CŸc giao thöc ½´t li c¶u hÖnh vÝng trÝn theo kiÌu ½æng ½õìc sø dòng nh±m rît ra hay cho v¡o tïy û mæt sâ trm nh¶t ½Ùnh. CŸc sú câ kþ thuºt l¡ r¶t khÜ kh¯n phŸt hiÎn trong cŸc chiÆn lõìc m¡ ê ½Ü cŸc yÅu c·u kháng ½õìc ghi li kh°p nçi.
Ng«n ng÷ lËp tr×nh Java hç trî viÖc lËp tr×nh ph©n t¸n
Giíi thiÖu vÒ Java
Coï thãø xem lëch sæí phaït triãøn ngän ngæî láûp trçnh Java tæì âãö aïn Green vaìo nàm 1991 cuía cäng ty Sun Microsystem. Våïi nhæîng âiãøm maûnh nhæ hæåïng âäúi tæåüng, tênh khaí chuyãøn cao, khäng phuû thuäüc vaìo mäi træåìng xæí lyï (pháön cæïng maïy tênh vaì hãû âiãöu haình), coï khaí nàng biãn dëch, häù tråü caïc thæ viãûn cho láûp trçnh caïc æïng duûng CSDL phán taïn vaì Internet, dãù truyãön thäng,... Java âaî vaì seî tråí thaình mäüt ngän ngæî maûnh trong hiãûn taûi vaì tæång lai.
Âãø âaût âæåüc tênh khaí chuyãøn cao, nhoïm Green âaî thiãút kãú maïy aío Java (JVM - Java virtual machine). Chæång trçnh Java âæåüc biãn dëch dæåïi daûng caïc tãûp nhë phán (class files) "ngän ngæî maïy" cuía maïy aío Java. Chæång trçnh nhæ váûy coï thãø chaûy trãn moüi maïy miãùn laì trong maïy âaî thiãút láûp maïy aío Java.
Trçnh æïng duûng
Caïc âäúi tæåüng Java
Maïy aío Java
Hãû âiãöu haình
(Unix, Windows, OS/2, Macintosh)
H×nh 3 Sæí duûng caïc âäúi tæåüng Java cuía JVM.
Trãn thæûc tã,ú maïy aío Java do trçnh thäng dëch Java taûo nãn. Trçnh thäng dëch naìy coï nhiãûm vuû chuyãøn chè thë cuía maïy aío Java thaình caïc chè thë maïy âàûc thuì vaìo luïc chaûy trçnh æïng duûng. Nhæ váûy coï thãø noïi Java laì caí ngän ngæî biãn dëch (trçnh biãn dëch Java laì javac.exe: biãn dëch táûp tin *.java thaình *.class) vaì ngän ngæî thäng dëch (trçnh thäng dëch Java laì java.exe âãø thæûc thi táûp tin *.class).
Trçnh biãn dëch Java
(SPARC)
Trçnh biãn dëch Java
(PowerPC)
Trçnh biãn dëch Java
(Pentium)
Maî nhë phán
Java
(khäng phuû thuäüc
hãû thäúng)
Maî nguäön
Java
(Pentium)
(PowerPC)
(SPARC)
Trçnh thäng dëch Java
H×nh 4. Hai giai âoaûn biãn dëch vaì thäng dëch cuía ngän ngæî Java.
Java víi m«i trêng ph©n t¸n
Váún âãö xæí lyï phán taïn (distributed computing), thuïc âáøy sæû phaït triãøn nhanh choïng cuía maûng maïy tênh. Sæû phán taïn pháön mãöm trãn nhiãöu maïy cho pheïp taûo ra khaí nàng xæí lyï maûnh meî nhæng phaíi laìm sao âäöng bäü, an toaìn âäöng thåìi giaím thiãøu læu læåüng truyãön thäng trãn maûng.
Chæång trçnh Java âæåüc naûp dáön mäüt caïch linh hoaût vaìo maïy khaïch trong thåìi gian chaûy, do âoï khäng gáy quaï taíi cho maûng. Khaí nàng nhiãöu tuyãún âoaûn (threads) âoï cuîng laì mäüt âiãøm låüi thãú cho maûng. Khi chæång trçnh giao tiãúp våïi ngæåìi sæí duûng trãn tuyãún âoaûn naìy, åí tuyãún âoaûn khaïc viãûc naûp dæî liãûu qua maûng váùn âæåüc tiãún haình liãn tuûc.
Hãû thäúng æïng duûng phán taïn laì mäüt quaï trçnh tênh toaïn vaì xæí lyï säú liãûu âæåüc thæûc hiãûn trãn nhæîng khäng gian âëa chè khaïc nhau, coï khaí nàng âàût trãn caïc traûm laìm viãûc khaïc nhau maì váùn coï thãø trao âäøi thäng tin qua laûi våïi nhau.
Caïc nhaì phaït triãøn âæa ra khaïi niãûm goüi caïc thuí tuûc tæì xa (RPC - Remote Procedure Call), noï mä phoíng giao diãûn trao âäøi thäng tin thäng qua viãûc goüi caïc thuí tuûc. Ngæåìi láûp trçnh coï thãø goüi ra caïc thuí tuûc trãn mäüt hãû thäúng cuûc bäü naìo âoï, thæûc tãú âáy laì tiãún trçnh caïc âäúi säú cuía caïc cuäüc goüi âæåüc âoïng goïi vaì gæíi âãún cuäüc goüi åí xa.
Java IDL
Âãø tæång xæïng våïi yï nghéa goüi ra caïc âäúi tæåüng, caïc nhaì phaït triãøn Java âaî triãøn khai mäüt kyî thuáût truyãön thäng tin trãn hãû thäúng æïng duûng phán taïn coï khaí nàng goüi ra vaì thæûc hiãûn caïc phæång thæïc cuía caïc âäúi tæåüng tæì xa thäng qua ngän ngæî âënh nghéa giao diãûn (IDL - Interface Definition Language) giæîa caïc bäü pháûn cuía æïng duûng, kyî thuáût naìy ráút linh hoaût vaì tiãûn låüi cho quaï trçnh trao âäøi thäng tin noïi chung.
Interface
Implementation
Java
C++
H×nh 5. Ng«n ng÷ lËp tr×nh kh«ng liªn quan ®Þnh nghÜa giao diÖn.
Stub vµ Skeleton
Java IDL sæí duûng kyî thuáût chuáøn (âæåüc triãøn khai trong caïc hãû thäúng RPC) âãø trao âäøi thäng tin våïi caïc âäúi tæåüng tæì xa. Sau khi âënh nghéa thaình pháön giao diãûn kãút quaí ta coï âæåüc tãûp tin IDL. Trçnh biãn dëch IDL seî taûo ra caïc stub cuía Client vaì skeleton cuía Server. Stub âäúi våïi caïc hoaût âäüng tæì xa nhæ laì sæû taïi hiãûn laûi hoàûc sæû uíy quyãön cuûc bäü cuía Client cho âäúi tæåüng tæì xa. Nåi goüi ra mäüt phæång thæïc trãn stub cuûc bäü noï chëu traïch nhiãûm mang ra phæång thæïc goüi trãn âäúi tæåüng tæì xa. Trong IDL mäüt stub bäø sung cho mäüt âäúi tæåüng tæì xa giäúng nhæ táûp håüp mäüt säú giao diãûn bäø sung cho giao diãûn tæì xa âoï.
Khi caïc phæång thæïc cuía stub âæåüc goüi noï thæûc hiãûn theo caïc bæåïc sau :
Khåíi taûo tiãún trçnh kãút näúi våïi maïy aío tæì xa, nåi læu træî âäúi tæåüng tæì xa sàõp xãúp (viãút vaì truyãön âi) caïc tham säú âãún maïy aío tæì xa.
Chåì kãút quaí cuía phæång thæïc goüi ra âãø taïi hiãûn laûi caïc sàõp xãúp ban âáöu (âoüc) âãø räöi traí vãö giaï trë hoàûc traí vãö ngoai lãû.
Traí giaï trë cuía kãút quaí vãö laûi cho nåi goüi.
Stub cho áøn âi tuáön tæû xæí lyï caïc tham säú vaì viãûc trao âäøi thäng tin qua maûng, chênh vç váûy ta chè coï thãø nháûn tháúy mäüt kyî thuáût goüi âäúi tæåüng âån giaín.
Trong maïy aío Java tæì xa mäùi âäúi tæåüng tæì xa seî coï mäüt skeleton tæång æïng, skeleton chëu traïch nhiãûm gæíi âi cuäüc goüi âãún thaình pháön âäúi tæåüng tæì xa tháût sæû. Khi skeleton nháûn âæåüc phæång thæïc goüi âãún noï seî thæûc hiãûn caïc bæåüc sau :
Taïi sàõp xãúp laûi (âoüc) caïc tham säú cho phæång thæïc tæì xa.
Goüi ra phæång thæïc pháön bäø sung âäúi tæåüng tæì xa.
Sàõp xãúp (viãút vaì chuyãøn âi) kãút quaí (traí vãö giaï trë hoàûc ngoaûi lãû ) âãún nåi goüi.
H×nh 6. Sæû liãn kãút cuía caïc Client stub vaì caïc Server skeleton.
Sæû khaïc nhau giæîa âäúi tæåüng phán taïn vaì khäng phán taïn :
- Client cuía âäúi tæåüng tæì xa tæång taïc våïi giao diãûn tæì xa, khäng bao giåì tæång taïc våïi caïc låïp phuû cuía caïc giao diãûn naìy.
- Caïc âäúi säú vaì kãút quaí khäng phaíi tæì xa cuía mäüt tiãún trçnh goüi phæång thæïc âæåüc chuyãøn âi bàòng caïch sao cheïp chæï khäng tham chiãúu, vç caïc tham chiãúu âãún âäúi tæåüng chè tháût sæû hæîu duûng våïi mäüt maïy aío âån giaín.
- Âäúi tæåüng tæì xa âæåüc chuyãøn âi bàòng tham chiãúu chæï khäng phaíi bàòng caïch sao cheïp tháût sæû pháön bäø sung tæì xa.
C«ng nghÖ CORBA (Common Object Request Broker Architecture)
C¸c thµnh phÇn cña CORBA
‡µy l¡ cáng nghÎ chu¸n cho lºp trÖnh xø lû ½âi tõìng phµn tŸn. KiÆn trîc yÅu c·u ½âi tõìng trung gian cáng cæng n¡y ½õìc tham chiÆu trong má hÖnh OSI l¡ :
Application
TELNET, FTP, SMTP, HTTP
Presentation
Byte-order, ASCII-UNICODE, COM-CORBA
Session
Login session, RPC call, ORB/RMI invocation
Transport
End-to-end commuication
Network
Host-to-host communication
Link
Network adapter card device driver
Physical
Ethernet, ISDN, PPP, ...
CORBA hç trî kiÕn tróc Client/Server
Bµy gié chîng ta xem x¾t vÏ dò sau, khi cÜ mæt ngõéi quay sâ ½iÎn thoi cho bn, chuáng ½iÎn thoi rung lÅn bn nh¶c mŸy sau khi bn tr¨ léi ½iÎn thoi xong bn h mŸy kÆt thîc kÆt nâi. Ngõéi gài ch× biÆt quay sâ, bn nh¶c tr¨ léi v¡ kÆt thîc m¡ kháng quan tµm cuæc gài thúc thi nhõ thÆ n¡o, ngõéi gài ch× quan tµm ½Æn cuæc gài cÜ ½Æn ½õìc kháng.
Tõçng tú nhõ thÆ, khi ta yÅu c·u tháng tin t÷ mæt ½âi tõìng CORBA, ta kháng c·n quan tµm nÜ thúc thi nhõ thÆ n¡o m¡ ch× quan tµm yÅu c·u cÜ ½Æn ½õìc v¡ ½âi tõìng ½Ü tr¨ léi hay kháng. ‡iËu tât ½Âp l¡ CORBA cho ph¾p chîng ta to giao diÎn cho ½âi tõìng v¡ cÜ nhiËu cŸch thúc thi ½a dng khŸc nhau. Ngo¡i ra CORBA cÝn hå trì kiÆn trîc tÏnh toŸn khŸch/chð phµn th¡nh ba t·ng, ½Ü l¡ khŸch, ½âi tõìng v¡ nguãn dù liÎu.
Client
Object
Impl 1
Object
Impl 2
Object
Impl 3
Data
Object
Interface
H×nh 7. KiÆn trîc khŸch/chð phµn ba t·ng khŸch, ½âi tõìng v¡ nguãn dù liÎu.
Hçn thÆ, trong CORBA cho ph¾p mæt th¡nh ph·n cÜ thÌ thúc hiÎn c¨ hai chöc n¯ng v÷a l¡ khŸch v¡ chð.
H×nh 8. Bäü pháûn cáúu thaình hoaût âäüng nhæ laì mäüt client vaì server.
Object Request Broker
Th¡nh ph·n chð yÆu cða kiÆn trîc CORBA l¡ ½âi tõìng yÅu c·u trung gian (ORB - Object Request Broker). Mæt khŸi niÎm cho ORB l¡: Khi mæt th¡nh ph·n öng dòng muân sø dòng mæt phòc vò cung c¶p bêi th¡nh ph·n khŸc, ½iËu trõèc tiÅn ph¨i tãn ti mæt ½âi tõìng tham chiÆu ½Æn cho ½âi tõìng cung c¶p ½ang phòc ½Ü. Sau khi tãn ti mæt tham chiÆu, ph·n hìp th¡nh cÜ thÌ gài cŸc phõçng thöc trÅn ½âi tõìng ½Ü, theo cŸch ½Ü viÎc truy xu¶t ½Æn yÅu c·u cung c¶p phòc vò bêi ½âi tõìng.
NhÖn chung nhùng phõçng thöc n¡y l¶y cŸc tham sâ ½õa v¡o v¡ tr¨ vË cŸc tham sâ ra khŸc. TrŸch nhiÎm chð yÆu cða ORB l¡ ½Ì gi¨i quyÆt yÅu c·u cho nhùng tham chiÆu ½Æn ½âi tõìng, cho ph¾p nhùng th¡nh ph·n öng dòng thiÆt lºp sú kÆt nâi l¹n nhau.
Mæt trŸch nhiÎm khŸc cða ORB l¡ nhºn cŸc tham sâ ½õa v¡o t÷ th¡nh ph·n rãi gài phõçng thöc v¡ s°p xÆp cŸc tham sâ n¡y. ‡iËu n¡y cÜ nghØa r±ng ORB chuyÌn ½äi nhùng tham sâ n¡y ½´t v¡o mæt khuán dng cÜ thÌ truyËn ngang qua mng ½Æn ½âi tõìng t÷ xa. Hçn nùa, ORB s°p xÆp li cŸc tham sâ tr¨ vË, chuyÌn ½äi chîng t÷ khuán dng ½´t v¡o ½Ì gài cho th¡nh ph·n öng dòng cÜ thÌ hiÌu ½õìc.
H×nh 9. ORB gi¨i quyÆt yÅu c·u cða ½âi tõìng.
Trong mæt öng dòng phµn tŸn, cÜ sú khŸc biÎt giùa viÎc sø dòng mæt ½âi tõìng trÅn mŸy còc bæ v¡ ½âi tõìng ½õìc gài t÷ xa. ViÎc sø dòng ½âi tõìng còc bæ ½õìc xem nhõ l¡ trong cïng mæt öng dòng, ½âi tõìng ½Ü tãn ti cïng ½Ùa ch× vèi trÖnh öng dòng cÝn ½âi tõìng ½õìc gài t÷ xa thÖ tãn ti kháng cïng vèi kháng gian ½Ùa ch× cða trÖnh öng dòng. ChÏnh vÖ thÆ m¡ cÜ sú khŸc nhau giùa tiÆn trÖnh trÅn cïng mæt mŸy v¡ tiÆn trÖnh trÅn mæt mŸy khŸc n±m ti mæt vÙ trÏ n¡o ½Ü ê trÅn mng. ‡Ì qu¨n lû cŸc ½âi tõìng, ORB sø dòng phõçng phŸp tham chiÆu ½Æn ½âi tõìng nh±m xem x¾t sú tãn ti cða ½âi tõìng ½Ü trong trÖnh öng dòng.
HÖ ph©n t¸n vµ CORBA
CORBA víi hÖ thèng m¹ng
Mæt bõèc phŸt triÌn cða kiÆn trîc öng dòng trong hÎ phµn tŸn l¡ khŸi niÎm hå trì nhiËu kiÆn trîc Client/Server. KiÆn trîc cða hÎ phµn tŸn ½¬ ½t ½õìc tÏnh linh hot bêi khuyÆn khÏch ½Ùnh nghØa cŸc th¡nh ph·n giao diÎn mæt cŸch cò thÌ. HÎ phµn tŸn thúc sú l¡ nhiËu hÎ thâng Client/Server trong ½Ü vèi sâ lõìng cða Client l¡ dÍ nhºn th¶y v¡ kh¨ n¯ng ræng lèn cða nhiËu Server. Mæt ½iËu quan tràng khŸc l¡ nhÖn chung hÎ phµn tŸn ½¬ cung c¶p thÅm nhiËu phòc vò, nhõ l¡ nhiËu phòc vò thõ mòc, cho ph¾p nhiËu th¡nh ph·n cða öng dòng cÜ thÌ trao ½äi l¹n nhau. CORBA l¡ mæt kiÆn trîc phµn tŸn thºt sú nÜ hå trì nhiËu kiÆn trîc Client/Server v¡ kh¨ n¯ng ½Ùnh nghØa giao diÎn cho cŸc yÅu c·u ½âi tõìng trung gian (ORB).
H×nh 10. KiÆn trîc cða mæt öng dòng phµn tŸn CORBA.
Qua hÖnh vÁ trÅn cho ta th¶y ½õìc kiÆn trîc cða mæt öng dòng phµn tŸn CORBA ½õìc xµy dúng trÅn chu¸n Internet Inter-ORB Protocol (IIOP). IIOP ½õìc ch¶p nhºn trÅn cŸc hÎ thâng mng hå trì TCP/IP, DCE v¡ trÅn h·u hÆt cŸc hÎ thâng mng Intranet.
Qu¶n lý giao dÞch trong CORBA
Trong mæt öng dòng phµn tŸn ti måi théi ½iÌm cÜ thÌ cÜ nhiËu tiÆn trÖnh cïng truy xu¶t ½ãng théi ½Æn cïng mæt dù liÎu gµy ra sú tõçng tranh. Cho nÅn viÎc qu¨n lû nhiËu tiÆn trÖnh l¡ thºt sú c·n thiÆt. ‡Ì chöng minh cho viÎc hå trì sø dòng nhiËu tiÆn trÖnh trong öng dòng phòc vò, Mæt server ½õìc xµy dúng theo kiÆn trîc CORBA cÜ kh¨ n¯ng cung c¶p nhiËu client cïng truy xu¶t ½Æn vèi théi gian b¶t kü. ‡iËu n¡y thºt sú l¡ hiÎu qu¨ cho mæt server ½Ì gi¨i quyÆt ½ãng théi nhiËu yÅu c·u cða client, kh¨ n¯ng n¡y ½õìc cung c¶p mæt cŸch chÏnh xŸc bêi kiÆn trîc nhiËu tiÆn trÖnh.
KiÆn trîc phòc vò nhiËu tiÆn trÖnh, cho ph¾p kháng ch× mæt tiÆn trÖnh gêi yÅu c·u ti mæt théi ½iÌm m¡ Server cÜ thÌ khêi to mæt tiÆn trÖnh mèi thúc thi ½âi vèi måi giao dÙch. Bêi vÖ ê ½µy luán tãn ti mæt tiÆn trÖnh l°ng nghe cŸc yÅu c·u mèi cho tiÆn trÖnh khŸc m¡ kháng c·n ché cho ½Æn khi ho¡n th¡nh mæt giao dÙch trõèc ½Ü mèi cÜ thÌ ch¶p nhºn tiÆn trÖnh tiÆp theo. KÆt qu¨ l¡ server ½õa ra sú tr¨ léi mæt cŸch nhanh hçn bêi vÖ nÜ cÜ thÌ tr¨ léi mæt cŸch ngay töc thÖ cho yÅu c·u mèi ½Æn.
H×nh 11. Qu¸ tr×nh ho¹t ®éng cña nhiÒu tiÕn tr×nh truy xuÊt ®Õn server.
M´c dï kiÆn trîc nhiËu tiÆn trÖnh cÜ thÌ to c¨m giŸc kh¨ n¯ng server thi h¡nh ½õìc nµng cao hçn trong viÎc tr¨ léi cŸc yÅu c·u. Thúc ra, kiÆn trîc n¡y kháng l¡m cho server thúc thi nhanh hçn. NÆu mæt server cung c¶p nhiËu tiÆn trÖnh giao dÙch ½ãng théi, thÖ tâc ½æ cða måi tiÆn trÖnh giao dÙch bÙ gi¨m ½i mæt cŸch tõçng xöng trong quŸ trÖnh xø lû giao dÙch cða server mæt kho¨ng théi gian. ‡iËu n¡y l¡ phï hìp vèi viÎc ng¯n ch´n tiÆn trÖnh trong hÎ phµn tŸn. Tuy nhiÅn, ½Ì ½Ÿp öng cŸc yÅu c·u mæt cŸch nhanh hçn b±ng cŸch xµy dúng mæt b¨ng ½¯ng kû cho t÷ng tiÆn trÖnh server sÁ ½õìc gi¨i quyÆt trong ph·n xµy dúng öng dòng.
III.2.3. Nh÷ng u ®iÓm cña CORBA so víi RMI
Trong ngán ngù Java hå trì mæt phõçng thöc yÅu c·u t÷ xa ½Ü l¡ Remote Method Invocation (RMI). C¨ RMI v¡ CORBA ½Ëu cÜ ½iÌm chung l¡ dïng ½Ì phŸt triÌn cŸc öng dòng trÅn hÎ phµn tŸn v¡ cïng l¡ cŸc öng dòng hõèng ½âi tõìng.
Tuy nhiÅn, giùa CORBA v¡ RMI cÜ sú khŸc biÎt lèn nh¶t l¡: CORBA mæt ngán ngù phŸt triÌn ½æc lºp ½Ü chÏnh l¡ lìi thÆ lèn nh¶t cða CORBA. VÖ RMI ch× l¡ mæt ph·n trong ngán ngù Java nÅn gièi hn trong cŸc öng dòng cða Java. NÆu trong mæt hÎ thâng öng dòng phŸt triÌn kháng hå trì Java thÖ RMI kháng thÌ thúc hiÎn ½õìc nhõng CORBA thÖ cÜ thÌ thúc hiÎn ½õìc.
Ngo¡i ra, CORBA ½õìc xµy dúng cÜ thÌ hå trì h·u nhõ cŸc kiÆn trîc phµn tŸn trÅn cŸc hÎ thâng mng v¡ cŸc ½âi tõìng ½õìc xµy dúng kháng ch× dúa trÅn mæt ngán ngù lºp trÖnh. ‡âi tõìng CORBA cÜ thÌ ½õìc ½Ùnh nghØa b±ng cŸc ngán ngù C++, Java, Smalltalk, ...
Trong ngán ngù Java, RMI ch× thúc hiÎn cŸc yÅu c·u t÷ xa ½Æn ½âi tõìng trÅn nhùng öng dòng phŸt triÌn b±ng Java. ‡Ì thúc hiÎn kÆt nâi ½Æn mæt öng dòng kháng xµy dúng trÅn nËn Java, ngõéi lºp trÖnh ph¨i thúc hiÎn sú kÆt nâi tháng qua lèp Socket cða mng. CÝn trong CORBA ½iËu n¡y l¡ kháng c·n thiÆt. Qua nhùng ½iËu v÷a ½õa ra ê trÅn ta cÜ thÌ th¶y ½õìc mæt sâ õu ½iÌm võìt træi cða CORBA ½Ì phŸt triÌn mæt öng dòng phµn tŸn so vèi RMI.
CH¦¥NG 3
ThuËt to¸n vµ ch¬ng tr×nh qu¶n lý c¸c b¶n sao tµi kho¶n ng©n hµng
Mng mŸy tÏnh to¡n c·u - Internet mæt thuºt ngù khŸ quen thuæc kháng ch× trong lØnh vúc Cáng nghÎ tháng tin m¡ ½ang d·n ½i v¡o cuæc sâng con ngõéi. Sú phŸt triÌn mnh mÁ cða cáng nghÎ truyËn tháng v¡ mng Internet, cïng vèi xu thÆ to¡n c·u hoŸ trong mài lØnh vúc, thõçng mi ½iÎn tø ra ½éi nhõ l¡ ½iËu t¶t yÆu. Nh±m ½Ÿp öng nhu c·u cða ngõéi sø dòng, öng dòng qu¨n lû t¡i kho¨n ngµn h¡ng ½iÎn tø cho ph¾p khŸch h¡ng ½¯ng kû mê t¡i kho¨n v¡ thúc hiÎn giao dÙch trÅn hÎ thâng tháng tin phµn tŸn.
Chõçng trÖnh giîp cho ngõéi sø dòng cÜ thÌ truy nhºp v¡ xø lû tháng tin vË t¡i kho¨n cða mÖnh t÷ xa v¹n ½¨m b¨o ½õìc tháng tin chÏnh xŸc, kÙp théi v¡ hiÎu qu¨ ½Ì hÎ thâng v¹n ½õìc hot ½æng liÅn tòc.
Tæ chøc d÷ liÖu
KiÆn trîc CORBA ½õìc xµy dúng trÅn ngán ngù ½æc lºp v¡ hå trì cŸc ½âi tõìng vÖ thÆ viÎc phµn tÏch v¡ thiÆt kÆ ½Ì ½Ÿp öng cŸc yÅu c·u v¡ kiÆn trîc hÎ thâng chð yÆu dúa trÅn cç sê phµn tÏch v¡ thiÆt kÆ ½âi tõçng (OOA - Object Oriented Analysis). CŸch phµn tÏch v¡ thiÆt kÆ n¡y cÜ thÌ chuyÌn cŸc th¡nh ph·n nhõ l¡ cŸc lèp, giao diÎn v¡ cŸc phõçng thöc cða kiÆn trîc hÎ thâng ½Ì xµy dúng chõçng trÖnh.
‡Ì xµy dúng cç sê dù liÎu cho chõçng trÖnh trõèc tiÅn ph¨i xem x¾t ½Æn tºp hìp cŸc yÅu c·u cða hÎ thâng. ‡Ü l¡ :
1. Hå trì nhiËu ngµn h¡ng.
2. Mæt khŸch h¡ng cÜ nhiËu t¡i kho¨n.
3. Cho ph¾p mê v¡ ½Üng mæt t¡i kho¨n.
4. Hå trì kh¨ n¯ng rît v¡ gêi tiËn t÷ mæt t¡i kho¨n.
5. Cho ph¾p chuyÌn t¡i kho¨n trong mæt ngµn h¡ng.
6. KiÌm tra t¡i kho¨n.
T÷ tºp hìp cŸc yÅu c·u trÅn hÎ thâng ½õìc xµy dúng tãn ti Ït nh¶t l¡ ba ½âi tõìng: Ngµn h¡ng, T¡i kho¨n v¡ KhŸch h¡ng. Chöc n¯ng cða cŸc ½âi tõìng ½õìc má t¨ nhõ sau:
§èi tîng ng©n hµng
Ngµn h¡ng gãm tÅn v¡ ½Ùa ch× cho ph¾p viÎc ½Üng v¡ mê t¡i kho¨n cða mæt khŸch h¡ng.
‡Ì mê mæt t¡i kho¨n cho mæt khŸch h¡ng c·n to mæt phõçng thöc ½Ì to mæt t¡i kho¨n mèi kiÌu tr¨ vË l¡ mæt t¡i kho¨n:
createAccount(customer : Customer, openBalance : float) : Account;
ViÎc ½Üng t¡i kho¨n cða mæt khŸch h¡ng kháng c·n thiÆt nhiËu tháng tin ch× c·n gài phõçng thöc xoŸ t¡i kho¨n khÞi ngµn h¡ng:
deleteAccount(account : Account) : void;
Ngo¡i tÅn v¡ ½Ùa ch× ra cÝn viÎc nhºn chuyÌn mæt t¡i kho¨n ta gài phõçng thöc nhºn mæt t¡i kho¨n nhõ sau:
name : string;
address : string;
getAccount() : Account[];
§èi tîng Tµi kho¶n
T¡i kho¨n cÜ kh¨ n¯ng tÏnh toŸn viÎc gêi v¡o, rît ra v¡ chuyÌn kho¨n giùa cŸc t¡i kho¨n. T¡i kho¨n ½õìc xŸc ½Ùnh bêi sâ t¡i kho¨n v¡ ng¡y mê t¡i kho¨n ½õìc ½´t t¨ b±ng hai biÆn kiÌu integer v¡ kiÌu dat
Các file đính kèm theo tài liệu này:
- INTNNOP.DOC
- CHUONGTRINH.rar