MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
ĐẠ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
LỚP : KHMT K16
GVHD : PGS.TS LÊ VĂN SƠN
ĐÀ NẴNG, 5/2012
Lời mở đầu
Nguyễn Tùng Sinh Trang 1
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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
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ử:
Nguyễn Tùng Sinh Trang 3
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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:
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.
Nguyễn Tùng Sinh Trang 5
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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
• Không dùng chung hoặc chia sẻ bộ nhớ;
• Không sử dụng chung đồng hồ xung nhịp;
• Chúng liên lạc với nhau thông qua mạng truyền thông.
Nguyễn Tùng Sinh Trang 7
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.
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
• 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
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.
Nguyễn Tùng Sinh Trang 9
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
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 đề.
Đố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.
Nguyễn Tùng Sinh Trang 10
RMI Registry
RMI Client
RMI Server
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Kiến trúc của hệ thống RMI bao gồm các tầng như sau:
+Tầng ứng dụng: bao gồm ứng dụng server và client.
- Server:
• Hiện thực giao diện remote mà client dùng
– Thực thi chương trình của client.
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:
– Máy ảo Java (JVM) trên máy server dùng hàm bind() hoặc rebind() của
lớp Naming để đăng ký với rmiregistry.
– Chương trình client dùng hàm Naming.lookup() để yêu cầu bộ đăng ký
cho biết tham chiếu đến đối tượng.
– Bộ đăng ký rmiregistry trả về tham chiếu đối tượng tồn tại trên máy
server.
– Trên cơ sở tham chiếu của đối tượng do hàm lookup() trả về, chương
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.
Nguyễn Tùng Sinh Trang 12
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Ví dụ từ client với Web browser, chúng ta có thể truy cập đến những server khác
nhau như:
• Server chứa cơ sở dữ liệu (Database server),
• Server quản trị Web (Web server),
• Server chứa chương trình ứng dụng (Application server).
Trong các Server kể trên, Server quản trị cơ sở dữ liệu đóng vai trò hết sức quan
trọng. Hầu hết các hệ thống thông tin đều cần đến Server này. Người ta có con số
thống kê chỉ ra rằng có khoảng trên 80% ứng dụng máy tính liên quan đến cơ sở dữ
liệu.
Với Java, ngôn ngữ được phát triển nhằm hướng về với mạng Internet. Việc truy
cập đến cơ sở dữ liệu từ nhiều vị trí khác nhau là một việc không thể thiếu.
Sử dụng Java để kết nối với dữ liệu trên các hệ quản trị cơ sở dữ liệu cho phép
JDBC (Java Database Connectivity) để cho phép từ database client được viết bằng
Java có thể truy cập đến một cơ sở dữ liệu tùy ý nào đó.
Hãng Sun đã phân ra bốn loại trình điều khiển JDBC khác nhau:
Loại I: JDBC-ODBC bridge plus ODBC Driver, đây là trình điều khiển mang
tính cầu nối giữa trình ứng dụng Java và trình điều khiển ODBC của Microsoft.
Trình điều khiển này được hiện thực bằng bytecode, trong khi trình điều khiển
CSDL là nhị phân nên không dùng được trên các trình duyệt Web.
Chương trình ứng dụng Java trong trường hợp này chỉ thực thi trên máy với
Windows.
Loại II: Trình điều khiển JDBC truy cập cơ sở dữ liệu thông qua giao thức riêng
của hệ quản trị cơ sở dữ liệu (Native - API partly - Java Driver) như Oracle, Sybase,
Informix, DB2 hay một hệ quản trị cơ sở dữ liệu nào đó.
Trình điều khiển này sử dụng phần mã nhị phân làm driver của hệ quản trị
CSDL, nên phần mã nhị phân phải được nạp vào máy client khi hoạt động.
Loại III: JDBC-Net pure Java Driver, trình điều khiển hoàn toàn bằng Java dùng
giao thức chuẩn.
Nguyễn Tùng Sinh Trang 14
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
Với trình điêu khiển này, có thể dùng nó để truy cập đến bất kỳ một cơ sở dữ
liệu nào như là một cầu nối giữa database client với một database server (tương tự
loại I).
Nhưng đây là trình điều khiển hoàn toàn bằng Java (bytecode) nên có thể nạp để
thực thi trên Web vào thời điểm ứng dụng thực thi. Có thể dùng để truy cập qua Web
browser
Loại IV: Trình điều khiển hoàn toàn bằng Java dùng giao thức đặc thù (Native
Protocol pure Java Driver).
Trình điều khiển náy tương tự loại II, nhưng được viết hoàn toàn bằng Java
(bytecode), nên không cần phải có bất kỳ chương trình nào được nạp trước khi ứng
dụng thực thi.
Chính vì vậy có thể triển khai trên hệ thống sử dụng Web browser làm database
cục bộ của mình. Sau khi kết thúc truy vấn, MXL gửi danh sách di chuyển đến
Server kế tiếp trong hệ thống đa server.
Nguyễn Tùng Sinh Trang 16
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
4. Nếu Server cuối cùng trong danh sách di chuyển - nếu việc thực thi các câu
lệnh truy vấn trên CSDL cục bộ thành công thì chuyển sang trạng thái uỷ thác
(CommitTransaction) và trả danh sách kết quả khác null về cho Server liền
trước nó. Ngược lại trả về null và chuyển sang trạng thái khôi phục
(RollbackTransaction).
5. Server nhận được danh sách kết quả từ Server sau nó trong danh sách di
chuyển - nếu kết quả khác null thì chuyển sang trạng thái uỷ thác
(CommitTransaction) và gán kết quả truy vấn cục bộ vào danh sách kết quả và
trả về Server liền trước nó. Ngược lại, chuyển sang trạng thái khôi phục
(Rollback transaction) trả kết quả về null cho Server liền trước.
6. Khi Server đầu tiên nhận được danh sách kết quả - nếu danh sách kết quả khác
null thì chuyển sang trạng thái uỷ thác (CommitTransaction) và trả danh sách
kết quả cho MGT. Ngược lại, chuyển sang trạng thái khôi phục (Rollback
transaction) và trả kết quả về null cho MGT.
7. MGT nhận được danh sách kết quả và xử lý dựa trên danh sách kết quả.
Nguyễn Tùng Sinh Trang 17
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
KẾT LUẬN
Một trong các tiêu chí đặt ra trong việc phát triển các chương trình ứng dụng
hiện nay, là phải hoạt động hiệu quả trên môi trường mạng, đáp ứng được các yêu
cầu của đối tượng sử dụng. Đòi hỏi các nhà thiết kế hệ thống, người lập trình phải
có tư duy và khả năng và nắm bắt kịp thời các công nghệ ứng dụng trong lập trình
mạng.
Qua quá trình nghiên cứu bài giảng của PGS.TS Lê Văn Sơn và các tài liệu
liên quan, áp dụng thực hiện tiểu luận, bản thân Tôi được hiểu thêm bản chất của hệ
tin học phân tán, cơ chế hoạt động của hệ thống đa server, cơ chế triệu gọi từ xa, tư
Nguyễn Tùng Sinh Trang 19
MÔN: LẬP TRÌNH MẠNG NÂNG CAO ĐĂNG KÝ TUA DU LỊCH
TÀI LIỆU THAM KHẢO
[1] TS. Lê Văn Sơn, Hệ tin học phân tán, Nhà xuất bản Đại học quốc gia TP. Hồ
Chí Minh.
[2] Nguyễn Phương Lan, Hoàng Đức Hải, Java lập trình mạng, Nhà xuất bản Giáo
dục, 2001
[3] Lê Văn Sơn, Nguyễn Xuân Tiến, Nghiên cứu phát triển giải pháp hiệu quả khai
thác luật kết hợp trong cơ sở dữ liệu phân tán
[4] Lê Văn Sơn, Phạm Đình Hân, Phát triển giải pháp kỹ thuật đảm bảo gắn bó dữ
liệu cho các hệ thống thông tin đào tạo trên mạng Internet/Intranet
[5] RM
Nguyễn Tùng Sinh Trang 20