Ví dụ: Khi truyền con trỏ cho một phương thức ở xa, trên máy đang sử dụng sẽ tồn tại nhưng trên Server khác nơi đối tượng thực thi phương thức sẽ không có bất kỳ vùng nhớ nào được cấp
Trang 1TIỂU LUẬN MÔN HỌC LẬP TRÌNH MẠNG
Gắn bó dữ liệu khi cập nhật trong các
CSDL tập trung tại các ngân hàng.
Học viên : Đỗ Trường Linh Lớp : KHMT- K24
Giáo viên hướng dẫn: PGS.TS Lê Văn Sơn
ĐẠI HỌC ĐÀ NẴNG
Trang 2NỘI DUNG
trong lập trình phân tán
cập nhật trong các CSDL tập trung tại các ngân hàng bằng ngôn ngữ Java.
Trang 3TÌM HIỂU CƠ CHẾ RMI JAVA
Java RMI (Remote Method Invoke): Là một cơ chế gọi hàm từ xa
đã được thực hiện và tích hợp trong ngôn ngữ Java, là phương pháp lập trình hướng đốI tượng.
Computer A
A2
A1
Computer C C1
C2
Computer B
B1
C3
Mô hình triệu gọi các đối tượng từ xa
Trang 4TÌM HIỂU CƠ CHẾ RMI JAVA
Gọi phương thức từ xa và các vấn đề phát sinh
Triệu gọi phương thức từ xa phức tạp hơn triệu gọi phương thức cục bộ
Ví dụ: Khi truyền con trỏ cho một phương thức ở xa, trên máy đang sử dụng sẽ tồn tại nhưng trên Server khác (nơi đối tượng thực thi phương thức) sẽ không có bất kỳ vùng nhớ nào được cấp phát cho con trỏ
Trên máy cục bộ: lời gọi hàm, các tham số truyền cho hàm thường được đặt vào ngăn xếp (stack)
Tham số truyền cho phương thức của đối tượng ở xa được đóng gói và chuyển qua mạng để đến được phương thức thực sự
Trang 5TÌM HIỂU CƠ CHẾ RMI JAVA
Vai trò các lớp trung gian: STUB và SKELETION.
Đối tượng Java trên hai máy khác nhau không gọi nhau trực tiếp mà thông qua lớp trung gian Lớp trung gian này tồn tại ở hai phía:
Máy khách (Client –
nơi gọi phương thức
của đối tượng ở xa); lớp
trung gian này gọi là lớp
móc (stub).
Máy chủ (Server – nơi
đối tượng thực sự được
cài đặt để thực thi mã
lệnh của phương thức);
lớp trung gian này gọi là
lớp nối (skeletion).
Computer A A2
Computer B B1
C1
C1 _st ub B1_stub
C1 _sk el
B1_skel
Gọi phương thức của các đối tượng thông qua lớp trung gian
Trang 6Mô hình Client/ Server- Khái niệm Socket
• Các chương trình ở máy khách (client) sẽ tạo ra kết nối (connection) với một máy chủ ở xa (server) sau đó gửi các yêu cầu đến máy chủ, các chương trình dịch vụ trên máy chủ sẽ xử lý các yêu cầu này và gửi kết quả ngược về cho máy khách
• Trước khi yêu cầu một dịch vụ trên máy chủ, máy khách (client) phải có khả năng kết nối được với máy chủ (server) Quá trình kết nối này được Java thực hiện thông qua một cơ chế trừu tượng hóa gọi là Socket
• Nếu kết nối socket thành công thì máy khách và máy chủ có thể trao đổi dữ liệu với nhau, thực hiện các yêu cầu về dịch vụ trên máy chủ
Trang 7Server Client
int port = 8000
DataInputStream in
DataOutputStream out
ServerSocker server
Socket socket
server = new ServerSocker(port);
socket = server.accept();
in = new DataInputStream
(socket.getInputStream());
out = new DataOutputStream
(socket.getOutputStream());
System.out.println
(in.readDouble());
out.writeDouble(aNumber);
int port = 8000
String host = “localhost”
DataInputStream in DataOutputStream out Socket socket
socket = new Socket(host, port());
in = new DataInputStream (socket.getInputStream());
out = new DataOutputStream (socket.getOutputStream());
out.writeDouble(aNumber);
System.out.println(in.readDouble());
Lắng nghe / Yêu cầu kết nối
Các luồng I/O
Sự trao đổi giữa Server và Client bằng socket trong java
Các luồng trao đổi
Trang 8• Xây dựng một bộ các Acount tài khoản
• Xây dựng các Client yêu cầu tài nguyên (Dịch vụ)
• Quản lý các Acount tài khoản bằng Server
Bài toán:
ĐẢM BẢO GẮN BÓ DỮ LIỆU KHI CẬP NHẬT TRONG CÁC CSDL TẬP TRUNG TẠI CÁC NGÂN HÀNG BẰNG NGÔN NGỮ JAVA
Trang 9MÔ TẢ YÊU CẦU CỦA BÀI TOÁN
Bài toán xây dựng một bộ acount tài khoản (Bộ cung cấp tài nguyên - Server)
Bộ cung cấp tài nguyên căn cứ vào tài nguyên hiện có của mạng (Khả năng đáp ứng yêu cầu dịch vụ của Client)
mà chấp nhận phục vụ hay từ chối yêu cầu cung cấp dịch
vụ từ Client
Yêu cầu dịch vụ từ Client ở đây được mô tả bằng cách Client gởi số tiền gửi hoặc rút tiền đến Server, yêu cầu Server tính toán và gởi trả tiền cho acount
Trang 10MÔ TẢ YÊU CẦU CỦA BÀI TOÁN
Trong quá trình vận hành hệ thống, Server phải biết được tình trạng hiện tại của hệ thống như: Số Client yêu cầu cung cấp dịch vụ hiện tại, Số thông điệp (Message) của các Client đã gởi đến cho Server, Client nào đã kết thúc yêu cầu kết nối đến Server, Tình trạng của Server (Có khả năng đáp ứng hay từ chối yêu cầu của Client (quá tải)…
Hệ thống chỉ từ chối yêu cầu của các Client khi quá tải, các yêu cầu từ các Client khác vẫn được phục vụ bình thường
Trang 11Kết nối qua socket
Server
socket lắng nghe trên cổng
Một socket cho một client
Chương trình được tổ chức thành 2 module, sử dụng cơ chế đa luồng và socket trong java để thiết lập kết nối từ Client đến Server để trao đổi thông tin:
Trang 12KẾT LUẬN
Qua thời gian tìm hiểu về LẬP TRÌNH PHÂN TÁN đề tài đã đạt được các kết quả sau:
Tìm hiểu được bài toán
Tìm hiểu lập trình phân tán trong JAVA (RMI, SOCKET)
Trang 13XIN CHÂN THÀNH CẢM ƠN!