YÊU CẦU ĐỀ TÀI Ta cài đặt trên N trạm một “ảnh” của công tơ sự kiện phân tán, được tăng một số gia truyền cho mỗi lần sự kiện đến.. KIẾN TRÚC HỆ PHÂN TÁNApplications, Services Middlew
Trang 1ĐỀ TÀI 38:
BÀI TOÁN ĐỒNG BỘ HÓA
VÀ GẮN BÓ DỮ LIỆU
GVHD: PGS.TS LÊ VĂN SƠN HVTH: LÊ QUANG VŨ
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA
TIỂU LUẬN
MÔN: LẬP TRÌNH MẠNG
ĐÀ NẴNG, 05/2012
Trang 2YÊU CẦU ĐỀ TÀI
Ta cài đặt trên N trạm một “ảnh” của công tơ sự kiện phân tán,
được tăng một số gia truyền cho mỗi lần sự kiện đến Bạn hãy cho biết các vấn đề gì sẽ đặt ra khi ta sử dụng phương pháp này
Đây là bài toán đồng bộ hóa và gắn bó dữ liệu
Hãy viết chương trình cho biết giá trị “ảnh” của các công tơ.
Trang 3NộI DUNG TRÌNH BÀY
Phần lý thuyết
Demo chương trình
Kết luận
Trang 4VÍ Dụ Về Hệ PHÂN TÁN - MộT
INTRANET TIÊU BIểU
Trang 5KIẾN TRÚC HỆ PHÂN TÁN
Applications, Services
Middleware
Operating System Computer and Network hardware
Platform
Middleware: Cung cấp mô hình lập trình cho các ứng dụng, như RMI, CORBA, DCOM,…
Các lớp dịch vụ phần mềm và phần cứng.
Trang 6KIẾN TRÚC HỆ PHÂN TÁN(tt)
Client
Client
Server
Server Invocation
Invocation
Result Result
Mô hình Client/Server.
Trang 7 Trong hệ phân tán, chương trình cung cấp tài nguyên nằm trên một trạm và các tiến trình đề nghị lại nằm trên trạm khác; các yêu cầu và khuyến nghị giải phóng được truyền cho chương trình cung cấp thông qua hình thức thông điệp chuyển đi theo các kênh của hệ thống viễn thông
Vì vậy, nhu cầu sắp xếp các yêu cầu này theo một thứ tự nhất định nào đó luôn luôn được đặt ra
Sự họat động gắn bó với nhau giữa các chương trình cung cấp là rất cần thiết để đảm bảo cho họat động cung cấp được hoàn toàn chính xác
Vấn đề cung cấp tài nguyên trong hệ phân tán
Trang 8TÌM HIểU Về NGÔN NGữ LậP TRÌNH JAVA
Java được thiết kế cho mục đích đa nền, mã của chương trình Java (tập tin java) sau khi biên dịch là một file nhị phân gọi là byte-code (tập tin class) và được triệu gọi thực thi trong máy ảo Java (JVM – Java
Virtual Machine) Việc dịch chương trình Java sang bytecode có thể làm cho chương trình chạy được trên nhiều môi trường hơn vì chỉ cần có mỗi trình thông dịch JVM cho mỗi môi trường
Hình 3.1 Sơ đồ hoạt động của các trình Java
Trình soạn thảo Các tập tin nguồn Java Các tập tin .class chương trìnhKết quả
Trình biên dịch
Trình thông dịch
Tập tin nguồn Java là một tập tin văn bản thuần (text file), tuân theo hệ thống cú pháp chặt chẽ của Java, gồm các chú thích, khai báo lớp, biến, phương thức
Java là một ngôn ngữ thiên về lập trình mạng và Internet, tích hợp khả năng
đa luồng trong ngôn ngữ, và có thể dùng để viết các chương trình ứng dụng
không thua gì các ngôn ngữ lập trình khác.
Trang 9NỘI DUNG BÀI TOÁN
1 Xây dựng hệ thống phân tán 3 server thể hiện khả năng phát/nhận thông điệp
2 Xây dựng giải pháp kỹ thuật tăng số gia
3 Viết chương trình bằng Java
Trang 10SƠ Đồ MINH HọA THUậT TOÁN
false
Server
Connect other Server
ReMsg =“”
SeMg=“”
Value(CTSK) =0
Sta rt
Value(CTSK)+1
Stop
ReMsg <>“” or SeMsg=<>“”
True false
Trang 11CÀI ĐặT ĐA SERVER
Dịch vụ từ máy chủ và khái niệm cổng, Khi kết nối vào
máy chủ ta có thể yêu cầu từ máy chủ nhiều dịch vụ khác nhau như: tìm và đọc các trang web trên Internet; gởi – nhận thông điệp; dò tìm hệ thống tên miền DNS;…Mỗi dịch vụ đều có cách gởi – nhận dữ liệu theo quy ước riêng Mỗi chương trình dịch vụ sẽ sử dụng một cổng khác nhau để truy xuất thông tin Cổng là một số nguyên dương có giá trị từ 1 đến 16383
Trang 12THUậT TOÁN
//Them muc vao list servers - this servers
String strItem1 = strLocalHost +"("+ intLocalPort+ ")"+".";
vtServers.addElement(strItem);//vtServer là Vectơ chứa các server trong hê thống
lstServers.setListData(vtServers);
//tao doi tuong Server Socket de lang nghe ket noi tu cac may khac goi den cong intLocalPort
server = new ServerSocket(intLocalPort);
int intLocalPort = server.getLocalPort();
//Tiếp tục tìm để kết nối với server khác
while(true){
Socket skConnect = server.accept();
//Neu la server trong he ket noi - chi cho phep mot server trong he ket noi
//Va chuyen ket noi cho mot luong xu ly
if(!bConMaster){
bConMaster = true;
conMaster = new Congto(skConnect,1,txtReceive,lblClock);
conMaster.start();
strMaster = conMaster.getInfoClient();
String strMaster = strLocalHost +"("+ intLocalPort+ ")"+".";
vtServers.addElement(strMaster);
lstServers.setListData(vtServers);
//hiển thị Server được kết nối này vào danh sách server
Trang 13GIảI PHÁP Kỹ THUậT TĂNG Số GIA
//Lay ve luong nhap de nhan du lieu tu tram khac gui den
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
//có thể viết khác cho tường minh
//Lay ve luong xuat de gui du lieu cho tram khac
out = new PrintWriter(client.getOutputStream(), true);
}catch(Exception e){
}
public void run(){
while (true) {
//Doc thong diep do tram khac gui den
strMes = in.readLine();
//Lay cac thong tin trong thong diep: clock#code|message
strMes.substring(0,strMes.indexOf("#")); String strClockRev =
int intClockRev = Integer.parseInt(strClockRev);
// neu co thong diep goi den thi tang so gia len 1
int intClock = intClockRev + 1;
//Hien thi thong diep vao text area tren form
+1,strMes.indexOf("|")); String strCode = strMes.substring(strMes.indexOf("#")
+1,strMes.length()); String strContent = strMes.substring(strMes.indexOf("|")
Trang 14DEMO CHƯƠNG TRÌNH
SetServer.java Congto.java
Các file BATCH
delClass.bat
CLS
@ECHO OFF
del *.class
Compile.bat
@echo off
cls
Echo Compiling Files !!!
javac *.java
Echo Compilingimpl Files !!!
PAUSE
server1.bat
@echo off echo 'This is Server1' java SetServer 60
server2.bat
@echo off echo 'This is Server2' java SetServer 70
server3.bat
@echo off echo 'This is Server3' java SetServer 80
Trang 15KếT LUậN
Đề tài đã đạt một số kết quả đáng kể sau:
Nắm vững nguyên tắc hoạt động của đa server
Nắm vững các kiến thức liên quan đến hệ phân tán và lập trình mạng trên cơ sở nền Java
Cài đặt bài toán thể hiện đa server phát nhận thông điệp và tính toán giá trị công tơ sự kiện phân tán tại mỗi server
Đảm bảo được căn bản các yêu cầu đặt ra của bài tóan
Trang 16CảM ƠN THầY VÀ BạN ĐÃ LắNG NGHE!