1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận môn lập trình mạng nâng cao viết chương trình cho hệ đa server với csdl gắn bó cho phép đăng ký tua du lịch từ xa với phương án lý tưởng

20 677 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 20
Dung lượng 204,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nói cách khác, nếu một công ty du lịch đưa ra giao dịch đăng ký một tua du lịch, bất kỳ một giao dịch đồng thời khác muốn truy xuất tua đó đều phải đợi cho đến khi kết thúc giao dịch đầu

Trang 1

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN

LẬP TRÌNH MẠNG NÂNG CAO

ĐỀ TÀI:

1.>Tên đề tài: Hãy viết chương trình cho hệ đa Server với CSDL gắn bó cho phép đăng ký tua du lịch

từ xa với phương án lý tưởng.

2.>Xây dựng hệ thống 3 server và CSDL

3.>Xây dựng chương trình Client thực hiện đăng ký trong điều kiện đảm bảo gắn bó thông tin

4.>Chống “trùng” và chống “ảo”

SINH VIÊN : NGUYỄN TÙNG SINH

ĐÀ NẴNG, 5/2012

Lời mở đầu

Trang 2

Ngày nay, công nghệ mạng máy tính và Internet đã phát triển mạnh, không

những cho chúng ta khai thác: Nguồn tài nguyên là những kho tư liệu về các lĩnh

vực, Mà còn có thể triển khai các hệ thống thông tin giải quyết những công việc đặt

ra trong hoạt động thường ngày.

Đối với các hệ thông tin lớn, cơ sở dữ liệu không chỉ được lưu trữ và quản lý

bởi các server độc lập mà thường được phân tán trên nhiều server và phân bổ ở các

vị trí địa lý khác nhau Hệ thống cho phép xử lý đa truy cập đồng thời cho phép đăng

ký từ xa Một trong những lợi ích của việc phân tán dữ liệu như vậy là nhằm chia yêu

cầu xử lý dữ liệu cho nhiều máy nhằm tăng năng lực xử lý thông tin của hệ thống.

Môn học Lập Trình Mạng dưới sự giảng dạy của thầy giáo PGS.TS Lê Văn

Sơn, Lớp Cao Học KHMT K16 đã hiểu thêm tầm quan trọng của vấn đề của môn

học Vì vậy Tôi đã chọn tiểu luận:

1 Xây dựng hệ thống 3 server và CSDL

2 Xây dựng chương trình Client thực hiện đăng ký trong điều kiện đảm bảo gắn

bó thông tin

3 Chống “trùng” và chống “ảo”

Tiểu luận chắc chắn không tránh khỏi những thiếu sót, rất mong thầy và các

bạn học viên trong lớp cao học KHMT khóa 16 tận tình chỉ bảo và đóng góp ý kiến.

Cuối cùng, em xin chân thành cảm ơn những kiến thức quý giá mà thầy PGS.

TS Lê Văn Sơn đã tận tình dạy bảo và hướng dẫn tiểu luận này.

Học viên thực hiện báo cáo: Nguyễn Tùng Sinh

Trang 3

CHƯƠNG I: CÁC VẤN ĐỀ ĐẶT RA CHO ỨNG DỤNG

I Yêu cầu của chương trình :

Một công ty du lịch có 3 trung tâm lớn đặt tại: Hà Nội, T.p Hồ Chí Minh, và

Đà Nẵng, phục vụ cho việc tiếp nhận đăng ký và tổ chức các tua du lịch Công ty quyết định xây dựng một hệ thống ứng dụng cho phép đăng ký tua du lịch từ xa với 3 Server đặt tại trung tâm trên, các Server đều tổ chức một cơ sở dữ liệu riêng Tuy nhiên cấu trúc dữ liệu và dịch vụ của các server thì giống nhau Với cơ sở hạ tầng về mạng và thiết bị hệ thống hoạt động lý tưởng Yêu cầu đặt ra là cần xây dựng hệ 3 server với Cơ sở dữ liệu “gắn bó”

Trước tiên, ta giả sử rằng hệ thống viễn thông với đường truyền mà thông qua

đó các thông điệp được gửi và nhận có độ ổn định ở mức chấp nhận được và khả năng hoạt động của các bộ vi xử lý với độ tin cậy cao

Các đối tượng khác nhau của hệ được liên hệ với nhau bởi tập hợp các quan hệ

gọi là các ràng buộc toàn vẹn Trạng thái của hệ thỏa mãn một tập các ràng buộc toàn vẹn gọi là trạng thái gắn bó Để xây dựng được một hệ đảm bảo tính gắn bó thông tin,

ta tìm hiểu kỹ hơn về giao dịch

I.1 Khái niệm giao dịch:

Giao dịch là một đơn vị tính toán nhất quán và đáng tin cậy Vì thế về mặt trực quan, một giao dịch nhận một CSDL, thực hiện một hành động trên CSDL và sinh ra một bản CSDL mới, gây ra một dịch chuyển trạng thái Điều này tương tự như điều

mà câu vấn tin thực hiện, ngoại trừ trường hợp nếu CSDL nhất quán trước khi thực hiện giao dịch thì cũng sẽ nhất quán vào lúc kết thúc, cho dù : (1) giao dịch có thể

thực hiện đồng thời với những giao dịch khác (2) có xảy ra sự cố trong lúc thực hiện

giao dịch

I.2 Các tính chất của giao dịch:

Các khía cạnh nhất quán và khả tín của giao dich là do 4 tính chất: tính nguyên

tử (atomicity), tính nhất quán (consistency), tính biệt lập (isolation) và tính bền vững;

và thường được gọi chung là tính chất ACID của giao dịch

1.1 Tính nguyên tử:

Trang 4

Tính nguyên tử liên quan đến sự kiện là một giao dịch được xử lý như một đơn vị hoạt tác Chính vì thế mà các hành động của giao dịch, hoặc tất cả đều hoàn tất hoặc không một hành động nào hoàn tất

1.2 Tính nhất quán:

Tính nhất quán của một giao dịch chỉ đơn giản là tính đúng đắn của nó Nói cách khác, một giao dịch là một chương trình đúng đắn, ánh xạ CSDL từ trạng thái nhất quán này sang trạng thái nhất quán khác

1.3 Tính biệt lập:

Biệt lập là tính chất của các giao dịch, đòi hỏi mỗi giao dịch phải luôn nhìn

thấy CSDL nhất quán Nói cách khác, một giao dịch đang thực thi không thể làm

lộ ra các kết quả của nó cho những giao dịch khác đang cùng hoạt động trước khi nó ủy thác

1.4 Tính bền vững:

Tính bền vững muốn nói đến tính chất của giao dịch, đảm bảo rằng một khi giao dịch ủy thác, kết quả của nó được duy trì cố định và không bị xóa ra khỏi CSDL

I.3 Các loại giao dịch:

I.3.1 Giao dịch phẳng:

Giao dịch phẳng có một khởi điểm duy nhất (Begin_transaction) và một điểm kết thúc duy nhất (End_transaction)

I.3.2 Giao dịch lồng:

Đây là một mô hình giao dịch cho phép một giao dịch gồm chứa những giao dịch khác với điểm bắt đầu và ủy thác riêng của chúng Những giao dịch như thế được gọi là giao dịch lồng (nested transaction) Những giao dịch được đặt vào trong giao dịch khác thường được gọi là giao dịch con

Các giao dịch lồng đã được chú ý như một khái niệm giao dịch tổng quát hơn Mức độ lồng nói chung là để ngỏ, cho phép các giao dịch con cũng có thể có các giao dịch lồng Tính tổng quát này có ích trong các lĩnh vực ứng dụng mà ở đó các giao dịch phức tạp hơn so với việc xử lý dữ liệu truyền thống

Trang 5

Giao dịch lồng có thể phân loại thành: kiểu lồng đóng (closed nesting) và kiểu lồng mở (open nesting) do các đặc trưng kết thúc của chúng Các giao dịch lồng đóng ủy thác theo lối từ dưới lên đến gốc Vì thế một giao dịch con lồng bắt

đầu sau cha và hoàn tất trước nó, và việc ủy thác giao dịch con phụ thuộc vào việc

ủy thác của giao dịch cha Ngữ nghĩa của những giao dịch này cưỡng chế tính nguyên tử tại mức trên cùng Kiểu lồng mở nới lỏng sự hạn chế về tính nguyên tử của của các giao dịch lồng đóng Vì thế một giao dịch lồng mở cho phép bên ngoài giao dịch thấy được các kết quả một phần của nó

Ưu điểm của các giao dịch lồng biểu hiện qua những điểm sau: trước tiên, chúng cung cấp một mức độ đồng thời cao cho các giao dịch Vì một giao dịch có chứa đựng một số giao dịch khác, tính đồng thời là cao hơn ngay bên trong một giao dịch Thí dụ nếu giao dịch đăng ký tua du lịch được cài đặt như giao dịch phẳng, rất có thể chúng ta không truy xuất được các mẫu tin về tour cụ thể nào đó cùng một lúc Nói cách khác, nếu một công ty du lịch đưa ra giao dịch đăng ký một tua du lịch, bất kỳ một giao dịch đồng thời khác muốn truy xuất tua đó đều phải đợi cho đến khi kết thúc giao dịch đầu tiên mà trong đó nó gồm cả các công

việc đặt phòng khách sạn và mướn xe ngoài việc tua Tuy nhiên, một cài đặt lồng

sẽ cho phép giao dịch thứ hai truy xuất dữ liệu về tua ngay khi giao dịch con Tour

của giao dịch đăng ký tua du lịch thứ nhất hoàn tất Nói cách khác, chúng ta có thể thực hiện một mức đồng bộ hóa chi tiết hơn giữa các giao dịch đồng thời

Ưu điểm thứ hai của giao dịch lồng là khả năng khôi phục Chúng ta có thể khôi phục một cách độc lập cho mỗi giao dịch con sau khi gặp sự cố Điều này hạn chế những tổn hại một phần trong các giao dịch nhỏ khiến chi phí khôi phục thấp hơn Trong một giao dịch phẳng, nếu một thao tác nào bị thất bại, toàn bộ giao dịch đều bị hủy bỏ và khởi động lại, còn trong một giao dịch lồng, nếu một thao tác thất bại, chỉ giao dịch con chứa thao tác đó cần phải hủy bỏ và khởi động lại

Trang 6

Nhằm duy trì tính chất nguyên tử và tính chất bền vững của các giao dịch phân tán, các nhà nghiên cứu đã đưa ra một số thuật toán, trong đó có giải thuật hai pha

tuyến tính (linear 2PC) (cũng được gọi là nghi thức 2PC lồng)[Gray, 1979]

I 4 Giải thuật hai pha tuyến tính:

Chúng ta giả thiết rằng, tại vị trí nguồn của giao dịch một tiến trình thực hiện các thao tác của nó, tiến trình này được gọi là điều phối viên (Coordinator) Điều

phối viên trao đổi với các thành viên (Participant) tại những vị trí có tham gia vào việc thực hiện các thao tác của giao dịch

Có một thứ tự giữa các vị trí trong hệ thống dành cho việc giao tiếp Chúng

ta hãy giả thiết rằng thứ tự giữa các vị trí có tham gia vào việc thực hiện một giao

dịch là 1, 2,…, N với điều phối viên là vị trí đầu tiên trong thứ tự này Nghi thức

2PC được cài đặt bằng cách trong pha đầu tiên truyền tới [ tính từ điều phối viên (số 1) đến N] và trong pha thứ hai truyền ngược từ N về điều phối viên Thuật toán 2PC tuyến tính hoạt động theo cách sau:

Điều phối viên gửi thông báo prepare đến thành viên 2 Nếu thành viên 2 chưa sẵn sàng ủy thác giao dịch, nó gửi thông báo biểu quyết hủy bỏ vote-abort (VA) và giao dịch bị hủy tại thời điểm này (hủy bỏ đơn phương của 2) Ngược lại

nếu thành viên 2 đồng ý ủy thác, nó gửi thông báo vote-commit(VC) cho thành viên 3 rồi chuyển sang trạng thái READY Quá trình này tiếp tục cho đến khi một biểu quyết ủy thác đến được thành viên N Đến đây kết thúc pha đầu tiên Nếu N quyết định ủy thác, nó gửi cho thành viên N-1 thông báo global-commit (GC); bằng không, nó gửi một thông báo toàn cục global-abort(GA) Theo đó các thành

viên sẽ chuyển sang trạng thái thích hợp (COMMIT hoặc ABORT) và làm lan truyền thông báo trở về điều phối viên Thuật toán được mô tả trong hình 1:

Pha 1

Pha 2

Trang 7

Hình 1: Cấu trúc giao tiếp 2PC tuyến tính VC: vote-commmit; VA: vote-abort; GC: global commit; GA: global-abort

II Dự kiến mô hình khai thác ứng dụng :

Hiện tại công ty đã có hệ thống mạng hoạt động ổn định, kết nối giữa các trung tâm đến các đại lý (clients) Với nhiệm vụ phát triển hệ thống được đặt hàng như trên của công ty Tôi dự kiến mô hình khai thác của hệ thống như sau:

III Hướng giải quyết bài toán:

Các yêu cầu đặt ra của bài toán đòi hỏi việc phát triển hệ thống phải dựa trên

cơ sở lý thuyết về lập trình mạng cho ứng dụng và hệ cơ sở dữ liệu phân tán

Vận dụng mô hình lý thuyết về hệ phân tán :

Hệ tin học phân tán (Distributed System) là hệ thống xử lý thông tin bao gồm

nhiều bộ xử lý hoặc bộ vi xử lý nằm tại các vị trí khác nhau được liên kết với nhau thông qua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ điều hành

đặc điểm của hệ:

Xem dữ liệu tua (tourlist)

Đăng ký tua cho khách

huỷ đăng ký tua cho khách

Xoá bớt tua Thêm Tua mới

Đại lý

(client)

Trung tâm

(admin)

Biểu đồ mô tả quan hệ giữa các tác nhân và các use case của hệ thống.

Trang 8

 Mỗi hệ xử lý có bộ xử lý, bộ nhớ riêng

Ứng dụng của hệ: Một trong những tư tưởng lớn của các hệ phân tán là phân

tán hóa các quá trình xử lý thông tin và thực hiện các công việc đó trên các trạm

xa nhau Đó là cơ sở để xây dựng các hệ ứng dụng lớn như thương mại điện tử, giáo dục điện tử, chính phủ điện tử

Vấn đề đặt ra cho ứng dụng: Trong tìm kiếm mô hình vận dụng, Tôi nhận thấy

tính tương tự của vấn đề đặt ra cho ứng dụng với Bài toán kinh điển “Bãi để xe ô tô” được giải quyết khá hoàn chỉnh trong lý thuyết của Hệ tin học phân tán

- Tài nguyên của hệ là số lượng đặt chỗ trên các tua

- SV - server với điều hành của trung tâm điều phối việc đặt chổ

- KH - có thể đăng ký tua hoặc huỷ việc đặt tua thông qua các đại lý

Việc đồng bộ hoá CSDL đăng ký tua tại các server có độ trễ nhất định và điều đó

dẫn đến tình huống :

- Trên thực tế, dữ liệu server nào đó cho biết không còn chỗ trống về một tua nào đó nữa, trong khi trên 1 server khác lại vừa mới có một số khách

huỷ tua mà chưa cập nhật cho các server khác (ảo) Cũng có thể diễn ra

trường hợp là cùng một lúc các server giải quyết đăng ký vào cùng một

tua chỉ còn một chỗ trống (trùng) cũng do thiếu gắn bó thông tin

Lập trình phân tán với Java:

Một số vấn đề về ngôn ngữ Java

Trong những năm gần đây cùng với sự phát triển của Internet, ngôn ngữ Java được nhắc đến khá nhiều trong các đề án Tin học Java không còn chỉ là ngôn ngữ mà được phát triển như một công nghệ với các công cụ như J2SE, J2EE, J2ME, v.v

Công nghệ Java được tổ chức thành các lĩnh vực chính như:

Trang 9

• Other Java Technologies

Bộ phận cấu thành của Java bao gồm:

dịch Java

(Graphical User Interface)

Tính uyển chuyển của ngôn ngữ Java thể hiện qua việc chương trình biên dịch Java chuyển đổi chương trình nguồn Java thành mã đối tượng, gọi là mã byte (bytecodes) - tập tin có tên quy ước với phần mở rộng là class Sau đó, máy ảo Java

có trên máy điều khiển để thực thi

Bytecode là mã trung gian được tạo ra bởi chương trình biên dịch Java

Mã máy chỉ thực hiện trên máy tính mà nó được biên dịch, trong khi bytecode

có thể thực hiện trên bất kỳ hệ thống máy tính nào có trình điều khiển Java Ngoài ra,

tính uyển chuyển làm tăng khả năng tái sử dụng các lớp được tạo ra; các lớp cho phép thực hiện kỹ thuật kết nối động (dynamic binding) khi chương trình thực thi

Kiến trúc và kỹ thuật RMI:

Ứng dụng phân tán trong Java thông qua cơ chế RMI (Remote Method Invocation) thực chất là sự kết hợp nhiều đối tượng đang tồn tại trên các máy khác

nhau để giải quyết vấn đề

x86/Win32

x86/Linux

Source

Code Java

(*.java)

Bytecode

*.class

x86/Win32

SPARC/Solaris x86/Linux

x86/Win32

x86/Linux

Source

Code Java

(*.java)

Bytecode

*.class

x86/Win32

SPARC/Solaris x86/Linux

x86/Win32

x86/Linux

Source

Code Java

(*.java)

Bytecode

*.class

x86/Win32

SPARC/Solaris x86/Linux

Trang 10

Đối tượng này sử dụng hàm của đối tượng khác ở xa để thực thi công việc Khi

đó việc gọi thực thi đối tượng ở xa cũng giống như gọi đối tượng địa phương

Để làm được điều này, ứng dụng phân tán RMI dùng bộ phận đăng ký dịch vụ (registry) để quản lý hoạt động của các đối tượng trên mạng Khi đó thông qua bộ phận đăng ký này, máy ảo Java đóng vai trò server sẽ liên kết với đối tượng ở xa (remote object)

Client tìm đến đối tượng ở xa thông qua tên đã đăng ký với bộ phận đăng ký server này Bộ phận đăng ký dịch vụ được thiết lập mặc định ở cổng 1099 thông qua rmiregistry, có trong bộ công cụ phát triển Java (J2SDK)

Vị trí của hệ thống RMI trong ứng dụng phân tán được mô tả như hình dưới Trong đó các chương trình client và server trao đổi với nhau qua cầu nối của hệ thống RMI

Kiến trúc của hệ thống RMI bao gồm các tầng như sau:

RMI Registry RMI Client

RMI Server

Trang 11

+Tầng ứng dụng: bao gồm ứng dụng server và client

- Server:

xa (bằng cách tạo lớp là UnicastRemoteObject)

- Client:

+ Tầng ủy quyền: bao gồm

- Client (gọi là Stub)

- Server (gọi là Skeleton)

+ Tầng truy cập từ xa: Sự trừu tượng hóa giữa tầng ủy quyền và tầng vận chuyển + Tầng vận chuyển: Quản lý sự giao tiếp giữa các host với nhau trên mạng, dựa trên kết nối TCP/IP Thực chất thực hiện kết nối giữa các máy ảo Java

Các bước để hiện thực ứng dụng phân tán trên hệ thống RMI:

dụng Giao diện này được đặt trên cả client và server Giao diện này có thể là

Remote hay Serializable

server

Trang 12

– Sử dụng tiện ích rmic của JDK để tạo các lớp Stub đặt trên client và

Skeleton trên server

exportObject() của lớp UnicastRemoteObject để báo cho máy ảo Java biết đối tượng được truy cập đến từ xa bởi các đối tượng khác

Như vậy, trong quá trính thực hiện có 3 máy ảo Java hoạt động

Cơ chế làm việc của chương trình trên client và server khi đã được đăng ký bởi

bộ đăng ký rmiregistry như sau:

lớp Naming để đăng ký với rmiregistry.

cho biết tham chiếu đến đối tượng

server

trình client sử dụng để triệu gọi hành vi của đối tượng trên máy server

Kết nối và truy cập cơ sở dữ liệu :

Ngày nay khi đề cập đến việc xây dựng những chương trình máy tính, người ta thường cài đặt dưới dạng giao diện làm việc trên Web

Các chương trình làm việc không chỉ giới hạn trên một máy đơn lẽ mà còn phân tán trên nhiều máy đặt ở những vị trí địa lý khác nhau

Ví dụ từ client với Web browser, chúng ta có thể truy cập đến những server khác nhau như:

Ngày đăng: 31/01/2015, 22:53

HÌNH ẢNH LIÊN QUAN

Hình 1: Cấu trúc giao tiếp 2PC tuyến tính VC: vote-commmit; VA: vote-abort; GC: global commit; GA: global-abort - tiểu luận môn lập trình mạng nâng cao viết chương trình cho hệ đa server với csdl gắn bó cho phép đăng ký tua du lịch từ xa với phương án lý tưởng
Hình 1 Cấu trúc giao tiếp 2PC tuyến tính VC: vote-commmit; VA: vote-abort; GC: global commit; GA: global-abort (Trang 7)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w