Tải bản đầy đủ (.doc) (23 trang)

BÁO CÁO MÔN HỌC LẬP TRÌNH MẠNG VIẾT CHƯƠNG TRÌNH ĐẢM BẢO GẮN BÓ DỮ LIỆU TRÊN CÁC CSDL PHÂN TÁN TẠI CÁC SERVER

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (472.04 KB, 23 trang )

Bài tập tiểu luận Môn: Lập trình mạng nâng cao
ĐẠI HỌC ĐÀ NẴNG
KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO MÔN HỌC
LẬP TRÌNH MẠNG
LẬP TRÌNH MẠNG

ĐỀ TÀI :
VIẾT CHƯƠNG TRÌNH ĐẢM BẢO GẮN BÓ DỮ LIỆU
TRÊN CÁC CSDL PHÂN TÁN TẠI CÁC SERVER
GV hướng dẫn : PGS.TS Lê Văn Sơn
Chuyên ngành : Khoa Học Máy Tính
Khóa : 11
Học viên : Trương Văn Thới
: Hoàng Phi Cường


L ỜI MỞ ĐẦU
Trang: 1 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
À N NG, 10/2010Đ Ẵ
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
Đối với các công ty lớn có chi nhánh đặt ở các địa điểm khác nhau trên các vùng lãnh
thổ khác nhau, việc lưu trữ dữ liệu trên một máy tính rất khó khăn do vượt quá điều kiện của
công ty. Vì vậy đòi hỏi cần có một cách lưu trữ dữ liệu ở nhiều nơi khác nhau nhưng phải
thống nhất. Nhờ hệ thống mạng cục bộ và internet phát triển vượt bậc như hiện nay mà ta
phát triển hệ thống quản lý công ty trên một một môi trường mới khác hoàn toàn so với môi
trường cũ chạy cục bộ trên máy tính cục bộ đó là môi trường mạng phân tán. Các ứng dụng
chạy trên môi trường mạng phân tán ngày càng nhiều và trở nên thông dụng như hiện nay và
bắt đầu có mặt tại Việt Nam.
Với môi trường mạng phân tán này sẽ có nhiều Server đặt ở những nơi khác nhau


người ta gọi là môi trường đa Server. Trong môi trường đa Server và việc truy cập từ xa có
thể truy xuất đồng thời đảm bào toàn vẹn dữ liệu vì dữ liệu có thể lưu trữ dự phòng trên
nhiều Server khác nhau.
Đây là hệ thống đa Server rất phức tạp nhưng hệ thống đảm bảo gắn bó dữ liệu giữa
các Server đồng thời không làm phức tạp việc truy xuất dữ liệu.
Với những thông tin trên nhóm chúng em trình bày chủ đề:
1. Viết chương trình đảm bảo gắn bó dữ liệu trên các CSDL phân tán tại các Server.
2. Nghiên cứu phương pháp đảm bảo gắn bó dữ liệu trên các CSDL phân tán.
3. Xây dựng hệ thống đa Server với n Server (n>4).
4. Xây dựng chương trình Monitoring quan sát sự trao đổi (trạng thái gắn bó) tại các
Server.
Với chủ đề trên nhóm chúng em dùng công cụ ngôn ngữ lập trình Java của hãng phần
mền Sun Micro System đồng thời sử dụng bộ thư viện hỗ trợ lập trình mạng phân tán RMI.
Về thuật toán nhóm nghiên cứu thuật toán danh sách di chuyển .
Đối với tiểu luận này nhóm xây dựng một hệ thống gồm 4 Server và một công cụ
module Monitor nhằm giám sát cập nhật dữ liệu giữa 4 Server để đánh giá tính gắn bó dữ
liệu giữa các server với nhau.

Trang: 2 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
CHƯƠNG 1
XÂY DỰNG CHƯƠNG TRÌNH ĐẢM BẢO GẮN BÓ DỮ LIỆU TRÊN CÁC CSDL
PHÂN TÁN TẠI CÁC SERVER .
- Trên môi trường đa Server ta có các tầng ứng dụng như sau:
o Tầng người sử dụng: nơi người sử dụng có thể thao tác trên chương trình
thông qua giao diện của chương trình. Với sự thuận tiện của Internet ngày càng
nhiều các chuyên gia phần mềm phát triển ứng dụng của mình trên môi trường
Web.
o Tầng trung gian: Đây là nơi người lập trình pháp triển ứng dụng của mình xử
lý các yêu cầu từ phía người dùng, các xử lý này được kết nối với cơ sở dữ liệu

ở tầng cơ sở dữ liệu. Trong tầng này các yêu cầu không thể trực tiếp giải quyết
được nó chuyển đến một đối tác xử lý khác như Web Server, hoặc File Server
để xử lý.
o Tầng CSDL ( cơ sở dữ liệu) nơi các Server chứa các cơ sở dữ liệu chuyên
dùng như SQL Server, Oracle để quản lý CSDL, nhằm xử lý, truy cập truy xuất
các dữ liệu dược xử lý từ tầng trung gian đưa tới.
Hình 1 : Mô hình phân tầng
Trang: 3 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Tầng Users
Tầng CSDL
Tầng Trung Gian
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
1.1 Kỹ thuật lập trình Server – Server giải quyết bài toán cập nhật dữ liệu.
Ta có mô hình đa server như sau:
- Bài toán đảm bảo gắn bó dữ liệu : có một cơ sở dữ liệu được đặt tại các Server ở
những vị trí khác nhau muốn chèn một record mới lên cơ sở dữ liệu đã có trong mô hình
Server – Server ( Server ngang hàng).
Ta có mỗi Server có nhiều Client tương tác với nó mỗi khi một Client của một server
nào đó có nhu cầu chèn một record thì CSDL ở các Server khác cũng nhận được record đó
với độ trễ cho phép.
Trang: 4 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
Với ưu điểm trên ngày càng có nhiều ứng dụng trên môi trường mạng phân tán đáp
ứng nhiều bài toán và nhiều giải cho các công ty lớn.
Đề cử như bài toán bán vé máy bay, điều hành tour du lịch, giảng dạy trực tuyến phân
tán, bán hàng… nhưng đây là một công nghệ tương đối mới thách thức các nhân viên lập
trình muốn triển khai các ứng dụng lớn trên môi trường mạng phân tán này.
1.2 Triển khai hệ thống.
Với bài toán cơ sở dữ liệu bán hàng từ xa hệ thống mạng phân tán có những đặt điểm
sau:

a. Hệ thống gồm nhiều server ( 4 Server ) được bố trí tại nhiều nơi khác nhau và các
server chứa CSDL giống nhau.
b. Cho phép nhiều đại lý cập nhật thông tin khách hàng đồng thời.
c. Hệ thống phải tuyệt đối đảm bảo gắn bó dữ liệu tránh trình trạng hàng hoá cung
cấp hết cho khách hàng A tại đại lý A nhưng vẫn được bán cho khách hàng B ở
một đại lý nào đó.
Đây là một hệ thống thông tin phức tạp gồm nhiều ứng dụng được thiết kế để giải quyết bài
toán một cách tổng thể toàn diện. Ở đây với mục đích tìm hiểu và nghiên cứu ta có thể thu
nhỏ bài toán cơ sở dữ liệu gồm bảng khách hàng.
Sanpham(Masp,Tensp, Soluong,Dongia)
Người sử dụng muốn được cung cấp thông tin về một yêu cầu nào đó qua câu truy vấn trên
Server tiếp nhận câu truy vấn và xử lý câu truy vấn rồi chuyển lại cho người yêu cầu.
Có một khách hàng ở địa điểm A muốn biết thông tin về giá cả, số lượng của mặt
hàng có tại đại lý B tại địa điểm B ở xa để làm được việc này hệ thống phải xử lý các công
việc nhất định.
Trước hết khi Client ra yêu cầu hệ thống phải xác định Client đang ở vị trí nào . đây
chính là vấn đề trỏ thông tin nội dung chủ yếu của việc trỏ thông tin là biến đổi địa điểm B
thành tên của hệ thống cục bộ quản lý để hệ thống có thể nhận dang được. Tên của hệ thống
cục bộ phải duy nhất không được trùng với các hệ thống cục bộ khác và không được phép
thay đổi.
Sau khi đã trỏ đúng vào địa chỉ chứa thông tin, hệ thống phải có khả năng tiếp nhận
và ghi lại những yêu cầu.
Biên dịch các yêu cầu thành dạng lệnh để truy tìm thông tin.
Trang: 5 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
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)}
Server B
{ 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
tại ta có một số hệ quản trị CSDL như SQL Server 2005 hoặc Oracle có tính năng bảo mật
và phân quyền rất tốt do đó đảm bảo tính an toàn cho hệ thống thông tin.
Có một số hệ quản trị CSDL có tính năng Transaction ( lập phiên giao dịch) cho phép
đảm bảo tính thống nhất trong khi lưu trữ dữ liệu đảm bảo không xẩy ra treo hệ khi nhiều
Client cùng truy xuất vào một CSDL.
Trang: 6 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao

Trong thực tế việc treo hệ vẫn có thể xảy ra ví dụ : một khách hàng A mua hàng hoá
K tại đại lý B và C khách hàng này nhận được lời chấp nhận với một số lượng cụ thể, nhưng
số lượng mặt hàng này không có hoặc có mà không đủ tại đại lý B và C. trong khi ra lệnh thì
yêu cầu của khách hàng vẫn được chấp nhận vì số lượng vẫn còn ở một địa điểm khác. Vì
vậy xảy ra vấn đề khách hàng A nhận được phản hồi chấp nhận mà trên thực tế số lượng
hàng hoá tại vị trí ấy không có.
Trang: 7 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
CHƯƠNG 2
NGHIÊN CỨU PHƯƠNG PHÁP ĐẢM BẢO GẮN BÓ DỮ LIỆU TRÊN CÁC CSDL
PHÂN TÁN .
2.1 Đặt vấn đề:
Để dễ dàng mô tả các giải thuật đảm bảo gắn bó dữ liệu phân tán, 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.
Chúng ta có cải tiến giải thuật hai pha tuyến tính ( Linear 2PC ), giải thuật MAONT, ta thiết
kế giải thuật mà trong đó các thành viên có thể trao đổi với nhau. 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.
Ta có các đối tượng sau :
1. C1, C2, , Cn là các Client truy cập Web Server bằng trình duyệt Web
2. Servlets là các đối tượng xử lý yêu cầu được gửi từ các Ci, i=1,n
3. TPC-Server-App1, TPC-Server-App2, , TPC-Server-AppN là các RMI Server cài đặt
thuật toán 2PC tuyến tính (Linear Two Phase Commit - TPC)
4. TPCMonitorServer là một trình giám sát cho phép hiển thị quá trình dịch chuyển của danh
sách di chuyển [6] trong quá trình xử lý của các TPC-Server-Appi, i = 1,N
5. ConnectionPool là chương trình điều khiển các liên kết cơ sở dữ liệu dùng chung
6. Database1, Database2, , DatabaseN là các cơ sở dữ liệu quan hệ phân tán trên mạng.

2.2 Mô tả hoạt động:
Các C1, C2, , Cn là các Client truy cập vào Web Server bằng trình duyệt Web. Các yêu
cầu này đòi hỏi việc xử lý phải truy vấn đến các cơ sở dữ liệu phân tán. Do đó việc xử lý
thành công hay không phụ thuộc vào kết quả của tất cả các truy vấn này. Điều đó có nghĩa
là, xử lý sẽ thành công nếu tất cả các truy vấn đều thành công, ngược lại, xử lý sẽ không
thành công nếu có bất kỳ một truy vấn nào bị lỗi hoặc không thực hiện được. Khi nhận được
Trang: 8 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
một yêu cầu từ các Ci, i=1,n, các Servlet sẽ dựa vào yêu cầu này để thành lập nên một danh
sách các Database Server sẽ truy vấn và các câu lệnh SQL tương ứng được thực hiện tại mỗi
Server. Việc thành lập danh sách các câu lệnh SQL truy vấn tại mỗi Database Server được
dựa theo thứ tự ưu tiên SELECT, DELETE, UPDATE, INSERT. Sau khi thành lập danh
sách di chuyển, Servlet chuyển danh sách di chuyển này cho TPC-Server-App đầu tiên trong
danh sách di chuyển thông qua phương thức gọi từ xa RMI.
Mỗi TPC-Server-App cài đặt một giao diện cung cấp phương thức xử lý theo thuật
toán 2PC tuyến tính với tham số là danh sách di chuyển, chỉ mục hiện tại của danh sách và
trả về kết quả là danh sách kết quả truy vấn của chính nó và các Server đứng phía sau nó
trong danh sách di chuyển.
public interface TPCApp extends Remote
{
public ResultQueryList queryApp(MovableList movableList,int index) throws
RemoteException;
}
Nếu quá trình xử lý tại bất kỳ một TPC-Server-App nào bị lỗi thì kết quả trả về là
null. Dựa vào kết quả trả về này, các TPC-Server-App commit hoặc transaction đang quản
lý. Như vậy, khi TPC-Server-App đầu tiên nhận được danh sách di chuyển, TPC-Server-App
bắt đầu một transaction để thực hiện các câu lệnh SQL truy vấn CSDL cục bộ thông qua kết
nối CSDL được lấy từ ConnectionPool cục bộ .Tiếp theo, TPC-Server-App tăng chỉ mục
hiện tại của danh sách di chuyển lên 1 và chuyển danh sách di chuyển này đến TPC-Server-
App kế tiếp. Quá trình này được lặp lại cho đến khi kết thúc danh sách di chuyển. Tại Server

cuối cùng trong danh sách di chuyển, nếu việc truy vấn CSDL cục bộ thành công, TPC-
Server- App commit transaction và trả về kết quả là ResultQueryList khác null. Dựa vào kết
quả trả về này, Server đứng trước trong danh sách di chuyển sẽ commit hoặc rollback
transaction cục bộ và trả về kết quả cho Server liền trước. Khi Servlet nhận được kết quả là
null có nghĩa là xử lý không thành công. Ngược lại, Servlet sẽ tiếp tục xử lý kết quả nhận
được để trả về cho Client.
Trang: 9 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
2.3 Giới thiệu mô hình đối tượng phân tán RMI
RMI là một công nghệ Java cho phép một máy ảo Java này tương tác với một máy ảo
Java khác và gọi các phương thức đối tượng. Các đối tượng có thể gọi các phương thức trên
các đối tượng khác nằm ở xa một cách dễ dàng như chúng nằm cùng trên máy chủ cục bộ
(mỗi khi một số công việc khởi tạo đã được thực hiện).
Mỗi dịch vụ RMI (RMI service) được định nghĩa bởi một giao diện, nó mô tả các
phương thức đối tượng mà nó có thể được thực hiện từ xa. Giao diện này phải phải được chia
sẽ bởi tất cả những người phát triển người mà sẻ viết phần mềm cho dịch vụ đó. Nó hoạt
động như là một bản thiết kế cho các ứng dụng mà chúng sử dụng và cung cấp sự cài đặt của
dịch vụ. Nhiều cài đặt của giao diện có thể được tạo, và người phát triển không cần có ý thức
về cài đặt nào đang được sử dụng hay nó nằm ở đâu.
Bộ thư viện RMI (Remote Method Invocation) được tích hợp sẵn trong bộ phần mềm
phát triển ứng dụng JDK nhằm hỗ trợ cho việc xây dựng các ứng dụng trên môi trường tính
toán phân tán bằng ngôn ngữ Java.
Một ứng dụng RMI gồm được phân chia thành các lớp trừu tượng như hình dưới. Với
cấu trúc phân lớp, việc nâng cấp, sửa đổi tại mỗi lớp sẽ không ảnh hưởng đến các lớp khác.
Hình 3 – Các lớp của RMI
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 trinh 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
Trang: 10 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao

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.4 Cơ chế hoạt động của RMI
Các hệ thống sử dụng RMI để tương tác được chi làm hai nhóm chính : Client và
Server. Server cung cấp dịch vụ RMI, và Client triệu gọi các phương thức đối tượng của dịch
vụ này.
RMI Server phải đăng ký với dịch vụ tra cứu, để Client có thể tìm thấy chúng, hoặc
người ta có thể làm cho có thể tham chiếu đến dịch vụ theo một số cách khác. Đi kèm như là
một phần của Java platform là một ứng dụng được gọi là rmiregistry, nó chạy như một tiến
trình riêng và cho phép các ứng dụng đăng ký các dịch vụ RMI hoặc thu nhận một tham
chiếu tới một dịch vụ. Mỗi khi server đã đăng ký, thì nó sẽ đợi cho đến khi có yêu cầu RMI
đến từ các Client. Hình 3 minh họa các dịch vụ đăng ký với một registry RMI đơn. Được kết
hợp với mỗi một đăng ký dịch vụ là một tên (biểu diễn bằng một chuỗi), để cho phép các
client chọn dịch vụ thích hợp. Nếu dịch vụ chuyển từ Server này đến Server khác, client chỉ
cần tra cứu registry để xác định vị trí mới. Nếu như dịch vụ không sẵn sàng vì tắt máy, quản
trị hệ thống có thể nạp một thể hiện mới của dịch vụ trên một hệ thống khác và đăng ký nó
với RMI registry. Registry không quan tâm một dịch vụ được đăng ký từ máy chủ nào (host),
và client nhận vị trí của dịch vụ trực tiếp từ registry.
Hình 4. Nhiều dịch vụ có thể đăng ký từ cùng registry
Trang: 11 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
RMI Client sẽ gửi thông điệp RMI để gọi phương thức đối tượng từ xa. Tuy nhiên,
trước khi một triệu gọi phương thức từ xa thực hiện, Client phải có một tham chiếu đối tượng
từ xa. Điều này bình thường được thực hiện bằng cách tìm kiếm một dịch vụ trong registry.
Ứng dụng client yêu cầu một tên dịch vụ cụ thể, và nhận một URL (Universal Reference
Link) tới một tài nguyên từ xa. Nhớ rằng, URL không chỉ dành cho HTTP, hầu hết các giao
thức có thể được biểu diễn sử dụng cú pháp URL. Mẫu sau được sử dụng bởi RMI để biểu
diễn một tham chiếu đối tượng từ xa:
rmi://hostname:port/servicename
trong đó, hostname là tên của một server (hoặc địa chỉ IP), port là vị trí của dịch vụ trên máy

đó, và servicename là mô tả của dịch vụ.
Mỗi khi tham chiếu đối tượng có được, thì Client có thể tương tác với dịch vụ ở xa.
Các chi tiết mạng (Networking details) của yêu cầu hoàn toàn trong suốt đối với người phát
triển ứng dụng và làm việc với đối tượng ở xa trở nên đơn giản như làm việc với đối tượng
cục bộ. Điều này đạt được thông qua việc chia mềm dẻo hệ thống thành hai phần, stub và
skeleton.
Đối tượng stub hoạt động với vai trò của một đối tượng thừa hành (proxy), chuyển tải
các yêu cầu đối tượng tới server RMI ở xa. Nhớ rằng mọi dịch vụ RMI được định nghĩa là
một giao diện (interface), chứ không phải là sự cài đặt (implementation). Đối tượng stub cài
đặt một giao diện RMI cụ thể, cái mà Client có thể sử dụng như bất kỳ một sự cài đặt đối
tượng nào khác. Tuy nhiên, không phải là stub chính nó thực hiện công việc, mà stub sẽ gửi
đi một thông điệp tới dịch vụ RMI từ xa, chờ trả lời, và trả trả lời này về cho phương thức
gọi (Calling method). Người phát triển ứng dụng không cần quan tâm về nơi chứa tài nguyên
RMI, nó chạy trên Platform nào, hay nó sẽ thực hiện yêu cầu như thế nào. RMI client chỉ
đơn giản gọi một phương thức của đối tượng thừa hành, nó xử lý tất cả các chi tiết cài đặt.
Hình 5 minh họa cách thực hiện điều này; chỉ ra một RMI client gọi một phương thức đối
tượng trên stub thừa hành, cái mà sẽ chuyển tải yêu cầu này tới server từ xa.
Trang: 12 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
Hình 5. RMI client stub gọi RMI server skeleton
Ở phía đầu server RMI, đối tượng skeleton có trách nhiệm chờ yêu cầu RMI đến và
chuyển các yêu cầu này đến dịch vụ RMI. Tuy nhiên, đối tượng skeleton không cung cấp cài
đặt của dịch vụ. Nó chỉ hoạt động như bộ nhận các yêu cầu, và chuyển các yêu cầu này đi
tiếp. Sau khi người phát triển tạo ra một giao diện RMI, họ phải cung cấp một cài đặt cụ thể
cho giao diện. Đối tượng cài đặt này sẽ được gọi bởi đối tượng skeleton, đối tượng skeleton
gọi phương thức thích hợp và truyền kết quả về cho đối tượng stub trong RMI client. Mô
hình này giúp cho việc lập trình đơn giản hơn nhiều, vì skeleton tách biệt với sự cài đặt cụ
thể của dịch vụ.
Như vậy một ứng dụng RMI gồm các nội dung như sau:
• Xác định đối tượng ở xa. RMI cho phép xác định tham chiếu đến đối tượng ở xa bằng

cách cho phép chương trình Server đăng ký các đối tượng của nó vào rmiregistry.
• Giao tiếp với các đối tượng ở xa. Chi tiết về giao tiếp giữa các đối tượng hoàn toàn
do Java xử lý, đối với người lập trình, việc gọi các đối tượng ở xa cũng tương tự như
việc gọi các đối tượng cục bộ.
• Tải mã bytecode động. RMI cho phép tải mã bytecode của đối tượng về máy cục bộ
và truyền dữ liệu đến đối tượng ở xa.
Hình vẽ 5 dưới đây minh hoạ một ứng dụng phân tán RMI sử dụng registry để xác
định tham chiếu đến các đối tượng ở xa. Hình vẽ này cũng cho thấy RMI sử dụng Webserver
để tại mã bytecode của đối tượng ở xa khi cần thiết.
Trang: 13 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
Hình 6. Ứng dụng phân tán RMI sử dụng Registry
2.5 Xây dựng bài toán bằng Java RMI
Chúng ta xây dựng bài toán nêu trên theo mô hình đối tượng phân tán RMI. Hệ thống
gồm nhiều Server chứa các chương trình và cơ sở dữ liệu giống nhau, cơ sở dữ liệu tại các
Server phải đảm bảo gắn bó, công việc này được thực hiện tự động mỗi khi Client cập nhật
dữ liệu vào một Server nào đó. Trên mỗi server chứa hai module xử lý chính:
• Module giao tiếp với Client. Module này có tên là ClientHandle, nó có chức năng
nhận dữ liệu từ các chương trình Client để lưu vào cơ sở dữ liệu.
• Module xử lý danh sách di chuyển. Module này có tên MobListHandle, nó có chức
năng nhận dữ liệu từ module ClientHandle và cập nhật vào tất cả các server theo giải
thuật danh sách di chuyển mà chúng ta sẽ trình bày ở phần sau.
Trang: 14 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
CHƯƠNG 3
XÂY DỰNG HỆ THỐNG ĐA SERVER VÀ MINH HỌA GIAO DỊCH
3.1 : Một số khái niệm về giao dịch :
- Giao dịch là gì?
Tập hợp của hàng loạt các sự kiện mà tất cả điều phải hoàng tất đến cùng hoặc không
có bất cứ sự kiện nào được thực hiện.

Thông thường khi thiết kế các ứng dụng người ta có thể phân chia 2 loại giao dịch
như sau:
Giao dịch cơ sở dữ liệu ( Database Transaction) được thiết kế ngay trong giai đoạn
xây dựng hệ quản trị các CSDL và thủ tục này có chức năng điều khiển giao dịch.
Giao dịch các cơ sở kết nói ( Connection based transactions) cho phép xác định từ bên
ngoài CSDL, thường là chức năng của một đối tựng nào đó vd: đối tượng Connection
Trong phần này ta chỉ nghiên cứu với đối tượng Connection. JDBCConnection để tiến
hành cập nhật thông tin lên server.
Bảng 1 : Đây là các phương thức quan trọng trong quá trình thiết kết các hệ thống
CSDL bằng giao dịch với các thao tác tương ứng là bắt đầu và kết thúc, ủy thác và khôi
phục.
Stt Tên gọi Thuyết minh
1 Begin Transaction <Name> Bắt đầu pjiên 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ả 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ừ khiu nó bắty đầu thự hiện
3.2 Nội dung của danh sách giao dịch:
Giải thuật danh sách di chuyển được trình bài như sau:
1. Khởi động các modul trên file Server, gồm các module MoblistHandle,
ClientHandle, hệ thống cho phép người sử dụng cập nhật dữ liệu từ các chương
trình client.
Trang: 15 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
2. Modul 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 Modul MobListHandle.
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 đó 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 trang thái uỷ thác
(Commit Transaction) 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 ( Rollback
Transaction) .
5. Sever nhận được danh sách kết quả từ Sever 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 ủy thác ( Commit Transaction )
và gáng 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ả về kết
quả là 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 ủy thác ( Commit Transaction 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à kết quả là Null cho ClientHandle.
7. ClientHandle nhận được danh sách kết quả và xử lý trên danh sách kết quả.

Trang: 16 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
MÔ HÌNH DANH SÁCH GIAO DỊCH
Hình 7. Mô hình danh sách giao dịch
Trang: 17 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Server N
Bắt Đầu
Nhận yêu
cầu từ client
Server 1
Mở giao dịch
Truy Vấn
CSDL cục bộ

Serve
r Cuối
?
!
=Null
Chuyển sang
trạng thái ủy
thác
Chuyển sang
trạng thái
khôi phục
Kết thúc giao dịch
Trả kết quả về
cho client
Kết thúc
Đ
S
Đ
Server 2
Mở giao dịch
Truy Vấn
CSDL cục bộ
Serve
r Cuối
?
!
=Null
Đ
Chuyển sang
trạng thái

ủy thác
Chuyển sang
trạng thái
khôi phục
Chuyển sang
trạng thái
ủy thác
Chuyển sang
trạng thái
khôi phục
Server n
Mở giao dịch
Truy Vấn
CSDL cục bộ
!
=Null
Kết thúc giao dịch
Kết thúc giao dịch
Trả kết quả về
cho Server liền
trước
Trả kết quả về
cho Server liền
trước
S
Kết nối
đến server 2
Kết nối đến
Server n
Đ S Đ S

2
2
3
n-
1
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
CHƯƠNG 4
XÂY DỰNG CHƯƠNG TRÌNH MONITORING QUAN SÁT SỰ TRAO ĐỔI
(TRẠNG THÁI GẮN BÓ) TẠI CÁC SERVER.
Module Client: phần giao diện của module client là hiển thị form nhập dữ liệu.
Module client sau đó sẽ triệu gọi đối tượng từ xa trên hệ thống đa server để cập nhật dữ liệu
vào cơ sở dữ liệu.
(Hình 8. Giao diện nhập liệu trên Client )
Module Server: Module này đảm nhận toàn bộ các chức năng chính của giải thuật
danh sách di chuyển. Module này được cài trên các server khác nhau được đánh thứ tự từ 1
đến 3 . Mỗi server thực hiện chức năng lắng nghe các yêu cầu từ module client cũng như từ
các module server khác nhằm triển khai giải thuật gắn bó dữ liệu là giải thuật danh sách di
chuyển trình bày ở trên.
Ngoài ra, để giám sát quá trình cập nhật dữ liệu của hệ thống, chúng ta còn xây dựng
thêm module giám sát hệ thống gọi là module monitor.
Module monitor hiện thị form dữ liệu phân tán tại tất cả các server trong hệ thống, sau
đó hiện thị tức thời tất cả dữ liệu cập nhật vào từng server, chúng ta có thể căn cứ vào các
form dữ liệu này để đánh giá tính gắn bó dữ liệu giữa các server trong hệ thống.
Trang: 18 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
MONITORING SERVER
Hình 9. Monitoring tại các server
Trang: 19 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
4
Bài tập tiểu luận Môn: Lập trình mạng nâng cao

Một số đoạn Code chính của chương trình.
/
*************************************************************************
Class that scan for other Servers - Server 1
*************************************************************************
/
import java.util.*;
import java.sql.*;
import java.rmi.*;
public class DSDCThread extends java.rmi.server.UnicastRemoteObject implements
Runnable {
public DSDCServerInt serverList1,serverList2;
static String serverName2 = "rmi://127.0.0.1:1099/DSDC2";
static String serverName3 = "rmi://127.0.0.1:1099/DSDC3";
private int serverID = 0; // ID = 0 mean sever 3

public DSDCThread() throws java.rmi.RemoteException {super();}
public void run() {
int tmpID = -1;
while (true) {
try {
Thread.sleep(1000); // Dừng 1 giây

try {

serverList1=(DSDCServerInt)
Naming.lookup(serverName2); // Tìm đối tượng Server 2
tmpID = serverList1.connectionList(serverID);
//System.out.println(tmpID);
if (tmpID != serverID) {

System.out.println("Connected to " + serverName2);
}

//Thread.yield();

} catch(Exception e) {
System.out.println("Failed connect to : " + serverName2);
//e.printStackTrace();
}
Trang: 20 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao

try {
//Thread.sleep(1000);

serverList2=(DSDCServerInt)
Naming.lookup(serverName3);
tmpID = serverList2.connectionList(serverID);
//System.out.println(tmpID);

if (tmpID != serverID) {
System.out.println("Connected to " + serverName3);
}

// Thread.yield();

} catch(Exception e) {
System.out.println("Failed connect to : " + serverName3);
//e.printStackTrace();
}

Thread.yield();

}catch(Exception e) {
System.out.println("Error: " + e);
}
}
}
Ghi chú : Đây là lời triệu gọi vòng tương tự 3 Server còn lại là Server2, Server 3 và
server 4.
Trang: 21 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
TÀI LIỆU THAM KHẢO
1. Hệ tin học phân tán : tác giả Lê Văn Sơn Nxb Đại học quốc gia thành phố Hồ Chí
Minh.
2. Java Lập trình mạng : Nguyễn Phương Lan, Hoàng Đức Hải Nhà xuất bản Lao động
– Xã hội.
3. Các tài liệu trên Internet.
4. 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.
5. 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
Trang: 22 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường
Bài tập tiểu luận Môn: Lập trình mạng nâng cao
MỤC LỤC

Chương 1 : Viết chương trình đảm bảo gắn bó dữ liệu trên các CSDL phân tán
tại các server. 2
1.1 Kỹ thuật lập trình Server – Server
giải quyết bài toán cập nhật dữ liệu 3
1.2 Triển khai hệ thống 4

Chương 2: Nghiên cứu phương pháp đảm bảo gắn bó dữ liệu trên các CSDL
phân tán . 7
2.1 Đặt vấn đề 7
2.2 Mô tả hoạt động 7
2.3 Giới thiệu mô hình đối tượng phân tán RMI 9
2.4 Cơ chế hoạt động của RMI 10
2.5 Xây dựng bài toán bằng Java RMI 13
Chương 3: Xây dựng hệ thống đa server và minh họa giao định 14
3.1 Một số khái niệm về giao dịch 14
3.2 Nội dung của danh sách giao dịch 14
Chương 4: Xây dựng chương trình Monitoring quan sát sự trao đổi (trạng thái
gắn bó) tại các Server 17
Tài liệu tham khảo 21
Mục lục 22
Trang: 23 Nhóm thực hiện: Trương Văn Thới – Hoàng Phi Cường

×