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, chèn một mẫu tin record mới lên cơ sở dữ liệu đã có trong mô hình Server – Server
Trang 1
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
TIỂU LUẬN KHOÁ HỌC
MÔN HỌC
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
Giáo viên hướng dẫn: PGS.Ts Lê Văn Sơn Học viên thực hiện: Phùng Hữu Đoàn
Trang 2
GIỚI THIỆU TIỂU LUẬN
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
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
Trang 3Phần Mở Đầu
Đối với các công ty lớn cần đáp ứng những nhu cầu sau:
• Có nhiều chi nhánh ở các nơi trên một quốc gia hay trên khắp thế giới như Pepsi, Coca Cola
• Có nhiều Server ở khắp nơi
• Làm cách nào để dữ liệu trên các Server là như nhau, luôn găn
bó dữ liệu với nhau trong việc truy xuất dữ liệu
Trang 4Mô hình tổng quát về hệ thống đa
Server
Trang 5Lợi ích của việc xử lý đa server
Cho phép khai thác tối đa khả năng tính toán của từng server của từng vùng
Cho phép khai thác tối đa nguồn dữ liệu của từng Server đang có thông qua giao thức gọi từ xa
Giao thức triệu gọi từ xa từ các tác tử (agent) tạo ra trên mạng là giải pháp chính cho vấn đề xử lý đa Server với môi hình xử lý thông tin được trình bày như sau:
Trang 6Cơ chế gọi hàm từ xa của các đối tượng RMI
Đối tượng cài đặt phương thức và gọi hàm
Naming.bind() đăng ký bộ quản lý Rmiregistry trên Server.
Đối tượng trên Client muốn gọi phương thức trên máy chủ Naming.lookup() tham chiếu đối tượng ở xa theo tên.
Rmiregistry trả về tham chiếu đến đối tượng ở xa
Trang 7Cơ chế gọi hàm từ xa của các đối
tượng RMI (tt)
Dựa vào giao tiếp Interface đối tượng trên máy khách sẽ gọi được phương thức trên máy chủ.
Khi phương thức được gọi lời gọi sẽ chuyển về lớp trung gian _Stup Xử lý chuyển tham số đến lớp _Skel trên
Server
Lớp _Skel yêu cầu đối tượng thực thi phương thức chuyển kết quả về máy khách
Trang 8BÀ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, chèn một mẫu tin (record) mới lên cơ sở dữ liệu đã có trong mô hình Server – Server
Mỗi server có nhiều Client tương tác giữa Client và Sever chèn một record thì CSDL có trên tất cả các Server còn lại
Đề 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 qua mạng,…
Trang 9Danh sách 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ả đều phải hoàn tất đến cùng hoặc không có bất cứ sự kiện nào được thực hiện
• 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.
• Ta 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
Trang 10Các phiên giao dịch
Danh sách giao dịch
Trang 11Danh sách giao dịch
Giải thuật danh sách di chuyển được trình bài như sau:
• Khởi động các Modul trên Server: MoblistHandle,
ClientHandle cho phép cập nhật dữ liệu từ các Client
• ClientHandle nhận dữ liệu từ Client và thành lập danh sách di chuyển, rồi chuyển danh sách cho MobListHandle
• 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 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
Trang 124 Danh sách giao dịch
Nếu là Server cuối cùng, thực hiện câu lệnh trên CSDL thành
công chuyển sang trạng 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)
Sever nhận 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á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ả về kết quả là Null cho Server liền trước
Trang 134 Danh sách giao dịch
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.
ClientHandle nhận được danh sách kết quả và xử lý trên danh sách kết quả
Trang 14Bắt Đầu
Nhận yêu cầu từ client Server 1
Mở giao dịch
Truy Vấn CSDL cục
bộ
Server 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
Đ
Server 2
Mở giao dịch
Truy Vấn CSDL cục
bộ
Server 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
2
2
3
N
4 Danh sách di chuyển
Trang 15DEMO CHƯƠNG TRÌNH
Trang 16XIN CHÂN THÀNH CẢM ƠN