ĐẠI HỌC ĐÀ NẴNG
TIỂU LUẬN LẬP TRÌNH MẠNG
ĐỀ tài: Áp dụng phương án (thuật toán) Le Lann đảm bảo
gắn bó dữ liệu trong CSDL phân tán
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Giảng viên hướng dẫn
Giảng viên hướng dẫn
:
: PGS.TS Lê Văn Sơn
Sinh viên thực hiện
Sinh viên thực hiện
: Đinh Thị Thiên Anh
: Đinh Thị Thiên Anh
Đỗ Văn Nhỏ
Đỗ Văn Nhỏ
Lớp
Lớp
: Khoa học máy tính
: Khoa học máy tính
Khoá
Khoá
: K11
: K11
Đà Nẵng, tháng 03 năm 2010
Đà Nẵng, tháng 03 năm 2010
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 2
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
LỜI MỞ ĐẦU
Với sự tiến bộ không ngừng của khoa học và kỹ thuật nói chung, đặc biệt trong
lĩnh vực công nghệ thông tin, ngày nay mạng máy tính đã phát triển nhanh chóng và
đa dạng cả về cấu hình mạng lưới, thiết bị mạng, hệ điều hành và ứng dụng Vì vậy,
những chương trình ứng dụng chạy trên các máy tính đơn lẻ trước đây dần dần được
thế chỗ bới những chương trình ứng dụng chạy trên mạng.
Khi thông tin được sử dụng chung thì nó nảy sinh nhiều vấn đề cần phải giải
quyết như:
• Đồng bộ dữ liệu trên các nút mạng khác nhau (các Servers, dữ liệu các thiết
bị mạng …).
• Định tuyến và phân luồng truy cập vào các Servers một cách hợp lý và hiệu
quả.
• Chống truy cập bất hợp pháp.
• …
Một trong những vấn đề chính cần phải giải quyết là làm sao phải đảm bảo dữ
liệu trên mạng phải thống nhất. Đây cũng là một trong những yêu cầu chính của lĩnh
vực lập trình mạng.
Nội dung chủ yếu trình bày trong tiểu luận này là giải quyết một vấn đề về lập
trình mạng, cụ thể như sau:
• Sử dụng giải thuật Le Lann để lập trình cho các hệ phân tán gắn bó yếu.
• Xây dựng hệ thống phân tán với một số server có khả năng phát/nhận thông
điệp.
• Xây dựng giải pháp gắn bó yếu trên CSDL.
• Lập chương trình bằng Java.
Tôi xin chân thành cảm ơn PGS.TS Lê Văn Sơn đã trực tiếp giảng dạy và
giúp đỡ tôi hoàn thành tiểu luận này.
Học viên thực hiện: - Đinh Thị Thiên Anh
- Đỗ Văn Nhỏ
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 3
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Giải thuật LeLann để lập trình cho các hệ phân tán gắn bó yếu
1.1 Khái niệm về gắn bó thông tin và các hình thức gắn bó trong hệ phân tán
Để thuận tiện trong việc mô tả khái niệm về gắn bó yếu, trước hết ta định nghĩa
gắn bó thông tin trong hệ phân tán là gì?
1.1.1 Gắn bó thông tin trong hệ phân tán
Các đối tượng khác nhau của hệ thống không phải là các đối tượng độc lập
nhau, chúng quan hệ với nhau bởi tập hợp các quan hệ gọi là các ràng buộc toàn vẹn.
Các ràng buộc này thể hiện sâu sắc các đặc tính riêng biệt của hệ.
Trạng thái của hệ thoả mãn một tập các ràng buộc toàn vẹn gọi là trạng thái
gắn bó.
Một cơ sở dữ liệu nào đó được gọi là gắn bó, nếu nó thỏa mãn một tập các ràng
buộc về toàn vẹn ngữ nghĩa.
Vậy gắn bó yếu là gì?
1.1.2 Gắn bó yếu
Gắn bó yếu cũng là một loại gắn bó thông tin. Khi thông tin của một hệ thống
nằm rải rác trên các nút mạng khác nhau đều đồng bộ với nhau tại mọi thời điểm thì đó
là gắn bó mạnh. Ngược lại, thông tin không được đồng bộ tại mọi thời điểm mà nó chỉ
đồng bộ theo 1 chu kỳ nhất định (có thể là chu kỳ thời gian) thì đó là gắn bó yếu. Tóm
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 4
Trước khi cập nhật (thay đổi)
Trong khi cập nhật (thay đổi)
Sau khi cập nhật (thay đổi)
Gắn bó
Không gắn bó
Gắn bó
T
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
lại, với gắn bó yếu, thông tin không cần phải được cập nhật tức thời giữa các nút mạng
trong một hệ thống nào đó.
Ví dụ: việc cập nhật bảng định tuyến của các Routers trong một hệ thống viễn
thông có một số trường hợp cũng không cần thiết phải gắn bó mạnh mà nó chỉ được
cập nhật bảng định tuyến với nhau theo một chu kỳ thời gian.
1.2 Giải thuật LeLann
1.2.1 Giới thiệu giải thuật LeLann
1.2.1.1Giới thiệu bài toán:
Cho tập hợp gồm các nút phần tử mạng được kết nối với nhau theo vòng Ring.
Độ ưu tiên của các phần tử mạng ban đầu là chưa có và không có phần tử nào đảm
nhận chức năng là bộ điều khiển trung tâm. Vấn đề đặt ra là tìm phần tử trên vòng
Ring có độ ưu tiên là cao nhất (hoặc thấp nhất). Không mất tính tổng quát, bài toán
yêu cầu tìm phần tử có độ ưu tiên cao nhất.
1.2.1.2Giải thuật LeLann
1.2.1.2.1 Nội dung giải thuật
Giải thuật LeLann yêu cầu tất cả các nút mạng đều gửi thông điệp, thông điệp
này mang một số ưu tiên (priority) của riêng mình. Như vậy, tất cả các nút mạng trên
vòng Ring đều nhận được thông điệp của các nút khác, sau khi thực hiện việc sắp xếp
và nút mạng nào có số hiệu ưu tiên cao nhất sẽ được bầu.
Giả sử rằng, mỗi một nút mạng đều biết độ ưu tiên của mình, sau đó bắt đầu
khởi tạo và gán độ ưu tiên vào thông điệp và gửi đi, việc thực hiện chuyển thông điệp
theo chiều kim đồng hồ (chiều bên trái của nút mạng):
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 5
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Nếu độ ưu tiên của thông điệp nhận được cao hơn độ ưu tiên của chính
nó, thông điệp này sẽ được chuyển tiếp trên vòng Ring.
Nếu độ ưu tiên của thông điệp nhận được thấp hơn độ ưu tiên của chính
nó, không chuyển tiếp thông điệp nữa.
Nếu độ ưu tiên của thông điệp bằng nhau, đó chính là độ ưu tiên cao nhất
cần tìm trên vòng Ring.
Chú ý: giải thuật này chỉ xác định một và chỉ một độ ưu tiên cao nhất trên mạng
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 6
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
LeLann’s Algorithm
1.2.1.2.2 Di chuyển thông điệp (Message Passes)
Tổng số thông điệp di chuyển trên vòng Ring trong các trường hợp:
Trường hợp tốt nhất: n+n-1=2n-1
Trường hợp tồi nhất:
Trường hợp trung bình:
= n(1+
1.3 Áp dụng giải thuật LeLann để lập trình cho các hệ phân tán gắn bó yếu
1.3.1 Bài toán:
Áp dụng giải thuật LeLann để đồng bộ dữ liệu cho các Routers trên vòng Ring
theo chu kỳ thời gian T=30s.
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 7
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
1.3.2 Giải thuật:
Repeat
send(nid); //Gửi thông tin theo chiều kim đồng hồ trên vòng Ring
receive(nid);
update(information); //Cập nhật thông tin
Delay(30s); //Tạm dừng 30s trước phát/nhận thông điệp
Until disconect
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 8
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Xây dựng hệ thống phân tán với một số Server có khả năng phát/nhận
thông điệp
1.4 Bài toán:
Xây dựng hệ thống đa server có khả năng phát/nhận thông điệp theo hình vẽ
dưới đây.
Nội dung thông điệp ở đây giả sử mang thông tin về độ ưu tiên của các Server,
thông điệp sẽ được phát/nhận theo chiều kim đồng hồ như giải thuật LeLann.
1.5 Thuật toán:
1.5.1 Xây dựng bảng định tuyến:
• Trước tiên ta xây dựng bảng định tuyến để căn cứ vào bảng này, server sẽ
chuyển các thông điệp trên mạng đi theo chiều kim đồng hồ.
Ví dụ:
Server 01 -> Server 02
Server 02 -> Server 03
Server 03 -> Server 04
…
Server N-1 -> Server N
Server N -> Server 01
• Như vậy, các thông điệp phát đi trên mạng từ Server(i) đến Server(i+1).
Ngược lại, Server(i) chỉ nhận được gói tin từ Server(i-1) gửi đến.
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 9
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
1.5.2 Xây dựng thủ tục cho các Servers:
• Điều kiện ban đầu: mỗi Server đã biết độ ưu tiên của mình trên mạng lưới
• Các Server phát thông tin về độ ưu tiên của mình, khi nhận được bản tin từ
Server khác gửi đến sẽ thực hiện so sánh, nếu độ ưu tiên của mình lớn hơn thì
không chuyển tiếp thông điệp nữa, ngược lại sẽ chuyển đến Server kế tiếp.
1.5.3 Xây dựng thủ tục phát/nhận thông điệp
• Cấu trúc thông điệp:
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 10
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
• Mỗi Server sẽ phát và nhận thông điệp, chiều phát/nhận theo như bảng định
tuyến đã xây dựng.
• Nội dung của thông điệp là độ ưu tiên của mỗi Server, kết thúc quá trình này
sẽ cho hệ thống biết Server nào có độ ưu tiên cao nhất theo giải thuật LeLann.
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 11
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Xây dựng giải pháp gắn bó yếu trên CSDL
1.6 Giới thiệu hệ thống CSDL phân tán
Một cơ sở dữ liệu phân tán là tập hợp nhiều cơ sở dữ liệu có liên đới logic và
được phân bố trên một mạng máy tính.
Từ đó ta định nghĩa: Hệ quản trị cơ sở dữ liệu phân tán (DDMS) là một hệ
thống phần mềm cho phép quản lý các cơ sở dữ liệu phân tán và làm cho việc phân
tán trở nên “vô hình” đối với người sử dụng.
Môi trường của hệ cở dữ liệu phân tán được mô tả qua hình vẽ sau:
Vấn đề được đặt ra làm sao để đảm bảo gắn bó yếu đối với các hệ thống dữ liệu
này.
Hiện tại có rất nhiều giải thuật giải quyết vấn đề gắn bó yếu trên CSDL, chúng
ta sẽ tìm hiểu các giải thuật này ở phần tiếp theo.
1.7 Các thuật toán giải quyết vấn đề gắn bó yếu CSDL
1.7.1 Giải thuật LeLann:
Đã trình bày ở phần trên
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 12
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
1.7.2 Thuật toán đảm bảo sự gắn bó yếu nhờ dấu
Đóng dấu là hành vi gán giá trị nguyên cho một thông điệp nhằm ghi nhận thời
điểm truyền trên cơ sở tham chiếu của đồng hồ logic. Theo đó mỗi yêu cầu được phát
đi cho tập hợp các trạm. Trên mỗi trạm, tồn tại một tiến trình server được đảm nhận
nhiệm vụ tiếp nhận các yêu cầu theo trật tự của dấu. Điều đó cho phép có được một sự
gắn bó yếu giữa các bản sao khác nhau.
Các giao dịch cần là các khả năng đọc, ghi hay cập nhật. Cập nhật được xác
định như là một dãy các thao tác đọc rồi ghi, thao tác kiểm tra đọc tức thì trạng thái
hiện hành của một bản sao.
Mỗi một server tiếp nhận các yêu cầu ghi đến từ trạm cục bộ ở thời điểm cho
trước. Nó tiếp nhận các yêu cầu và tính toán trên cơ sở dấu theo tiêu chí lâu nhất. Việc
xác định yêu cầu không được tiến hành ngay tức khắc vì nguyên do ta không thể biết
chắc chắn yêu cầu nào là lâu nhất. Yêu cầu lâu nhất có thể đang truyền trên đường.
Tính không chắc chắn này xuất hiện có điều kiện với giả thiết về hệ viễn thông. Khi
trạm i truyền qua các thông điệp cho trạm j, trật tự nhận các thông điệp tại j là hoàn
toàn giống với trật tự nhận các thông điệp phát đi. Giả thiết này được kiểm tra trong
các mạng thông thường. Việc xác định yêu cầu cần xử lý trên một trạm là hoàn toàn có
thể. Có hai trường hợp cần xem xét:
• Tập hợp các yêu cầu ghi khi chờ chứa các yêu cầu từ tất cả các trạm khác.
Trong trường hợp này, các yêu cầu đi qua, nếu chúng tồn tại, là mới hơn so với
các yêu cầu đã đi qua. Nói cách khác, yêu cầu lâu nhất chính là yêu cầu đang
chờ.
• Tồn tại các trạm mà không có bất kỳ yêu cầu nào được truyền đến. Ta được
đưa đến trường hợp trước đây bằng cách truyền cho tất cả các trạm một thông
điệp yêu cầu và bắt buộc phải xác nhận. Do vậy, sau một khoảng thời gian, theo
giả thiết về độ ổn định, ta sẽ nhận hoặc là các yêu cầu đi qua, hoặc là các trả lời
cho thông điệp yêu cầu. Lúc này, ta có được các thông điệp đến từ tất cả các
trạm.
1.7.3 Thuật toán đảm bảo sự gắn bó yếu nhờ bộ tuần tự tuần hoàn
Ở thuật toán này, ta xem như các trạm được lắp đặt trên một vòng tròn theo một
chiều nhất định gọi là vòng tròn ảo. Mỗi trạm chỉ liên hệ với 2 trạm gần nhất với nó là
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 13
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
trạm bên trái (succ) và trạm bên phải (pred). 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 hoàn. Các yêu cầu được
tiếp nhận tại mỗi trạm theo cùng một trật tự thống nhất. Điều đó giúp ta có được một
sự gắn bó yếu.
Bộ tuần tự cung cấp cho mỗi một yêu cầu số sắp tới chưa dùng, giả sử đó là T.
Khi đến phiên của trạm nhận bộ tuần tự, nó yêu cầu một số lượng n số đúng bằng số
lượng các yêu cầu cập nhật đang chờ trên trạm này. Các số này là:
T, T+1, …, T+n-1
Nó tiếp tục chuyển bộ tuần tự cho trạm kề liền sau nó và số sắp tới chưa dùng
đến là T+n.
Khi một trạm đã có số, nó phát yêu cầu cập nhật cùng với số này. Trên mỗi
trạm, các cập nhật được thực hiện bằng cách tiếp nhận các yêu cầu cùng các số liên
tiếp nhau (theo một trật tự). Để xác định yêu cầu sắp đến cần phải xử lý, mỗi một trạm
duy trì một biến chứa số V được phối hợp với yêu cầu xử lý cuối cùng. Các yêu cầu
mang các số lớn hơn V+1 được lưu trữ trong khi chờ xử lý yêu cầu V+1.
Một trạm khi đã rút một lượng số cần phải được sử dụng hết khi nó đến lượt
tiếp theo tiếp nhận bộ tuần tự nếu không các trạm khác sẽ phải chờ.
1.8 Bài toán gắn bó yếu trên CSDL
1.8.1 Phát biểu bài toán
Giả sử trên một hệ thống mạng viễn thông có các thiết bị định tuyến (router),
mỗi thiết bị ban đầu chứa bảng (dữ liệu) định tuyến của mình. Lúc này các bảng định
tuyến chỉ chứa các địa chỉ mạng của các phần tử kế nối trực tiếp (connected) với chính
nó.
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 14
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Để tất cả các phần tử trên mạng có thể liên lạc được với nhau, các bảng định
tuyến trên các router phải được cập nhật liên tục. Bài toán đặt ra là xây dựng chương
trình mô phỏng việc cập nhật dữ liệu của các bảng định tuyến trên các router, cụ thể
như sau:
Dữ liệu đầu vào: thông tin các bảng định tuyến của các router được lưu ở file
connected routerX.txt
Trên router 1 có các mạng như sau: 192.168.1.0/30, 192.168.1.4/30,
192.168.1.8/30
Trên router 2 có các mạng như sau: 192.168.1.24/30, 192.168.1.28/30
Trên router 3 có các mạng như sau: 192.168.1.12/30, 192.168.1.16/30,
192.168.1.18/30
Dữ liệu đầu ra: thông tin định tuyến sau khi các router đã trao đổi thông tin với
nhau và được lưu ở file: routing table.txt
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 15
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
1.8.2 Giải quyết bài toán
1.8.2.1Thuật toán:
Áp dụng giải thuật LeLann, các thủ tục xây dựng ở trên cho các Server
gửi/nhận thông điệp đã xây dựng ở phần 1 và 2.
• Một router sẽ gửi thông tin định tuyến đang có gửi cho router kế nó trên
vòng Ring. Thông tin định tuyến được đọc từ các file connected routerX.txt và
routing table.txt
• Sau khi nhận được thông tin định tuyến, router nhận sẽ ghi kết quả lên file
routing table.txt và tiếp tục chuyển (forward) đến router kế tiếp theo thứ tự.
1.8.2.2Kết quả:
• Sau một số bước gửi/nhận thông tin, toàn bộ các router trên hệ thống mạng
sẽ có thông tin định tuyến hoàn chỉnh.
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 16
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
KẾT LUẬN
Đánh giá
Qua đề tài tiểu luận, tôi đã nghiên cứu và nắm bắt được nhiều kiến thức về lập
trình mạng và ngôn ngữ Java. Chương trình ứng dụng xây dựng về cơ bản đã đạt được
mục tiêu bài toán đặt ra.
Hướng phát triển của chương trình
Lĩnh vực lập trình mạng là lĩnh vực khó và phức tạp. Vì vậy, những nghiên cứu
trong bài tiểu luận về lý thuyết cũng như chương trình vẫn còn nhiều điểm cần phải
chỉnh sửa để hoàn thiện hơn.
Cụ thể, chương trình cần sửa đổi và bổ sung thêm một số tính năng sau:
• Xử lý khi có sự cố xảy ra trên mạng.
• Xử lý và chọn lọc những thông tin trước khi gửi để tối ưu về mặt đường
truyền.
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 17
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Tài liệu tham khảo
[1] Hệ tin học phân tán – TS. Lê Văn Sơn, Nhà xuất bản Đại học quốc gia TP.
Hồ Chí Minh.
[2] Java lập trình mạng – Nguyễn Phương Lan, Hoàng Đức Hải, Nhà xuất bản
lao động – xã hội.
[3] Java™ 2:The Complete Reference, Fifth Edition
[4] Internet: Lê Văn Sơn Trường Đại họcc Sư phạm – Đại học Đà Nẵng, nghiên
cứu phát triển giải thuật quản lý nhiều bản sao cho các ứng dụng phức tạp (researching
to develop algorithm managing multicopies for complicated applications)
[5] Internet: LeLann’s algorithm
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 18
Tiểu luận môn học: Lập trình mạng GVHD: PGS.TS.Lê Văn Sơn
Mục lục
ĐẠI HỌC ĐÀ NẴNG 1
1
TIỂU LUẬN LẬP TRÌNH MẠNG 1
Giải thuật LeLann để lập trình cho các hệ phân tán gắn bó yếu 4
Xây dựng hệ thống phân tán với một số Server có khả năng phát/nhận thông điệp 9
Xây dựng giải pháp gắn bó yếu trên CSDL 12
KẾT LUẬN 17
Học viên thực hiện: Thiên Anh – Văn Nhỏ Trang 19