1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận môn lập trình mạng đồng bộ hóa và gắn bó dữ liệu thông qua một bài toán cụ thể

32 435 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 3,95 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Vận dụng các kiến thức của hệ phân tán ta có thể giải quyết các bài toán lớn một cách dễ dàng bằng cách chia sẻ cách thức giải quyết thông qua các máy con nhằm tiết kiệm thời gian và côn

Trang 1

ĐẠ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

Đề tài :

ĐỒNG BỘ HÓA VÀ GẮN BÓ DỮ LIỆU THÔNG

QUA MỘT BÀI TOÁN CỤ THỂ

Trang 2

LỜI MỞ ĐẦU

Sự bùng nổ của mạng Internet toàn cầu cùng với các ứng dụng của nó đã đem lại cho xã hội một cuộc sống tiện nghi và hiện đại Mạng internet đã giúp cho con người bước vào một kỷ nguyên công nghệ thông tin và tri thức, mang lại khả năng kết nối gần nhau hơn và giải quyết các vấn đề lớn một cách gọn gàng và có hợp tác

Trong thời điểm này lĩnh vực hệ phân tán trong tin học đóng một vai trò hết sức quan trọng Vận dụng các kiến thức của hệ phân tán ta có thể giải quyết các bài toán lớn một cách dễ dàng bằng cách chia sẻ cách thức giải quyết thông qua các máy con nhằm tiết kiệm thời gian và công sức hơn khi giải quyết trên hệ tập trung

Trong phạm vi của tiểu luận này tôi chỉ đề cập đến một khía cạnh nhỏ trong hệ

lập trình mạng đó là “Đồng bộ hóa và gắn bó dữ liệu thông qua một bài toán cụ

thể” Thông qua chương trình ta sẽ thấy rõ bài toán đồng bộ hóa và gắn bó dữ liệu là

bài toán có ứng dụng hữu ích và thiết thực trong đời sống và trong các sản phẩm của lập trình mạng.

Tôi cũng xin chân thành cảm ơn PGS.TS Lê Văn Sơn và các bạn đồng môn đã

giúp tôi hoàn thành tiểu luận này.

Trang 3

YÊU CẦU ĐỀ TÀI

1 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.

2 Đây là bài toán đồng bộ hóa và gắn bó dữ liệu.

3 Hãy viết chương trình cho biết giá trị “ảnh” của các công tơ.

Trang 4

PHẦN I: CƠ SỞ LÝ THUYẾT

CHƯƠNG I: TỔNG QUAN VỀ HỆ PHÂN TÁN VÀ LẬP TRÌNH MẠNG

1 Hệ phân tán (Distributed System):

Hệ tin học phân tán là một hệ thống đa dạng, nhiều thành phần và phức tạp về mặt cấu trúc, là vùng tri thức hiện đại đang được các chuyên gia công nghệ thông tin đặc biệt quan tâm nghiên cứu và phát triển ứng dụng hiện nay

Hình 1 Các lĩnh vực có hệ thống phân tán

Hay hệ phân tán là một tập hợp các máy tính độc lập mà xuất hiện đối với các người sử dụng như một máy tính đơn Với các đặc điểm:

 Nhiều bộ phận.

 Kết nối thông qua mạng truyền thông.

 Chia xẻ các tài nguyên.

(Theo Andrew Tanenbanum)

Trang 5

Hình 2 Một phần của mạng Internet

Nói chung, một định nghĩa phổ biến và khá đầy đủ về hệ phân tán được trình bày như sau:

“Hệ tin học phân tán hay nói ngắn gọn là hệ phân tán (Distributed System) là hệ

thống xử lý thông tin bao gồm nhiều bộ xử lý hoặc bộ vi xử lý nằm các tại các vị trí khác nhau và được liên kết với nhau thông qua phương tiện viễn thông dưới sự điều khiển thống nhất của một hệ điều hành.”

Mục tiêu của hệ phân tán:

 Tăng tốc độ bình quân trong tính toán, xử lý.

 Cải thiện tình trạng luôn luôn sẵn sàng của các loại tài nguyên.

 Tăng độ an toàn cho dữ liệu.

 Đa dạng hóa các loại hình dịch vụ tin học

 Đảm bảo tính toàn vẹn của thông tin.

Trang 6

2 Các mô hình hệ phân tán và ứng dụng mạng:

Các lớp phần mềm:

Kiến trúc phần mềm: cấu trúc của phần mềm như là các lớp và các module trong các thuật ngữ của các dịch vụ đưa ra và yêu cầu giữa các tiến trình trên cùng hoặc trên các máy tính khác nhau.

Platform (hệ nền): phần cứng mức thấp nhất và các lớp phần mềm (hệ điều hành) Middleware: một lớp của phần mềm mà mục đích của nó là đánh dấu heterogeneity và để cung cấp một mô hình lập trình cho các ứng dụng, như: CORBA, RMI (Remote Method Invocation), DCOM (Distributed Component Object Model),

3 Kiến trúc hệ thống:

3.1.Mô hình Client/Server:

Hình 3- Mô hình Client/Server

Trang 7

Các WebServer và các Server của Internet khác là các client của một DNS Server cái mà dịch các tên miền Internet thành các địa chỉ mạng.

Một máy tìm kiếm là một Server, nhưng nó chạy chương trình được gọi là Web Crawlers cái mà truy cập các Web server thông qua Internet cho thông tin yêu cầu.

 Dịch vụ cung cấp bởi nhiều server:

Hình 4- Dịch vụ được cung cấp bởi nhiều server Nhiều Server có thể:

 Mỗi phần là một tập hợp các đối tượng.

 Duy trì các bản sao của toàn bộ tập hợp các đối tượng trên một vài máy.

Ví dụ Web Proxy Server:

Hình 5 Proxy Server Web Proxy Server cung cấp một bộ nhớ cache chia xẻ cho các máy client tại một site hoặc băng qua một vài site khác nhau.

3.2.Mô hình tương tác trong hệ phân tán:

 Thực hiện truyền thông:

o Sự tiềm ẩn (Latency):

Trang 8

 Sự trì hoãn lan truyền: thời gian cần thiết để một bit đầu tiên của một thông điệp truyền đến được đích.

 Sự trì hoãn truyền: là khoảng thời gian giữa sự truyền bit đầu tiên và bit sau cùng của một thông điệp.

 Sự trì hoãn xử lý: là thời gian cần để hệ điều hành xử lý/gửi/nhận thông điệp.

 Sự trì hoãn xếp hàng: thời gian cần để một thông điệp xếp hàng

ở cuối máy chủ hoặc ở các node trung gian đợi để truyền đi.

o Băng thông (bandwidth): Tổng số thông tin có thể được truyền đi trong một thời gian đã cho.

o Sự biến đống tạp (Jitter): thời gian khác nhau giữa các sự trì hoãn ảnh hưởng bởi các thông điệp khác nhau.

 Đồng hồ và thứ tự các sự kiện:

o Không có khái niệm toàn cục của thời gian.

o Nhịp độ đồng hồ trôi: nhịp độ tương đối ở một đồng hồ máy tính trôi dạt ra khỏi từ một đồng hồ tham chiếu hoàn hảo.

 Đồng bộ hóa đồng hồ:

o Hệ thống định vị toàn cầu (GPS): một ít máy tính có thể sử dụng máy

thu radio để nhận thời gian đọc từ GPS với độ chính xác là 1 giây Chúng có thể gửi các thông điệp thời gian đến các máy tính khác trong mạng tương ứng của chúng.

micro-o Các đồng hồ lmicro-ogic: mỗi thông điệp là thời gian đóng dấu lên với một số

nối tiếp mà phản chiếu thứ tự lôgic của chúng.

Trang 9

CHƯƠNG II: CÁC VẤN ĐỀ ĐẶT RA VÀ CÁCH GIẢI QUYẾT

Trang 10

Trong hệ thống phân tán, người ta có thể vận dụng hợp lực này theo kiểu như sau:

1 Ta đưa vào:

1 Trên trạm P một biến NP thể hiện số lượng chính xác sản xuất đã có

2 Trên trạm C một biến NC thể hiện số lượng chính xác tiêu thụ đã thực hiện

2 Ta đưa vào

1 Trên trạm P một biến NC’ ảnh của NC mà P gia tăng mỗi một lần

nó nhận được thông điệp từ C báo cho nó biết là tiêu thụ mới đã diển ra.

2 Trên trạm C một biến NP’ ảnh của NP mà C gia tăng mỗi một lần

nó nhận thông điệp từ P báo cho nó biết một sản xuất mới đã diễn ra.

Một sự đồng bộ hóa chính xác được đảm bảo bằng việc xác nhận trên mỗi trạm các điều kiện sau đây:

Trong đó nc số lượng thông tin đã tiêu thụ bởi C mà P không biết.

Không cần tính đến (5) và (6), các điều kiện (3) và (4) bao hàm các điều kiện ban đầu nêu trong (1) và (2).

* Ta có thể khái quát hóa phương pháp này cho điều kiện đồng bộ hóa bằng công thức:

∑ CiXi > K (theo i)

Trong đó, Ci và K là các hằng số Ta hoàn toàn có khả năng và điều kiện mạnh hơn bằng cách thay thế tất cả các Xi mà hệ số của nó là đại lượng dương bằng các ảnh của nó X’i nếu và chỉ nếu các Xi là các biến không lùi.

Trang 11

Việc vận dụng thông thường của vấn đề này trên hệ thống tập trung sử dụng loại trừ tương hỗ để truy cập đến các biến trạng thái chia sẽ đượcbiểu hiện chính xác số lượng sản xuất và tiêu thụ Điều đó cho ta một trật tự tổng quát giữa các sự kiện phối hợp ngay từ đầu sản xuất và tiêu thụ.

Vì nguyên nhân xa cách giữa người sản xuất và người tiêu thụ mà trật tự tổng quát này không cần thiết và chỉ cần sử dụng để đồng bộ hóa các bản sao các biến trạng thái gần đúng là đủ.

*Trong hệ thống người sản xuất – người tiêu thụ, nếu N=1 thì có sự liên kết chặt chẽ giữa hai tiến trình cho phép xác định một trật tự chặt chẽ giữa các sự kiện.

2 Các công tơ sự kiện

Trong bài tóan người sản xuất – người tiêu thụ vấn đề sử dụng các biến trạng thái

không lùi cho phép sử dụng các bản sao gần đúng của các biến loại này Cơ chế đồng

bộ gọi là các công tơ sự kiện thích hợp với các vấn đề đặt ra.

Mỗi một công tơ, biến nguyên không lùi, được kết hợp với một nhóm đặc biệt các

Mỗi công tơ được khởi động ngay khi thành lập nó.

Để thể hiện bài tóan người sản xuất – người tiêu thụ, với cùng các tên của biến, ta định nghĩa:

1 Hai công tơ sự kiện NP’ và NC’, được khởi động bằng giá trị 0.

2 Hai biến nguyên NP và NC, khởi sự là 0, là cục bộ đối với tiến trình người sản xuất P và người tiêu thụ C.

Trong trường hợp này, ta viết các tiến trình như sau:

Trang 12

Tieu_thu Tang(NC’) NC’:=NC’+1 Kết thúc vòng lặp

Trang 13

PHẦN HAI: GIẢI QUYẾT BÀI TOÁN

I Nội dung bài toán

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:

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.

Trên nguyên tắc của Server, xây dựng giao diện Demo của 03 sever như hình sau:

Trang 14

Trong đó:

(1),(2): Khai báo Hostname và Port của Server để kết nối vào hệ thống

(3): Thông tin về Server

(4): Gởi thông điệp

(5): Thông tin về thông điệp

(6): Hiển thị giá trị số gia của công tơ sự kiện.

Chương trình dùng để cài đặt Server

// Môi trường làm việc của Java

public class SetServer extends JFrame{

// Variables declaration - GEN-BEGIN:variables

//tao cac nut giao dien

private JPanel pnLookupServer;

private JLabel lblHost;

private JComboBox cboHost;

private JLabel lblPort;

private JComboBox cboPort;

private JButton btnLookup;

Trang 15

private JScrollPane srpListServer;

private JList lstServers;

private JPanel pnServerInfo;

private JLabel lblAddress;

private JTextField txtAddress;

private JLabel lblLocalPort;

private JTextField txtLocalPort;

private JTextField txtHostname;

private JPanel pnClock;

private JLabel lblClock;

private JLabel lblReceive;

private JScrollPane srpReceive;

private JTextArea txtReceive;

private JPanel pnMessage;

private JPanel pnDeliverMessage;

private JButton btnSend;

private JTextField txtMessage;

private JComboBox cboSendto;

//Vector Chứa các Server trong hệ thống

Vector vtServers = new Vector();

//Khai báo các biến; Server ket noi tren conMaster co ten la strMaster String strMaster;

//con chua cac ket noi tu cac may client trong mang (ket noi den)

Congto con[] = new Congto[10];

//conMaster dung de chua mot ket noi tu mot server trong he den tren ServerSocket (Ket noi den)

Congto conMaster;

//Da co conMaster trong he ket noi chua

boolean bConMaster = false;

//conSlave dung de chua ket noi voi mot server trong he (ket noi di)

Congto conSlave;

// Phương thức khởi dựng server sử dụng intLocalPort

Trang 16

public SetServer(int port) {

//Gắn thuộc tính cho các đối tượng trên form

private void initialize() throws Exception{

pnLookupServer = new JPanel();

lblHost = new JLabel();

cboHost = new JComboBox();

lblPort = new JLabel();

cboPort = new JComboBox();

btnLookup = new JButton();

btnReset = new JButton();

btnAbout = new JButton();

srpListServer = new JScrollPane();

lstServers = new JList();

pnServerInfo = new JPanel();

lblAddress = new JLabel();

txtAddress = new JTextField();

label5 = new JLabel();

txtHostname = new JTextField();

lblLocalPort = new JLabel();

txtLocalPort = new JTextField();

label6 = new JLabel();

txtStateServer = new JTextField();

splitMain = new JSplitPane();

tabPaneInfo = new JTabbedPane();

pnClock = new JPanel();

lblClock = new JLabel();

lblReceive = new JLabel();

srpReceive = new JScrollPane();

txtReceive = new JTextArea();

pnMessage = new JPanel();

lblExample = new JLabel();

pnExample = new JPanel();

pnDeliverMessage = new JPanel();

label1 = new JLabel();

Trang 17

label2 = new JLabel();

txtMessage = new JTextField();

label3 = new JLabel();

cboSendto = new JComboBox();

Trang 18

srpListServer.setViewportBorder(new TitledBorder("List Servers :")); srpListServer.setMinimumSize(new Dimension(50, 51));

srpListServer.setPreferredSize(new Dimension(200, 392));

// lstServers

lstServers.setFont(new Font("Dialog", Font.BOLD, 14));

lstServers.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); lstServers.setBackground(new Color(247, 247, 214));

Trang 20

((GridBagLayout)pnDeliverMessage.getLayout()).rowHeights =new int[] {0, 0, 0, 0};

((GridBagLayout)pnDeliverMessage.getLayout()).columnWeights

= new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0E-4}; ((GridBagLayout)pnDeliverMessage.getLayout()).rowWeights =new double[] {0.0, 0.0, 0.0, 1.0E-4};

Trang 21

// txtMessage

txtMessage.setColumns(30);

txtMessage.setHorizontalAlignment(SwingConstants.LEFT); txtMessage.setFont(new Font("Tahoma", Font.BOLD, 12)); pnDeliverMessage.add(txtMessage, new GridBagConstraints(1,

1, 7, 1, 0.0, 0.0,

GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 5, 5), 0, 0));

Trang 22

//Them muc vao list servers - this servers

String strItem1 = strLocalHost +"("+ intLocalPort+ ")"+".";

vtServers.addElement(strItem1);

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 servertrong he ket noi

//Va chuyen ket noi cho mot luong xu ly

//Click chuot va nhan nut Ket noi

private void btnLookupActionPerformed(ActionEvent e) {

Trang 23

client = newSocket(strRemoteHost,intRemotePort,inetAddr,intLocalPort+1);

conSlave = new Congto(client,0,txtReceive,lblClock);

conSlave.start();

vtServers.addElement(conSlave.getInfoClient());

lstServers.setListData(vtServers);

JOptionPane.showMessageDialog(null,"Connect successfully !"); cboHost.setEnabled(false);

cboPort.setEnabled(false);

btnLookup.setEnabled(false);

}catch(Exception ex){

JOptionPane.showMessageDialog(null,"Error ! " + ex.getMessage()); }

}

//Click chuot va nhan nut Info….

private void btnAboutActionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(null,"Bai tap mon Lap Trinh Mang!\nHocvien: Nguyen Nhat Tan\nLop Cao hoc K9\n\nGV huong dan: PGS.TS Le Van Son\n12,2008\n");

}

//Click chuot va nhan nut btnSend

private void btnSendActionPerformed(ActionEvent e) {

try{

String strContent = txtMessage.getText();

//Tang gia tri cua cong to truoc khi goi thong diep

int intClock = Integer.parseInt(lblClock.getText())+1;

String strMes = Integer.toString(intClock) + strContent;

//Xem thu gui cho ai

//Them text vao text area

String strTo = cboSendto.getSelectedItem().toString(); if((conMaster!=null)||(conSlave!=null)){

Trang 24

addTextArea(Integer.toString(intClock),strContent,strTo);

}

break;

case 1:

break; //"All Clients": dự phòng

case 2: //"Selected" - Gui cho server duoc chon trong danh sach

String item = (String)lstServers.getSelectedValue(); if(lstServers.getSelectedIndex()==0){

JOptionPane.showMessageDialog(null,"Can't send to yourself !"); break;

//Them thong diep nhan hoac gui vao hop textarea

public void addTextArea(String time, String content, String to){ txtReceive.append("*Send to: " + to +"\n");

txtReceive.append(" Lan goi thu: " + time + "\n");

txtReceive.append(" Noi dung: " + content +"\n");

//Cap nhat gia tri cong to len form

lblClock.setText(time);

}

///////////////////////////////////////////////////////////////////////

Ngày đăng: 31/01/2015, 22:51

HÌNH ẢNH LIÊN QUAN

Hình 1. Các lĩnh vực có hệ thống phân tán - tiểu luận môn lập trình mạng đồng bộ hóa và gắn bó dữ liệu thông qua một bài toán cụ thể
Hình 1. Các lĩnh vực có hệ thống phân tán (Trang 4)
Hình 2. Một phần của mạng Internet - tiểu luận môn lập trình mạng đồng bộ hóa và gắn bó dữ liệu thông qua một bài toán cụ thể
Hình 2. Một phần của mạng Internet (Trang 5)
Hình 3- Mô hình Client/Server - tiểu luận môn lập trình mạng đồng bộ hóa và gắn bó dữ liệu thông qua một bài toán cụ thể
Hình 3 Mô hình Client/Server (Trang 6)
Hình 4- Dịch vụ được cung cấp bởi nhiều server Nhiều Server có thể: - tiểu luận môn lập trình mạng đồng bộ hóa và gắn bó dữ liệu thông qua một bài toán cụ thể
Hình 4 Dịch vụ được cung cấp bởi nhiều server Nhiều Server có thể: (Trang 7)
Hình 5. Proxy Server Web Proxy Server cung cấp một bộ nhớ cache chia xẻ cho các máy client tại một site hoặc băng qua một vài site khác nhau. - tiểu luận môn lập trình mạng đồng bộ hóa và gắn bó dữ liệu thông qua một bài toán cụ thể
Hình 5. Proxy Server Web Proxy Server cung cấp một bộ nhớ cache chia xẻ cho các máy client tại một site hoặc băng qua một vài site khác nhau (Trang 7)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w