Đồ án Nghiên cứu xây dựng phương án quản lý nhiều bản sao thông tin

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

 

 

doc50 trang | Chia sẻ: netpro | Lượt xem: 1628 | Lượt tải: 3download
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è, nh­ng 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 tr­m khŸc. Trong trõéng hìp n¡y cŸc yÅu c·u ½i qua, nÆu chîng tãn t­i, 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 t­i cŸc tr­m 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 tr­m 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 tr­m. 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 tr­m n¡o ½Ü. Ngõìc l­i, 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 tr­m ph¨i ½õìc cŸc tr­m 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 tr­m 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 t­i, 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 tr­m 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 t­i måi tr­m 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 l­i r±ng cç chÆ phµn phâi cŸc sâ dúa trÅn nËn t¨ng tä chöc cŸc tr­m 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 tr­m 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 tr­m 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 tr­m kË liËn sau nÜ v¡ sâ s°p tèi chõa dïng ½Æn l¡ T + n . Khi mæt tr­m ½¬ cÜ sâ, nÜ phŸt yÅu c·u cºp nhºt cïng vèi sâ n¡y. TrÅn måi tr­m, 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 tr­m 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 l­i l¡ hiÎn ½ang tãn t­i 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ê l­i mæt cŸch ½æng. CŸc giao thöc n¡y ho­t ½æng trong ½iËu kiÎn gi¨ ½Ùnh l¡ m­ng viÍn tháng cho ph¾p phŸt hiÎn cŸc sú câ cða mæt tr­m 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 tr­m bÙ sú câ, ta c·n ph¨i xŸc ½Ùnh cŸc sâ m¡ tr­m 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 tr­m v¡o l­i trong vÝng trÝn c·n ph¨i tiÆn h¡nh song song vèi viÎc cºp nhºt l­i 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 ho­t ½æng kiÌu n¡y triÌn khai mæt sú g°n bÜ m­nh 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 tr­m ½õì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 tr­m. - 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Ü m­nh. 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 Tr­ng thŸi cÜ thÌ cða måi tr­m l¡ : - repos : Tr­m kháng thúc hiÎn cºp nhºt n¡o c¨. - actif : Tr­m ½¬ 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 tr­m khŸc ½Ì kiÌm tra. - passif : Tr­m ½¬ ½ãng û cho mæt cºp nhºt v¡ ché trºt tú tõçng öng. - modification : Tr­m ½ang trong tÖnh tr­ng 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 tr­ng thŸi khŸc. Lîc khêi sú, t¶t c¨ cŸc tr­m ½Ëu trong tr­ng thŸi repos. Tr­m 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 tr­ng thŸi repos. Lîc n¡y nÜ ½õìc nhºn d¶u v¡ ½õìc gøi v¡o vÝng trÝn, tr­m khêi sú chuyÌn tr­ng 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 tr­m ½Ì chuyÌn cŸc tr­m 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 tr­m sau khi thúc hiÎn l­i trê vË tr­ng 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 tr­m khêi sú : mæt tr­m n¡o ½Ü trong tr­ng thŸi repos hay passif ph¨i chuyÌn to¡n bæ yÅu c·u ½¬ ½Æn vèi nÜ; mæt tr­m trong tr­ng 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 l­i v¡ ½õìc lõu trù. CŸc yÅu c·u bÙ lõu l­i sÁ ½õìc gøi tiÆp v¡o vÝng trÝn, khi tr­m 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 l­i 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â tr­m 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 l­i 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 tho­i cho b­n, chuáng ½iÎn tho­i rung lÅn b­n nh¶c mŸy sau khi b­n tr¨ léi ½iÎn tho­i xong b­n h­ mŸy kÆt thîc kÆt nâi. Ngõéi gài ch× biÆt quay sâ, b­n 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 t­o giao diÎn cho ½âi tõìng v¡ cÜ nhiËu cŸch thúc thi ½a d­ng 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 t­i mæt ½âi tõìng tham chiÆu ½Æn cho ½âi tõìng cung c¶p ½ang phòc ½Ü. Sau khi tãn t­i 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 d­ng cÜ thÌ truyËn ngang qua m­ng ½Æn ½âi tõìng t÷ xa. Hçn nùa, ORB s°p xÆp l­i cŸc tham sâ tr¨ vË, chuyÌn ½äi chîng t÷ khuán d­ng ½´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 t­i cïng ½Ùa ch× vèi trÖnh öng dòng cÝn ½âi tõìng ½õìc gài t÷ xa thÖ tãn t­i 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 t­i mæt vÙ trÏ n¡o ½Ü ê trÅn m­ng. ‡Ì 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 t­i 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 ho­t 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 m­ng hå trì TCP/IP, DCE v¡ trÅn h·u hÆt cŸc hÎ thâng m­ng Intranet. Qu¶n lý giao dÞch trong CORBA Trong mæt öng dòng phµn tŸn t­i 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 t­i mæt théi ½iÌm m¡ Server cÜ thÌ khêi t­o 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 t­i 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Ì t­o 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 h­n 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 m­ng 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 m­ng. 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 M­ng 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 m­nh mÁ cða cáng nghÎ truyËn tháng v¡ m­ng Internet, cïng vèi xu thÆ to¡n c·u hoŸ trong mài lØnh vúc, thõçng m­i ½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 ho­t ½æ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 t­i Ï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:

  • docINTNNOP.DOC
  • rarCHUONGTRINH.rar