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 (có kèm theo code) Đố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.
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 ĐỀ 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 ĐÀ NẴNG, 10/2010 LỜI MỞ ĐẦU Trang: Nhóm thực hiện: Trương Văn Thới – Hồng Phi Cường Bài tập tiểu luận Mơn: Lập trình mạng nâng cao Đối với cơng ty lớn có chi nhánh đặt địa điểm khác vùng lãnh thổ khác nhau, việc lưu trữ liệu máy tính khó khăn vượt q điều kiện cơng ty Vì địi hỏi cần có cách lưu trữ liệu nhiều nơi khác phải thống Nhờ hệ thống mạng cục internet phát triển vượt bậc mà ta phát triển hệ thống quản lý cơng ty một mơi trường khác hồn tồn so với mơi trường cũ chạy cục máy tính cục mơi trường mạng phân tán Các ứng dụng chạy môi trường mạng phân tán ngày nhiều trở nên thông dụng bắt đầu có mặt Việt Nam Với mơi trường mạng phân tán có nhiều Server đặt nơi khác người ta gọi môi trường đa Server Trong môi trường đa Server việc truy cập từ xa truy xuất đồng thời đảm bào tồn vẹn liệu liệu lưu trữ dự phịng nhiều Server khác Đây hệ thống đa Server phức tạp hệ thống đảm bảo gắn bó liệu Server đồng thời không làm phức tạp việc truy xuất liệu Với thơng tin nhóm chúng em trình bày chủ đề: Viết chương trình đảm bảo gắn bó liệu CSDL phân tán Server Nghiên cứu phương pháp đảm bảo gắn bó liệu CSDL phân tán Xây dựng hệ thống đa Server với n Server (n>4) Xây dựng chương trình Monitoring quan sát trao đổi (trạng thái gắn bó) Server Với chủ đề nhóm chúng em dùng cơng cụ ngơn ngữ lập trình Java hãng phần mền Sun Micro System đồng thời sử dụng thư viện hỗ trợ lập trình mạng phân tán RMI Về thuật tốn nhóm nghiên cứu thuật toán danh sách di chuyển Đối với tiểu luận nhóm xây dựng hệ thống gồm Server công cụ module Monitor nhằm giám sát cập nhật liệu Server để đánh giá tính gắn bó liệu server với Trang: Nhóm thực hiện: Trương Văn Thới – Hồ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 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ó tầng ứng dụng sau: o Tầng người sử dụng: nơi người sử dụng thao tác chương trình thơng qua giao diện chương trình Với thuận tiện Internet ngày nhiều chuyên gia phần mềm phát triển ứng dụng mơi trường Web o Tầng trung gian: Đây nơi người lập trình pháp triển ứng dụng xử lý u cầu từ phía người dùng, xử lý kết nối với sở liệu tầng sở liệu Trong tầng yêu cầu trực tiếp giải chuyển đến đối tác xử lý khác Web Server, File Server để xử lý o Tầng CSDL ( sở liệu) nơi Server chứa sở liệu chuyên dùng SQL Server, Oracle để quản lý CSDL, nhằm xử lý, truy cập truy xuất liệu dược xử lý từ tầng trung gian đưa tới Tầng Users Tầng Trung Gian Tầng CSDL Hình : Mơ hình phân tầng Trang: Nhóm thực hiện: Trương Văn Thới – Hồng Phi Cường 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 tốn cập nhật liệu Ta có mơ hình đa server sau: - Bài tốn đảm bảo gắn bó liệu : có sở liệu đặt Server vị trí khác muốn chèn record lên sở liệu có mơ hình Server – Server ( Server ngang hàng) Ta có Server có nhiều Client tương tác với Client server có nhu cầu chèn record CSDL Server khác nhận record với độ trễ cho phép Trang: 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 ngày có nhiều ứng dụng mơi trường mạng phân tán đáp ứng nhiều tốn nhiều giải cho công ty lớn Đề cử 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… công nghệ tương đối thách thức nhân viên lập trình muốn triển khai ứng dụng lớn môi trường mạng phân tán 1.2 Triển khai hệ thống Với toán sở liệu bán hàng từ xa hệ thống mạng phân tán có đặt điểm sau: a Hệ thống gồm nhiều server ( Server ) bố trí nhiều nơi khác server chứa CSDL giống 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ó liệu tránh trình trạng hàng hoá cung cấp hết cho khách hàng A đại lý A bán cho khách hàng B đại lý Đây hệ thống thông tin phức tạp gồm nhiều ứng dụng thiết kế để giải toán cách tổng thể tồn diện Ở với mục đích tìm hiểu nghiên cứu ta thu nhỏ toán sở liệu gồm bảng khách hàng Sanpham(Masp,Tensp, Soluong,Dongia) Người sử dụng muốn cung cấp thông tin yêu cầu qua câu truy vấn Server tiếp nhận câu truy vấn xử lý câu truy vấn chuyển lại cho người yêu cầu Có khách hàng địa điểm A muốn biết thông tin giá cả, số lượng mặt hàng có đại lý B địa điểm B xa để làm việc hệ thống phải xử lý công việc định Trước hết Client yêu cầu hệ thống phải xác định Client vị trí vấn đề trỏ thông tin nội dung chủ yếu việc trỏ thông tin biến đổi địa điểm B thành tên hệ thống cục quản lý để hệ thống nhận dang Tên hệ thống cục phải không trùng với hệ thống cục khác không phép thay đổi Sau trỏ vào địa chứa thông tin, hệ thống phải có khả tiếp nhận ghi lại yêu cầu Biên dịch yêu cầu thành dạng lệnh để truy tìm thơng tin Trang: Nhóm thực hiện: Trương Văn Thới – Hồ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 cơng việc cục mang tính chất cục hệ thống cục kiểm tra quyền truy cập thông tin, thống kê số lượng khách hàng lập hố đơn bán hàng,… Nếu tìm thơng tin u cầu sau gởi thơng tin đến hệ thống có u cầu Đây 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 gọi 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ài đặt Client máy Server Hai giải pháp khác khối lượng thông tin trao đổi client với Giả sử ta theo tác môi trường Web Vậy chương trình triển khai Server Client cần trình duyệt Web mà thơi (các trình duyệt Web Internet Explorer, Netcape Navigator) Web Server xử lý yêu cầu từ Client gởi lên sau xử lý xong trả kết Client Như với mơ hình chương chình cài đặt tồn Server Với mơ hình ta thấy độ tin cậy thông tin Thông tin thời điểm Server nhận thông điệp đọc nó, khơng khi client nhận Điều liên quan đến việc làm tươi liệu Vì ta phải có giải pháp cho việc truy cập đồng thời vào liệu dùng chung Hiện ta có số hệ quản trị CSDL SQL Server 2005 Oracle có tính bảo mật phân quyền tốt đảm bảo tính an tồn cho hệ thống thơng tin Có số hệ quản trị CSDL có tính Transaction ( lập phiên giao dịch) cho phép đảm bảo tính thống lưu trữ liệu đảm bảo không xẩy treo hệ nhiều Client truy xuất vào CSDL Trang: Nhóm thực hiện: Trương Văn Thới – Hồ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ệ xảy ví dụ : khách hàng A mua hàng hoá K đại lý B C khách hàng nhận lời chấp nhận với số lượng cụ thể, số lượng mặt hàng khơng có có mà khơng đủ đại lý B C lệnh yêu cầu khách hàng chấp nhận số lượng cịn địa điểm khác Vì xảy vấn đề khách hàng A nhận phản hồi chấp nhận mà thực tế số lượng hàng hố vị trí khơng có Trang: 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 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ả giải thuật đảm bảo gắn bó liệu phân tán, giả thiết rằng, vị trí nguồn giao dịch tiến trình thực thao tác nó, tiến trình gọi điều phối viên (Coordinator) Điều phối viên trao đổi với thành viên (Participant) vị trí có tham gia vào việc thực thao tác 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à thành viên trao đổi với Có thứ tự vị trí hệ thống dành cho việc giao tiếp Chúng ta giả thiết thứ tự vị trí có tham gia vào việc thực giao dịch 1, 2,…, N với điều phối viên vị trí thứ tự Ta có đối tượng sau : C1, C2, , Cn Client truy cập Web Server trình duyệt Web Servlets đối tượng xử lý yêu cầu gửi từ Ci, i=1,n TPC-Server-App1, TPC-Server-App2, , TPC-Server-AppN RMI Server cài đặt thuật toán 2PC tuyến tính (Linear Two Phase Commit - TPC) TPCMonitorServer trình giám sát cho phép hiển thị trình dịch chuyển danh sách di chuyển [6] trình xử lý TPC-Server-Appi, i = 1,N ConnectionPool chương trình điều khiển liên kết sở liệu dùng chung Database1, Database2, , DatabaseN sở liệu quan hệ phân tán mạng 2.2 Mô tả hoạt động: Các C1, C2, , Cn Client truy cập vào Web Server trình duyệt Web Các u cầu địi hỏi việc xử lý phải truy vấn đến sở 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 tất truy vấn Điều có nghĩa là, xử lý thành công tất truy vấn thành công, ngược lại, xử lý không thành cơng có truy vấn bị lỗi không thực Khi nhận Trang: Nhóm thực hiện: Trương Văn Thới – Hồng Phi Cường Bài tập tiểu luận Mơn: Lập trình mạng nâng cao yêu cầu từ Ci, i=1,n, Servlet dựa vào yêu cầu để thành lập nên danh sách Database Server truy vấn câu lệnh SQL tương ứng thực Server Việc thành lập danh sách câu lệnh SQL truy vấn Database Server dựa theo thứ tự ưu tiên SELECT, DELETE, UPDATE, INSERT Sau thành lập danh sách di chuyển, Servlet chuyển danh sách di chuyển cho TPC-Server-App 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 giao diện cung cấp phương thức xử lý theo thuật tốn 2PC tuyến tính với tham số danh sách di chuyển, mục danh sách trả kết danh sách kết truy vấn Server đứng phía sau danh sách di chuyển public interface TPCApp extends Remote { public ResultQueryList queryApp(MovableList movableList,int index) throws RemoteException; } Nếu trình xử lý TPC-Server-App bị lỗi kết trả null Dựa vào kết trả này, TPC-Server-App commit transaction quản lý Như vậy, TPC-Server-App nhận danh sách di chuyển, TPC-Server-App bắt đầu transaction để thực câu lệnh SQL truy vấn CSDL cục thông qua kết nối CSDL lấy từ ConnectionPool cục Tiếp theo, TPC-Server-App tăng mục danh sách di chuyển lên chuyển danh sách di chuyển đến TPC-ServerApp Quá trình lặp lại kết thúc danh sách di chuyển Tại Server cuối danh sách di chuyển, việc truy vấn CSDL cục thành công, TPCServer- App commit transaction trả kết ResultQueryList khác null Dựa vào kết trả này, Server đứng trước danh sách di chuyển commit rollback transaction cục trả kết cho Server liền trước Khi Servlet nhận kết null có nghĩa xử lý khơng thành cơng Ngược lại, Servlet tiếp tục xử lý kết nhận để trả cho Client Trang: 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 công nghệ Java cho phép máy ảo Java tương tác với máy ảo Java khác gọi phương thức đối tượng Các đối tượng gọi phương thức đối tượng khác nằm xa cách dễ dàng chúng nằm máy chủ cục (mỗi số công việc khởi tạo thực hiện) Mỗi dịch vụ RMI (RMI service) định nghĩa giao diện, mơ tả phương thức đối tượng mà thực từ xa Giao diện phải phải chia tất người phát triển người mà sẻ viết phần mềm cho dịch vụ Nó hoạt động thiết kế cho ứng dụng mà chúng sử dụng cung cấp cài đặt dịch vụ Nhiều cài đặt giao diện tạo, người phát triển khơng cần có ý thức cài đặt sử dụng hay nằm đâu Bộ thư viện RMI (Remote Method Invocation) tích hợp sẵn phần mềm phát triển ứng dụng JDK nhằm hỗ trợ cho việc xây dựng ứng dụng mơi trường tính tốn phân tán ngôn ngữ Java Một ứng dụng RMI gồm phân chia thành lớp trừu tượng hình Với cấu trúc phân lớp, việc nâng cấp, sửa đổi lớp không ảnh hưởng đến lớp khác Hình – Các lớp RMI Các ứng dụng RMI chia thành hai chương trình độc lập là: chương trình Client chương trình Server Chương trinh Server tạo đối tượng từ xa cung cấp tham chiếu đến chúng chờ chương trình Client triệu gọi đối tượng Chương trình Trang: 10 Nhóm thực hiện: Trương Văn Thới – Hồ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 đối tượng xa (đối tượng chương trình Server tạo ra) triệu gọi chúng đối tượng cục 2.4 Cơ chế hoạt động RMI Các hệ thống sử dụng RMI để tương tác chi làm hai nhóm : Client Server Server cung cấp dịch vụ RMI, Client triệu gọi phương thức đối tượng dịch vụ RMI Server phải đăng ký với dịch vụ tra cứu, để Client tìm thấy chúng, người ta làm cho tham chiếu đến dịch vụ theo số cách khác Đi kèm phần Java platform ứng dụng gọi rmiregistry, chạy tiến trình riêng cho phép ứng dụng đăng ký dịch vụ RMI thu nhận tham chiếu tới dịch vụ Mỗi server đăng ký, đợi có yêu cầu RMI đến từ Client Hình minh họa dịch vụ đăng ký với registry RMI đơn Được kết hợp với đăng ký dịch vụ tên (biểu diễn chuỗi), phép client chọn dịch vụ thích hợp Nếu dịch vụ chuyển từ Server đến Server khác, client cần tra cứu registry để xác định vị trí Nếu dịch vụ khơng sẵn sàng tắt máy, quản trị hệ thống nạp thể dịch vụ hệ thống khác đăng ký với RMI registry Registry khơng quan tâm dịch vụ đăng ký từ máy chủ (host), client nhận vị trí dịch vụ trực tiếp từ registry Hình Nhiều dịch vụ đăng ký từ 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 gửi thông điệp RMI để gọi phương thức đối tượng từ xa Tuy nhiên, trước triệu gọi phương thức từ xa thực hiện, Client phải có tham chiếu đối tượng từ xa Điều bình thường thực cách tìm kiếm dịch vụ registry Ứng dụng client yêu cầu tên dịch vụ cụ thể, nhận URL (Universal Reference Link) tới tài nguyên từ xa Nhớ rằng, URL không dành cho HTTP, hầu hết giao thức biểu diễn sử dụng cú pháp URL Mẫu sau sử dụng RMI để biểu diễn tham chiếu đối tượng từ xa: rmi://hostname:port/servicename đó, hostname tên server (hoặc địa IP), port vị trí dịch vụ máy đó, servicename mô tả dịch vụ Mỗi tham chiếu đối tượng có được, Client tương tác với dịch vụ xa Các chi tiết mạng (Networking details) yêu cầu hoàn toàn suốt người phát triển ứng dụng làm việc với đối tượng xa trở nên đơn giản làm việc với đối tượng cục Điều đạt thông qua việc chia mềm dẻo hệ thống thành hai phần, stub skeleton Đối tượng stub hoạt động với vai trò đối tượng thừa hành (proxy), chuyển tải yêu cầu đối tượng tới server RMI xa Nhớ dịch vụ RMI định nghĩa giao diện (interface), cài đặt (implementation) Đối tượng stub cài đặt giao diện RMI cụ thể, mà Client sử dụng cài đặt đối tượng khác Tuy nhiên, khơng phải stub thực công việc, mà stub gửi thông điệp tới dịch vụ RMI từ xa, chờ trả lời, trả trả lời 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 nơi chứa tài nguyên RMI, chạy Platform nào, hay thực yêu cầu RMI client đơn giản gọi phương thức đối tượng thừa hành, xử lý tất chi tiết cài đặt Hình minh họa cách thực điều này; RMI client gọi phương thức đối tượng stub thừa hành, mà chuyển tải yêu cầu tới server từ xa Trang: 12 Nhóm thực hiện: Trương Văn Thới – Hồ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 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 chuyển yêu cầu đến dịch vụ RMI Tuy nhiên, đối tượng skeleton không cung cấp cài đặt dịch vụ Nó hoạt động nhận yêu cầu, chuyển yêu cầu tiếp Sau người phát triển tạo giao diện RMI, họ phải cung cấp cài đặt cụ thể cho giao diện Đối tượng cài đặt gọi đối tượng skeleton, đối tượng skeleton gọi phương thức thích hợp truyền kết cho đối tượng stub RMI client Mơ hình giúp cho việc lập trình đơn giản nhiều, skeleton tách biệt với cài đặt cụ thể dịch vụ Như ứng dụng RMI gồm nội dung sau: • Xác định đối tượng xa RMI cho phép xác định tham chiếu đến đối tượng xa cách cho phép chương trình Server đăng ký đối tượng vào rmiregistry • Giao tiếp với đối tượng xa Chi tiết giao tiếp đối tượng hoàn toàn Java xử lý, người lập trình, việc gọi đối tượng xa tương tự việc gọi đối tượng cục • Tải mã bytecode động RMI cho phép tải mã bytecode đối tượng máy cục truyền liệu đến đối tượng xa Hình vẽ minh hoạ ứng dụng phân tán RMI sử dụng registry để xác định tham chiếu đến đối tượng xa Hình vẽ cho thấy RMI sử dụng Webserver để mã bytecode đối tượng xa cần thiết Trang: 13 Nhóm thực hiện: Trương Văn Thới – Hồ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 Ứng dụng phân tán RMI sử dụng Registry 2.5 Xây dựng toán Java RMI Chúng ta xây dựng toán nêu theo mơ hình đối tượng phân tán RMI Hệ thống gồm nhiều Server chứa chương trình sở liệu giống nhau, sở liệu Server phải đảm bảo gắn bó, cơng việc thực tự động Client cập nhật liệu vào Server Trên server chứa hai module xử lý chính: • Module giao tiếp với Client Module có tên ClientHandle, có chức nhận liệu từ chương trình Client để lưu vào sở liệu • Module xử lý danh sách di chuyển Module có tên MobListHandle, có chức nhận liệu từ module ClientHandle cập nhật vào tất server theo giải thuật danh sách di chuyển mà trình bày phần sau Trang: 14 Nhóm thực hiện: Trương Văn Thới – Hồ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 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 giao dịch : - Giao dịch gì? Tập hợp hàng loạt kiện mà tất điều phải hoàng tất đến khơng có kiện thực Thông thường thiết kế ứng dụng người ta phân chia loại giao dịch sau: Giao dịch sở liệu ( Database Transaction) thiết kế giai đoạn xây dựng hệ quản trị CSDL thủ tục có chức điều khiển giao dịch Giao dịch sở kết nói ( Connection based transactions) cho phép xác định từ bên CSDL, thường chức đối tựng vd: đối tượng Connection Trong phần 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 Bảng : Đây phương thức quan trọng trình thiết kết hệ thống CSDL giao dịch với thao tác tương ứng bắt đầu kết thúc, ủy thác khôi phục Stt Tên gọi Thuyết minh Begin Transaction End Commit Rollback Bắt đầu pjiên giao dịch có tên < name > liên kết Ranh giới kết thúc giao dịch Khẳng định tất thay đổi kể từ thời điểm bắt đầu giao dịch Khôi phục lại toàn thay đổi giao dịch kể từ khiu bắty đầu thự 3.2 Nội dung danh sách giao dịch: Giải thuật danh sách di chuyển trình sau: Khởi động modul file Server, gồm module MoblistHandle, ClientHandle, hệ thống cho phép người sử dụng cập nhật liệu từ 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 Modul ClientHandle nhận liệu từ client thành lập danh sách di chuyển, sau chuyển danh sách cho Modul MobListHandle MoblistHandle mở giao dịch , thực truy vấn liệu sở liệu cục Sau kết thúc truy vấn, MobListHandle gởi danh sách di chuyển đến Server hệ thống đa Server Nếu Server cuối danh sách di chuyển, việc thực thi câu lệnh truy vấn CSDL cục thành công chuyển sang trang thái uỷ thác (Commit Transaction) trả danh sách kết khác Null cho Server liền trước Ngược lại trả Null chuyễn sang trạng thái khôi phục ( Rollback Transaction) Sever nhận danh sách kết từ Sever sau danh sách di chuyển – kết khác Null chuyển sang trạng thái ủy thác ( Commit Transaction ) gáng kết truy vấn cục vào danh sách kết trả Server liền trước Ngược lại chuyển sang trạng thái khơi phục ( Rollback Transaction) trả kết Null cho Server liền trước Khi Server nhận danh sách kết danh sách kết khác Null chuyển sang trạng thái ủy thác ( Commit Transaction trả danh sách kết cho ClientHandle> ngược lại chuyển sang trạng thái khôi phục ( Rollback Transaction ) kết Null cho ClientHandle ClientHandle nhận danh sách kết xử lý danh sách kết 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 Bắt Đầu Nhận yêu cầu từ client Mở giao dịch Truy Vấn CSDL cục Mở giao dịch Truy Vấn CSDL cục Mở giao dịch Truy Vấn CSDL cục Serve r Cuối S Kết nối Serve r Cuối đến server Đ Đ S ! =Null Đ S ! =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 Kết nối đến Server n ? ? Đ Server n Server Server Đ Chuyển sang trạng thái khôi phục Kết thúc giao dịch Trả kết cho client Trả kết cho Server liền trước Chuyển sang trạng thái ủy thác Kết thúc giao dịch S ! =Null Chuyển sang trạng thái khôi phục Kết thúc giao dịch n1 Trả kết cho Server liền trước Kết thúc Hình Mơ hình danh sách giao dịch Trang: 17 Server N Nhóm thực hiện: Trương Văn Thới – Hồ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 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 module client hiển thị form nhập liệu Module client sau triệu gọi đối tượng từ xa hệ thống đa server để cập nhật liệu vào sở liệu (Hình Giao diện nhập liệu Client ) Module Server: Module đảm nhận toàn chức giải thuật danh sách di chuyển Module cài server khác đánh thứ tự từ đến Mỗi server thực chức lắng nghe yêu cầu từ module client từ module server khác nhằm triển khai giải thuật gắn bó liệu giải thuật danh sách di chuyển trình bày Ngồi ra, để giám sát trình cập nhật liệu hệ thống, xây dựng thêm module giám sát hệ thống gọi module monitor Module monitor thị form liệu phân tán tất server hệ thống, sau thị tức thời tất liệu cập nhật vào server, vào form liệu để đánh giá tính gắn bó liệu server 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 Monitoring server Trang: 19 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 số đoạn Code chương trình / ************************************************************************* Class that scan for other Servers - Server ************************************************************************* / 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 = mean sever public DSDCThread() throws java.rmi.RemoteException {super();} public void run() { int tmpID = -1; while (true) { try { Thread.sleep(1000); // Dừng giây try { serverList1=(DSDCServerInt) Naming.lookup(serverName2); // Tìm đối tượng Server 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 – Hồ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 : Đây lời triệu gọi vòng tương tự Server lại Server2, Server server Trang: 21 Nhóm thực hiện: Trương Văn Thới – Hồ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 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 Java Lập trình mạng : Nguyễn Phương Lan, Hồng Đức Hải Nhà xuất Lao động – Xã hội Các tài liệu Internet 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 khai thác luật kết hợp sở liệu phân tán 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ó liệu cho hệ thống thông tin đào tạo mạng Internet/Intranet Trang: 22 Nhóm thực hiện: Trương Văn Thới – Hồ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 : Viết chương trình đảm bảo gắn bó liệu CSDL phân tán server 1.1 Kỹ thuật lập trình Server – Server giải tốn cập nhật liệu 1.2 Triển khai hệ thống Chương 2: Nghiên cứu phương pháp đảm bảo gắn bó liệu CSDL phân tán 2.1 Đặt vấn đề 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 2.4 Cơ chế hoạt động RMI .10 2.5 Xây dựng toán Java RMI .13 Chương 3: Xây dựng hệ thống đa server minh họa giao định 14 3.1 Một số khái niệm giao dịch .14 3.2 Nội dung danh sách giao dịch 14 Chương 4: Xây dựng chương trình Monitoring quan sát trao đổi (trạng thái gắn bó) 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 ... luận Mơn: Lập trình mạng nâng cao CHƯƠNG 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ả giải thuật đảm bảo gắn bó liệu phân tán, giả thiết... tiểu luận Mơn: Lập trình mạng nâng cao MỤC LỤC Chương : Viết chương trình đảm bảo gắn bó liệu CSDL phân tán server 1.1 Kỹ thuật lập trình Server – Server giải toán cập nhật liệu 1.2 Triển... Bài tập tiểu luận Mơn: Lập trình mạng nâng cao CHƯƠNG 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ó tầng ứng dụng sau: o