Tiểu luận môn Lập trình mạng LẬP TRÌNH CẬP NHẬT DANH BẠ ĐIỆN THOẠI PHÂN TÁN TRONG ĐIỀU KIỆN PHẢI ĐẢM BẢO GẮN BÓ THÔNG TIN - Pdf 25

Đà Nẵng, 05/2012
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA CÔNG NGHỆ THÔNG TIN
*****  *****
TIỂU LUẬN MÔN HỌC
LẬP TRÌNH MẠNG
ĐỀ TÀI
LẬP TRÌNH CẬP NHẬT DANH BẠ ĐIỆN THOẠI
PHÂN TÁN TRONG ĐIỀU KIỆN PHẢI ĐẢM BẢO GẮN
BÓ THÔNG TIN
Gi%ng viên hướng dẫn: PGS.TS. LÊ VĂN SƠN
Lớp : Khoa học máy tính K24
Học viên thực hiện : Đặng Văn Kiểu
Tiểu luận môn học Lập trình mạng Trang 2
MỞ ĐẦU
Hệ tin học phân tán là hệ thống tin học hiện đại, đa dạng, phức tạp và đang trên
đà phát triển, được nhiều trường đại học, nhiều viện nghiên cứu, nhiều chuyên gia
công nghệ thông tin, quan tâm nghiên cứu với nhiều công trình khoa học có giá trị về
mặt nguyên lý, phương pháp cũng như ứng dụng trong thực tế.
Hiện nay, việc nghiên cứu phát triển các giải pháp kỹ thuật cơ sở cho các ứng
dụng phân tán đã đạt được những thành công nhất định và thể hiện trong các công bố
mới nhất. Tuy nhiên, để có được một giải pháp hữu hiệu đáp ứng các yêu cầu đặt ra
của việc gắn bó dữ liệu trong môi trường phân tán dựa vào mạng truyền thông như
Internet/Intranet, thì đòi hỏi phải tiếp tục nghiên cứu hoàn thiện các giải pháp hiện
hành, việc lập trình giải quyết một bài toán hay giải quyết một yêu cầu xử lý phân tán
các đối tượng vẫn còn là một vấn đề rất mới và không đơn giản. Được sự đồng ý và
hướng dẫn của PGS.TS. Lê Văn Sơn, chúng tôi tiếp tục tìm hiểu vấn đề lập trình phân
tán giải quyết một bài toán cụ thể, đó là bài toán “Lập trình cập nhật danh bạ điện
thoại”.
Bài toán mô hình cập nhật danh bạ điện thoại là bài toán phải đảm bảo gắn bó dữ

- Đ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.
1.2. Lập trình phân tán.
Công cụ chính yếu để giải quyết vấn đề nêu trên là các ngôn ngữ lập chương
trình được bổ sung thêm một số lệnh, hàm hay thủ tục chuẩn cho phép người lập trình
biên soạn và thực hiện trong môi trường phân tán. Các ngôn ngữ thuật toán mà ta
thường sử dụng để lập chương trình cho các hệ tập trung không có được khả năng đặc
biệt này. Các khái niệm mới như vấn đề trỏ đến các đối tượng xử lý trong các ứng
dụng và các biểu thức điều khiển xác định dãy tạm thời các thao tác sơ đẳng khác nhau
cũng sẽ được nghiên cứu.[1]
Đương nhiên, các vấn đề về trỏ đối tượng và điều khiển đã được đặt ra trong ngữ
cảnh của các ứng dụng tập trung. Để trỏ đến đối tượng một cách chính xác trong các
hệ tập trung, người ta đã sử dụng thành công hàng loạt các biện pháp. Một mặt, người
ta có các biện pháp kỹ thuật liên hệ giữa các biến. Biến là dãy các ký tự biểu diễn đối
tượng cần truy cập; biến được định nghĩa trong các ngôn ngữ và dành cho người lập
trình. Mối liên hệ giữa biến và các ô nhớ chứa giá trị cần thiết cũng được định nghĩa
chặt chẽ. Mặt khác, người ta có các phương pháp cho phép xác định tập hợp các biến
(cấu trúc khối, danh mục phân cấp, ).
Cấu trúc điều khiển tuần tự (điều kiện, lặp, thủ tục) cho phép thực hiện tốt công
việc, nhưng không phải lúc nào cũng thoả mãn các yêu cầu của việc thực hiện song
song. Hình thức khác nhau của chúng rất phong phú như cùng mặc định, cùng bên,
tiến trình, gặp gỡ, kịch bản, có thể nói ngắn gọn trong một thuật ngữ là hàm nguyên
thuỷ. Sự phát triển nhanh chóng các cấu trúc được giải thích bằng thực tế là phần lớn
chỉ đáp ứng cho các tình huống cụ thể trên các hệ thống đơn xử lý. Đối với các hệ đa
xử lý các vấn đề đặt ra mà câu trả lời đang còn ở phía trước và cần phải có nhiều các
công trình nghiên cứu thì mới có thể đáp ứng được.
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 5
Khi lập chương trình phân tán đòi hỏi sự thay đổi nhiều về lượng hơn là chất, cho
nên ta cần phải tiếp tục nghiên cứu các khái niệm mới liên quan đến vấn đề trỏ dữ liệu

bó.
Các nhà thiết kế và vận hành hệ mong muốn rằng việc thực hiện các tiến trình
phải duy trì cho được hệ trong trạng thái gắn bó. Để chính xác hoá đặc tính này, cần
phải lưu ý là trạng thái của hệ chỉ được xác định ở mức quan sát cho trước.
Ta quan tâm đến hai mức quan sát:
STT Mức Gi%i thích
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 7
1 NSD
- Tiến trình là một dãy thực hiện các giao dịch, giao dịch đó
là chương trình duy nhất được thực hiện từ một trạng thái
gắn bó dẫn hệ đến một trạng thái gắn bó khác.
2 Hệ thống
- Mỗi giao dịch được cấu tạo từ nột dãy các tác động được
thể hiện như sau. Nếu 2 tác động A và B thuộc hai giao
dịch khác nhau được thực hiện bởi hai tiến trình thì hiệu
ứng tổng quát của chúng sẽ là hiệu ứng của dãy (A;B) hoặc
là (B;A)
Ở mức hệ thống, ta có thể nói rằng các tác động là phần tử nhỏ nhất không thể
chia cắt được nữa.
Cho một tập hợp giao dịch M={T
1
, T
2,
…, T
n
} lần lượt được thực hiện bởi các
tiến trình độc lập p
1
, p

các phương pháp trên cơ sở dữ liệu phân tán:
2.4. Các thuật toán qu%n lý nhiều b%n sao.
Hiện nay, trong lĩnh vực mạng diện rộng, đặc biệt là mạng Internet, bản sao dữ
liệu được sử dụng để tăng tính sẵn sàng của dữ liệu. Tuy nhiên, lợi ích sẵn sàng của dữ
liệu này chỉ có được khi phải trả giá bằng những thuật toán phức tạp để ẩn đi tính phức
tạp trong việc bảo trì nhiều bản sao của đối tượng. Sự khó khăn nằm ở việc phải đảm
bảo gắn bó cho các bản sao của đối tượng để tránh bế tắc khi vận hành hệ thống trong
khi phải tối đa khả năng sẵn sàng dữ liệu. Các thuật toán giải quyết những vấn đề này
được gọi là các thuật toán điều khiển bản sao.
Việc quản lý nhiều bản sao của cùng một đối tượng thông tin đang được các nhà
chuyên môn tin học quan tâm nghiên cứu ngay trong giai đoạn phân tích, thiết kế và
xây dựng hệ điều hành. Ngoài ra, đây còn là một trong những vấn đề có tính chất cơ sở
cho các ứng dụng phức tạp.
Vấn đề truy cập và xử lý thông tin phân tán nói chung, quản lý nhiều bản sao nói
riêng được nghiên cứu trong hàng loạt các công trình, đặc biệt của Herman, Ellis,
Wilms và Le Lann. Các giải thuật này là cơ sở chủ yếu cho giải pháp đảm bảo sự gắn
bó yếu nhờ dấu, nhờ bộ tuần tự tuần hoàn và đảm bảo sự gắn bó mạnh cho các hệ
thống đồng nhất. Yêu cầu quan trọng của tất cả các giải pháp quản lý nhiều bản sao là
đảm bảo tính gắn bó thông tin (coherence), toàn vẹn dữ liệu và tránh bế tắc diễn ra
trong quá trình khai thác, vận hành hệ.
Nội dung quản lý nhiều bản sao là các giải pháp cho phép tự động hóa các công
việc kiểm tra tính hợp thức của truy cập thông tin, khôi phục thông tin, cập nhật thông
tin, an toàn cho các bản sao, sử dụng các bộ nhớ, đĩa, lưu lịch sử, mở/ghi lịch sử,
chuyển các bản loại bỏ vào vùng có thể khôi phục, Trong các nội dung nêu trên, vấn
đề quan trọng nhất là cập nhật tự động thông tin vào các bản sao.
2.4.1. Thuật toán đ%m b%o gắn bó yếu nhờ bộ tuần tự tuần hoàn.
2.4.1.1. Nguyên lý:
Trước khi phát một yêu cầu, một trạm nào đó cần phải kết hợp với nó một số thứ
tự được cấp từ bộ tuần tự tuần hoàn. Các yêu cầu được tiếp nhận tại mỗi trạm theo
HVTH: Đặng Văn Kiểu Khoa học máy tính K24

2.4.2.2. Triển khai hệ ổn định:
Mỗi trạm có thể có các trạng thái sau:
- Nghỉ ngơi: Trạm không thực hiện cập nhật nào cả.
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 10
- Hoạt động: Trạm đã nhận một yêu cầu cập nhật cục bộ mà yêu cầu này đã
được truyền cho các trạm khác để kiểm tra.
- Thụ động: Trạm đã đồng ý cho một cập nhật và chờ trật tự tương ứng.
- Cập nhật: Trạm đang trong tình trạng chuyển của cập nhật, trong khi đó tất cả
các yêu cầu khác truyền đến đều được lưu trữ. Chúng sẽ được xử lý khi quay
về một trong các trạng thái khác.
Lúc khởi sự, tất cả các trạm đều trong trạng thái nghỉ ngơi.
Trạm khởi sự việc cập nhật, đầu tiên cần phải gửi một yêu cầu cho phép cập nhật,
nó chỉ làm được công việc đó trong trạng thái nghỉ ngơi. Lúc này nó được nhận dấu và
được gửi vào vòng tròn, trạm khởi sự chuyển trạng thái từ nghỉ ngơi sang hoạt động
Nếu chỉ có một yêu cầu duy nhất được đưa vào vòng tròn, nó đi qua tất cả các
trạm để chuyển các trạm này từ nghỉ ngơi sang thụ động. Khi nó đã trở về nơi khởi sự
thì việc thống nhất coi như hoàn tất. Việc cập nhật nói riêng lúc này được gửi đi và
mỗi trạm sau khi thực hiện lại trở về trạng thái nghỉ ngơi.
Nếu có nhiều yêu cầu được đưa ra đồng thời trong vòng tròn, thì tình hình đó dễ
dàng diễn ra xung đột. Lúc này, ta phải chọn một yêu cầu có Thời gian dấu lâu nhất.
Để tiến hành công việc đó, ta nêu bật vai trò của “bộ chắn đường” (barrage) cho các
trạm khởi sự. Một trạm nào đó trong trạng thái nghỉ ngơi hay thụ động phải chuyển
toàn bộ yêu cầu đã đến với nó; một trạm trong trạng thái hoạt động chỉ phải chuyển
các yêu cầu có thời gian lâu hơn các yêu cầu mà chính nó đã phát đi; các yêu cầu khác
đều bị dừng lại và được lưu giữ.
Các yêu cầu bị lưu lại sẽ được gửi tiếp vào vòng tròn, khi trạm lưu trữ chúng
hoàn thành việc cập nhật riêng của mình.
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 11

dụ server của lớp ServerSocket, gắn nó với một cổng nào đó và lắng nghe xem có
Client nào cần kết nối hay không. Các Socket được xác định tương ứng với địa chỉ của
máy và cổng.
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 12
ServerSocket server =new ServerSocket(port);
Trong đó port là số hiệu của cổng nằm giữa 0 và 16383. Cổng cho phép trao đổi
tin giữa hai chương trình. Địa chỉ của cổng là số có độ dài 16 bit và thường phụ thuộc
vào các giao thức ứng dụng. Thông thường các dịch vụ nổi tiếng hiện nay đều có qui
định chuẩn cổng dành riêng cho mình như:
Dịch vụ Cổng
FPT 21
HTTP 80
Telnet 23
Finger 79
SMTP 25
Sau khi đối tượng server được tạo ra, Server có thể sử dụng câu lệnh sau để lắng
nghe yêu cầu kết nối của Client.
Socket connect=new Socket(ServerName, port);
ServerName là tên của máy chủ trên Internet hoặc địa chỉ IP, xác định duy nhất
một máy tính trên toàn mạng Internet. IP là giao thức được sử dụng để gửi tin từ một
máy tới máy khác trên mạng Internet. IP phải xác định được máy gửi và máy nhận
thông qua địa chỉ IP. Một địa chỉ IP gồm bốn số nguyên nằm giữa 0 và 255, phân cách
với nhau bằng dấu ‘.’. Ví dụ
Socket connect=new Socket(“10.0.0.138”, 8000);
Vì địa chỉ IP thường rất khó nhớ nên thay vì địa chỉ IP người ta thường sử dụng
tên miền dịch vụ, ví dụ www.phutho.gov.vn. tương ứng với địa chỉ IP nêu trên.
Ngày nay, trên Internet hai máy có thể trao đổi với nhau phần lớn đều dựa trên
qui ước hay giao thức chuẩn TCP/IP.
Sau khi sự kết nối đã được Server chấp nhận, việc trao đổi giữa Client và Server

try {
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
//1. Tạo connection miêu tả database cần truy xuất
con = DriverManager.getConnection(conStr,””,””);
//2. Tạo đối tượng Statement kết hợp với connection
java.sql.Statement stmt = con.createStatement();
//3. Tạo đối tượng Recordset chứa kết quả của lệnh SQL
ResultSet rs =stmt.executeQuery(newSQL);
//4. Duyệt recordset để xử lý từng record
int i = 0;
if (rs != null) while (rs.next()){
//xử lý record hiện hành
i++;
}
//5. Đóng các đối tượng đã tạo ra
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 14
rs.close(); stmt.close(); con.close();
} catch(Exception e){
System.out.println(“Error : “+e);
}
3.2.2. Quá trình kiểm soát lỗi và phòng tránh bế tắc.
Việc lập trình xử lý phân tán không hề giống với phương thức lập trình truyền
thống. Ví dụ ở lập trình truyền thống (lập trình tập trung) việc cấp phát con trỏ và sử
dụng con trỏ trở nên rất linh hoạt và tiện lợi. Tuy nhiên đối với việc lập trình xử lý
phân tán việc cấp phát con trỏ trở nên vô cùng khó khăn, bởi nếu như ở lập trình xử lý
tập trung việc cấp phát con trở sẽ do hệ điều hành đưa ngay vào ngăn xếp và hàng đợi
và cấp phát địa chỉ bộ nhớ cho nó. Nhưng lập trình phân tán sẽ phải truyền các biến,
các địa chỉ con trỏ qua hệ thống mạng. Do vậy cách thức lập trình sẽ hoàn toàn khác
bởi khi đó phải sử dụng đối tượng triệu gọi từ xa hay một luồng xuất nhập để nhận và

dụng khi hệ thống được triển khai thực tế.
Do vậy ta chỉ quan tâm đến vấn đề chính là việc cập nhật danh bạ điện thoại. Khi
đó danh bạ của ta sẽ bao gồm các trường như sau:
Tại mỗi Server đều có cơ sở dữ liệu như sau:
- Bảng danhbadt:
STT Tên trường Kiểu dữ liệu Độ lớn Mô tả
1 MaVung Text 5 Mã vùng của từng địa
phương
2 SoDT Text 9 Số điện thoại
3 ChuSoHuu Text 30 Chủ thuê bao
4 DiaChi Text 50 Địa chỉ của chủ thuê bao
4.1.2. Gi%i thuật gi%i quyết bài toán
Vấn đề đặt ra của bài toán là: Phải giải quyết làm sao để dữ liệu phải luôn luôn
đồng bộ dù cho khách hàng có ở bất cứ đâu và truy cập vào bất cứ máy chủ nào.
Như vậy hệ thống sử dụng vòng tròn ảo để cập nhật dữ liệu.
4.2. Thiết kế gi%i thuật cập nhật dữ liệu
Đầu vào: Dữ liệu nhập từ client.
Đầu ra: Kết quả cập nhật trên CSDL tại các server.
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 16
Gi%i thuật:
B1: Client kết nối tới Server.
B2 : Server chấp nhận kết nối từ Client.
B3: Client gửi các lệnh cập nhật lên server.
B4: Server nhận thông điệp từ client.
B5: Server xử lý thông điệp.
B6: Căn cứ vào từng loại thông điệp, nếu là thông điệp cập nhật dữ liệu.
B6.1 Server thực hiện lock trên trường Dữ liệu
B6.2 Server Thực hiện gửi thông điệp lock cho các server khác và lắng nghe
phản hồi.

Đối với bản thân, dù đã nhiều năm học tập và công tác có liên quan đến chuyên
môn tin học, nhưng hệ tin học phân tán cùng với việc lập trình phân tán thật sự là vấn
đề còn rất mới Từ những bài giảng, sách giáo khoa và những hướng dẫn của thầy
giáo PGS -TS. Lê Văn Sơn, chúng tôi đã học hỏi, tìm hiểu, thu hoạch được nhiều kiến
thức mới, giúp chúng tôi hoàn thành tiểu luận này.
Những kết quả thu nhận được sau khi thực hiện tiểu luận có nhiều ý nghĩa đối
với công tác học tập, tìm hiểu và nghiên cứu môn học Lập trình Mạng, hệ phân tán của
bản thân.
Tiểu luận cũng mở ra nhiều hướng nghiên cứu, tìm hiểu về lập trình mạng, lập
trình phân tán, đặc biệt là sử dụng Java SOCKET, sử dụng đa tuyến để giải quyết một
lớp các bài toán có yêu cầu đồng bộ hoá các tiến trình, trao đổi thông điệp
Một lần nữa, chúng tôi xin trân trọng cám ơn thầy giáo PGS -TS. Lê Văn Sơn
đã cung cấp kiến thức, tài liệu để chúng tôi hoàn thành tiểu luận này.
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 19
TÀI LIỆU THAM KHẢO
[1] TS. Lê Văn Sơn – “Hệ tin học phân tán”, NXB Đại học quốc gia thành phố Hồ
Chí Minh 2002.
[2]
Nguyễn Phương Lan, Hoàng Đức Hải, “JAVA và lập trình mạng”, NXB Giáo
dục - 2001.
[3]
KS Lưu Nguyễn Tấn Đạt, “JAVA 6”, Tập 1+2, NXB Hồng Đức - 2007.
[4] Một số bài tham khảo trên Internet.
HVTH: Đặng Văn Kiểu Khoa học máy tính K24
Tiểu luận môn học Lập trình mạng Trang 20
MỤC LỤC
MỞ ĐẦU 2
CHƯƠNG 1. TỔNG QUAN VỀ HỆ PHÂN TÁN & LẬP TRÌNH MẠNG PHÂN TÁN 3
1.1. Hệ phân tán (Distributed Systems) 3


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status