BỘ GIÁO DỤC & ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG
TIỂU LUẬN
Môn: LẬP TRÌNH MẠNG
Đề tài:
XÂY DỰNG CHƯƠNG TRÌNH PHÂN TÁN ĐẢM BẢO GẮN
BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG
Giảng viên: PGS TS. Lê Văn Sơn
Học viên : Hoàng Như Quỳnh
Trần Nhật Vinh
Lớp : Khoa học máy tính K11
Khóa : 02/2009 - 2011
ĐÀ NẴNG, 03/2010
MỤC LỤC
PHẦN I: XÂY DỰNG CHƯƠNG TRÌNH PHÂN TÁN ĐẢM BẢO GẮN BÓ DỮ LIỆU TRÊN CÁC
SERVER NGANG HÀNG 4
1. Đặt vấn đề 4
2. Nội dung bài toán: 5
PHẦN II: LẬP TRÌNH HỆ THỐNG ĐA SERVER BẰNG NGÔN NGỮ JAVA 8
1. Giới thiệu mô hình đối tượng phân tán RMI 8
2. Cơ chế hoạt động của RMI: 9
3. Kết nối và truy cập cơ sở dữ liệu : 11
4. Xây dựng bài toán bằng Java RMI: 12
PHẦN III: DANH SÁCH DI CHUYỂN 13
1. Khái niệm: 13
2. Nội dung giải thuật danh sách di chuyển 13
PHẦN IV: VIẾT CHƯƠNG TRÌNH CẬP NHẬP CÁC D VÀ MONITORING TRÊN CÁC SERVER
NGANG HÀNG KHI CÁC CLIENT NHẬP DỮ LIỆU 16
LỜI NÓI ĐẦU
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 4
Trân trọng cảm ơn!
PHẦN I: XÂY DỰNG CHƯƠNG TRÌNH PHÂN TÁN ĐẢM BẢO GẮN BÓ DỮ
LIỆU TRÊN CÁC SERVER NGANG HÀNG.
1. Đặt vấn đề
Vấn đề gắn bó dữ liệu trong các hệ thống phân tán nói chung và các hệ thống thông tin
đăng ký trên mạng nói riêng như việc đăng ký các tua du lịch, mua bán trong các giao dịch
thương mại điện tử, đăng ký giữ chỗ trong giao thông vận tải, đăng ký dự thi trong các hệ
thống thông tin đào tạo, đã trở thành một lĩnh vực thu hút nhiều sự quan tâm của các nhà
nghiên cứu lý thuyết lẫn các nhà sản xuất phần mềm nhằm tìm ra các giải pháp hữu hiệu đảm
bảo tính gắn bó thông tin trong các cơ sở dữ liệu truy cập ngẫu nhiên với số lượng truy cập lớn
Ta xét bài toán đảm bảo gắn bó dữ liệu trong các hệ thống thông tin lớn, đa truy cập. Hệ thống
thông tin được triển khai trên hệ thống gồm nhiều Server kêt nối với nhau qua đường truyền
viễn thông. Các hệ thống này thông tin này có thể chia thành nhiều cơ sở dữ liệu đặt trên các
server khác nhau hay chỉ bao gồm một cơ sở dữ liệu nhưng được cài đặt trên các server khác
nhau dưới dạng các bản sao.
Hệ thống trình bày ở trên là hệ thống thông tin phức tạp sẽ bao gồm các đặc điểm sau đây:
- Cập nhật thường xuyên để làm tươi cơ sở dữ liệu.
- Cho phép truy cập từ xa các thông tin cần thiết.
- Cho phép đăng ký từ xa.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 5
Hệ thống với những đặc điểm trên đòi hỏi phải đảm bảo tính gắn bó dữ liệu bằng những
giải pháp kỹ thuật đáng tin cậy. Giải thuật danh sách di chuyển được phát triển nhằm giải
quyết triệt để các vấn đề gắn bó dữ liệu trình bày ở trên.
2. Nội dung bài toán:
Xây dựng hệ thống đa Server (n>2), xây dựng chương trình đảm bảo gắn bó dữ liệu
trên các cơ sở dữ liệu phân tán trên các Server đó.
Sử dụng ngôn ngữ lập trình Java với sự kết hợp với cơ chế truy cập triệu gọi phương
thức từ xa (RMI – Remote Method Invoke).
Biên dịch các yêu cầu thành dạng lệnh để truy tìm thông tin.
Thực hiện công việc cục bộ mang tính chất cục bộ của hệ thống cục bộ như kiểm tra
quyền truy cập thông tin, thống kê số lượng khách hàng lập hoá đơn bán hàng,…
Nếu tìm được đúng thông tin yêu cầu sau đó gởi thông tin này đến hệ thống có yêu cầu.
Đây là mô hình Client / Server ( khách / chủ) Client gởi yêu cầu ( thông điệp) đến
server. Sự tác động này gọi là sự giao dịch.
Client A :
{Goiyeucau(B,yc) // client gởi server B
Nhanyeucau(ketqua)}
Sever B
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 7
{ Nhanyeucau(s,nh)
Nếu(hợp lệ)
Bắt đầu
Tracuucsdl
Thongke
Traketqua(s,kq)
}
Câu truy vấn có thể cài đặt tại Client hoặc tại máy Server. Hai giải pháp này khác nhau
ở khối lượng thông tin trao đổi giữa các client với nhau. Giả sử rằng ta đang theo tác trên môi
trường Web. Vậy chương trình có thể triển khai trên Server và trên Client chỉ cần trình duyệt
Web mà thôi (các trình duyệt Web như Internet Explorer, Netcape Navigator). Web Server xử
lý các yêu cầu từ Client gởi lên sau khi xử lý xong và trả về kết quả Client. Như vậy với mô
hình này thì chương chình được cài đặt toàn bộ trên Server.
Với mô hình trên ta thấy độ tin cậy của thông tin. Thông tin là đúng tại thời điểm
Server nhận được thông điệp và đọc nó, có thể không đúng khi khi client nhận được. Điều này
liên quan đến việc làm tươi dữ liệu.
Vì vậy ta phải có giải pháp cho việc truy cập đồng thời vào dữ liệu dùng chung. Hiện
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
RMI Registry
RMI Client
RMI Server
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 9
Để quá trình truyền tin là trong suốt với người lập trình, truyền tin giữa client và server
được cài đặt theo mô hình phân tầng như hình vẽ dưới đây
Các ứng dụng RMI được chia thành hai chương trình độc lập là: chương trình Client và
chương trình Server. Chương trình Server tạo ra các đối tượng từ xa và cung cấp các tham
chiếu đến chúng và chờ các chương trình Client triệu gọi các đối tượng này. Chương trình
Client nhận tham chiếu đến các đối tượng ở xa (đối tượng do chương trình Server tạo ra) và
triệu gọi chúng như các đối tượng cục bộ.
2. Cơ chế hoạt động của RMI:
Các hệ thống RMI phục vụ cho việc truyền tin thường được chia thành hai loại: client và
server. Một server cung cấp dịch vụ RMI, và client gọi các phương thức trên đối tượng của
dịch vụ này.
Server RMI phải đăng ký với một dịch vụ tra tìm và đăng ký tên. Dịch vụ này cho phép
các client truy tìm chúng, hoặc chúng có thể tham chiếu tới dịch vụ trong một mô hình khác.
Một chương trình đóng vai trò như vậy có tên là rmiregistry, chương trình này chạy như một
tiến trình độc lập và cho phép các ứng dụng đăng ký dịch vụ RMI hoặc nhận một tham chiếu
tới dịch vụ được đặt tên. Mỗi khi server đựơc đăng ký, nó sẽ chờ các yêu cầu RMI từ các
client. Gắn với mỗi đăng ký dịch vụ là một tên được biểu diễn bằng một xâu ký tự để cho phép
các client lựa chọn dịch vụ thích hợp. Nếu một dịch vụ chuyển từ server này sang một server
khác, client chỉ cần tra tìm trình đăng ký để tìm ra vị trí mới. Điều này làm cho hệ thống có
khả năng dung thứ lỗi-nếu một dịch vụ không khả dụng do một máy bị sập, người quản trị hệ
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
Đường logic
Chương trình Server
Skeleton
Tầng tham chiếu từ xa
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 11
Tại phía server, đối tượng skeleton có nhiệm vụ lắng nghe các yêu cầu RMI đến và
truyền các yêu cầu này tới dịch vụ RMI. Đối tượng skeleton không cung cấp bản cài đặt của
dịch vụ RMI. Nó chỉ đóng vai trò như là chương trình nhận các yêu cầu, và truyền các yêu
cầu. Sau khi người phát triển tạo ra một giao tiếp RMI, thì anh ta phải cung cấp một phiên bản
cài đặt cụ thể của giao tiếp. Đối tượng cài đặt này được gọi là đối tượng skeleton, đối tượng
này gọi phương thức tương ứng và truyền các kết quả cho đối tượng stub trong client RMI. Mô
hình này làm cho việc lập trình trở nên đơn giản, vì skeleton được tách biệt với cài đặt thực tế
của dịch vụ. Tất cả những gì mà người phát triển dịch vụ cần quan tâm là mã lệnh khởi tạo (để
đăng ký dịch vụ và chấp nhận dịch vụ), và cung cấp chương trình cài đặt của giao tiếp dịch vụ
RMI.
3. 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ư:
• 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 tạo ra các
trang Web mang tính "động" hơn. Làm cho các trang văn bản Web không còn là các văn bản
với các liên kết như buổi ban đầu mới sáng tạo ra.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
<name>
Bắt đầu một giao dịch có tên là name trên một liên kết
2 End Ranh giới kết thúc giao dịch
3 Commit Khẳng định tất cả các thay đổi kể từ thời điểm bắt đầu
giao dịch
4 Rollback Khôi phục lại toàn bộ các thay đổi của giao dịch kể từ
khi nó bắt đầu thực hiện
2. Nội dung giải thuật danh sách di chuyển
Giải thuật danh sách di chuyển được trình bày như sau:
1. Khởi động các module trên server, gồm module MobListHandle, ClientHandle. Hệ
thống cho phép NSD cập nhật dữ liệu từ các chương trình Client.
2. Module ClientHandle nhận dữ liệu từ Client và thành lập danh sách di chuyển, sau đó
chuyển danh sách cho module MobListHandle.
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh
GẮN BÓ DỮ LIỆU TRÊN CÁC SERVER NGANG HÀNG Trang 14
3. MobListHandle mở ra một giao dịch, thực hiện truy vấn dữ liệu ngay trên cơ sở dữ liệu
cục bộ của mình. Sau khi kết thúc truy vấn, MobListHandle gửi danh sách di chuyển
đến Server kế tiếp trong hệ thống đa server.
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
ClientHandle. Ngược lại, chuyển sang trạng thái khôi phục (Rollback transaction) và trả
Công nghệ các Trường Đại học Kỹ thuật, số 46+47/2004, Hà Nội, 2004.
[3] Phạm Đình Hân, Lê Văn Sơn, Phát triển kỹ thuật MAONT bằng JSP đảm bảo gắn bó
dữ liệu trong các hệ thông tin đào tạo, Tạp chí Khoa học & Công nghệ, Đại học Đà
Nẵng, số 8.2004
[4] Lê Văn Sơn, Nguyễn Hữu Hải, Phát triển phương pháp đảm bảo gắn bó dữ liệutrong
điều kiện có sự cố của các hệ thống thông tin đăng ký trên mạng Internet/Intranet, Tạp
chí Khoa học và Công nghệ, Đại học Đà Nẵng, số 6.2004
GVHD: PGS.TS. Lê Văn Sơn TH: Trần Nhật Vinh & Hoàng Như Quỳnh