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

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

20 458 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 20
Dung lượng 487,5 KB

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

Nội dung

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ả

Trang 1

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

Học viên thực hiện : Đặng Văn Kiểu

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ữ liệu Trong tiểu luận này, chúng tôi cố gắng tìm hiểu và vận dụng JAVA để lập trình giải quyết bài toán theo hai cách là sử dụng đa tuyến và giả lập ba server Trong đó giả lập server theo hướng một server cho một địa phương

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 Xin cảm ơn các bạn bè đồng nghiệp, các học viên lớp khoa học máy tính K24 đã giúp đỡ và chia sẻ kinh nghiệm học tập nghiên cứu

Trang 3

CHƯƠNG 1 TỔNG QUAN VỀ HỆ PHÂN TÁN & LẬP TRÌNH

MẠNG PHÂN TÁN 1.1 Hệ phân tán (Distributed Systems).

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

Từ định nghĩa này, người ta có thể xem hệ phân tán như là một tập hợp bao gồm các bộ xử lý hoặc bộ vi xử lý với bộ nhớ và đồng hồ nhịp độc lập Điều này đồng nghĩa với việc các bộ xử lý không sử dụng chung bộ nhớ và đồng hồ Như vậy, mỗi một hệ xử lý thông tin thành phần của hệ phân tán bao gồm một hay nhiều bộ xử lý và

Trang 4

cho về cấu trúc, số lượng và dung lượng có thể cho phép thực hiện một cách trọn vẹn các chức năng mà nó phải đảm nhậ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.

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

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

và vấn đề cấu trúc điều khiển

Trang 6

CHƯƠNG 2 SỰ GẮN BÓ THÔNG TIN

2.1 Các điều kiện giả định và thực tế.

Ta có một tập thông tin nào đó có thể được truy cập bởi một tập các tiến trình Số lượng các thông tin có thể truy cập được và các tiến trình có nhu cầu thông tin là con

số cố định Hệ này phát triển rời rạc theo thời gian giữa các điểm quan sát, ta có thể nhận biết được trạng thái thực của chúng, có nghĩa là các đối tượng và ngữ cảnh thực hiện các tiến trình, hệ kiểu như vậy hoạt động với độ ổn định tuyệt vời

Các điều kiện giả định này so với hệ thực tế có những điểm khác nhau cơ bản sau đây:

1

- Các đối tượng và các tiến trình có thể

- Được tạo lập và huỷ bỏ có tính chất động trong suốt quá trình tồn tại của hệ

2

- Các đối tượng và các tiến trình có thể được phân tán trên các trạm khác nhau liên hệ với nhau qua hệ thống viễn thông Do vậy, ta không thể xác định trạng thái thời điểm của hệ vì lí do độ trễ đường truyền giữa các trạm

và tính không tương thích giữa các điểm quan sát trong trạm đó

3 - Hệ thống viễn thông và các tiến trình là các đối tượng có thể xảy ra sự cố

kỹ thuật

2.2 Tác động và giao dịch.

Các đối tượng khác nhau của hệ 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ó

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:

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={T1, T2, …, Tn} lần lượt được thực hiện bởi các tiến trình độc lập p1, p2, …, pn Việc thực hiện tuần tự có nghĩa là thực hiện tất cả các giao dịch của M theo kiểu nối đuôi nhau và tuân thủ một trật tự nào đó Sự gắn bó của

hệ được bảo toàn

Nếu vì lý do hiệu quả, nhiều giao dịch được thực hiện song song thì sự gắn bó không còn đảm bảo được nữa

Một yêu cầu khác nữa rất quan trọng là trong quá trình thực hiện hệ phải đảm bảo cho các tác động không bị ngắt quãng

2.3 Trật tự hoá các tác động

Cho một tập hợp giao dịch M = {T1, T2, …, Tn}

Toàn bộ việc thực hiện các giao dịch M bởi một tập hợp các tiến trình tương tranh là tương đương với việc thực hiện một dãy S các tác động thuộc các giao dịch này

Chẳng hạn: S = (a1, a2, , an)

- Tuân thủ trật tự nội tại từng giao dịch

- Gồm tất cả các tác động tạo nên các giao dịch M

- Mỗi tác động chỉ xuất hiện một và chỉ một lần

⇒ S gọi là trật tự hoá của tập hợp các giao dịch M

Cho một tập hợp giao dịch M = {T1, T2, …, Tn}

- Một trật tự hóa của tập hợp các tác động thành phần sẽ tương ứng với việc thực hiện hoàn toàn các giao dịch

Trang 8

- Việc thu được một trật tự hóa gắn bó chỉ có thể thành công khi áp dụng các ràng buộc trên trật tự thực hiện các tác động

Nguyên lý của phương pháp là ở chỗ làm chậm một tác động nào đó cho đến thời điểm mà sự thực hiện của nó không còn có nguy cơ phá hủy sự gắn bó của trật tự hóa

Để đảm bảo các giao dịch trên tôn trọng sự gắn bó thông tin thì người ta đưa ra 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.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

Trang 9

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 Cần quan tâm

rằng cơ chế phân phối các số dựa trên nền tảng tổ chức các trạm theo kiểu vòng tròn

ảo.

2.4.1.2 Triển khai hệ ổn định:

Bộ tuần tự cung cấp cho mỗi một yêu cầu số sắp tới còn chưa dùng, giả sử đó là

T Khi đến phiên của trạm nhận bộ phận 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+2, 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 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

Việc phát đi các yêu cầu có thể sử dụng vòng tròn, nhưng điều đó không phải là bắt buộc

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ờ

2.4.2.1 Nguyên lý:

Tập hợp bao gồm các trạm được tổ chức theo kiểu vòng tròn ảo Các cập nhật được thực hiện theo hai thì:

- Thống nhất giữa hai trạm

- Thực hiện cập nhật

Do vậy, thuật toán này đảm bảo một sự gắn bó mạnh Nếu có nhiều yêu cầu cập nhật diễn ra đồng thời thì ta phải có quy tắc để có thể quyết định yêu cầu nào được tiếp nhận và thoả mãn Nhằm phục vụ cho ý tưởng đó, ta thường hay sử dụng dấu phối hợp cho mỗi cập nhật và ta xử lý yêu cầu có thời gian dấu lâu nhất

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

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

Trang 11

CHƯƠNG 3. GIỚI THIỆU BÀI TOÁN 3.1 Phát biểu bài toán:

Lập trình cập nhật danh bạ điện thoại phân tán trong điều kiện gắn bó thông tin

- Mỗi địa phương có một danh bạ điện thoại trên Server thuộc hệ thống cục bộ

của mình

- Quyền truy cập để tra cứu được xác định như nhau đối với tất cả các client

- Quyền truy cập để cập nhật được cấp cho mỗi hệ thống cục bộ là một client

đặc biệt

- Viết chương trình quan sát danh bạ điện thoại tại các Server

3.2 Lý thuyết để giải bài toán.

Mô hình tính toán Client/Server.

Khi nói tới lập trình mạng ta thường nghĩ đến cách trao đổi giữa một chương trình phục vụ (Server) với một hay nhiều chương trình khách (Client) Chương trình khách gửi một yêu cầu tới cho chương trình phục vụ, và chương trình này xử lý dữ liệu

để trả lời cho chương trình khách Như vậy, chương trình khách muốn gửi được yêu cầu thì trước hết phải tìm cách kết nối với Server Server có thể chấp nhận hay từ chối

sự kết nối này Một khi sự kết nối đã được thiết lập thì Client và Server trao đổi với nhau thông qua các lớp cho phép kết nối Các lớp trong gói java.net cung cấp các phương thức để kết nối mạng và trao đổi tin giữa các máy với nhau theo mô hình Client/Server Mặt khác, trên Internet nhiều máy tính sử dụng các giao thức để trao đổi với nhau

Socket chính là lớp (trừu tượng) thực hiện sự trao đổi giữa Server và Client.

Java xem sự trao đổi giữa Server và Client dựa trên Socket gần giống như các thao tác vào/ra (I/O), nghĩa là các chương trình có thể đọc, ghi qua Socket dễ dàng như chúng đọc, ghi lên tệp dữ liệu Lớp Server tạo ra sự kết nối từ máy Client tới Server thông qua các phương thức tạo lập đối tượng

Lớp ServerSocket dùng để tạo kết nối từ Server tới các Client Đối tượng của lớp này được tạo ra trên Server và lắng nghe những kết nối từ Client theo cổng xác định Server phải chạy thường trực trước khi Client bắt đầu thực hiện Server chờ sự yêu cầu kết nối của Client Để thiết lập được một Server, ta phải tạo ra một đối tượng, ví

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

Ngày đăng: 23/03/2015, 21:34

TỪ KHÓA LIÊN QUAN

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