Chương 4: Cài đặt

Một phần của tài liệu xây dựng mạng p2p cho di động (Trang 40 - 51)

Chương này sẽ trình bày các bước cải tiến ứng dụng MobTorrent nhằm thực thi Hợp tác cục bộ (local cooperation) cho di động, nâng cao hiệu năng cho ứng dụng.

Như đã trình bày ở chương 2, MobTorrent là chương trình thực thi hoàn chỉnh BitTorrent trên nền tảng Java ME cho mobile, hỗ trợ cả download và upload. Mặc dù MobTorrent mới chỉ phát triển đến phiên bản 1.1 và còn chưa hỗ trợ nhiều tính năng như SymTorrent nhưng đây là ứng dụng sẽ có được phát triển rộng rãi vì sử dụng nền tảng Java, không bị phụ thuộc vào nền tảng phần cứng. Khóa luận này lựa chọn MobTorrent để cài đặt chức năng Hợp tác cục bộ sử dụng kết nối bluetooth cho mobile.

4.1 Hợp tác cục bộ

Nâng cao hiệu năng của BitTorrent trên thực tế đó là sự cải tiến để làm tăng tốc độ trao đổi dữ liệu và tiết kiệm điện năng. Một giải pháp rất hữu hiệu đã được đề cập đến trước đây đó là Hợp tác cục bộ (local cooperation), giải pháp này có thể cải thiện cả hai vấn đề trên một cách hiệu quả: tăng tốc độ truyền tải và tiết kiệm điện năng cho các client.

Hợp tác cục bộ khai thác thực tế rằng các kết nối sóng ngắn hoạt động nhanh hơn và hiệu quả về năng lượng tiêu thụ hơn các công nghệ sóng dài khác. Bằng cách cho phép các BitTorrent client khác kết nối tới những thiết bị gần vị trí thông qua liên kết sóng ngắn, tạo ra bó các node hợp tác để chia sẻ nội dung của cùng torrent. Mục đích của phương pháp này là hạn chế tối đa các truyền dẫn thông qua liên kết sóng dài tốn kém và thiếu hiệu quả, và tận dụng tối đa các tài nguyên cục bộ.

4.1.1Kiến trúc ứng dụng MobTorrent

Ứng dụng MobTorrent chia ra làm 2 thành phần: MobTorrentUI và MobTorrentEngine.

MobTorrentUI là thành phần giao diện người sử dụng, cài đặt dưới dạng Midlet cho mobile hỗ trợ MIDP 2.0. Thành phần này chứa các gói:

Package Class Mô tả

data LocalizationSupport Hỗ trợ đa ngôn ngữ MEStatistics Định nghĩa các tham

số cho RMS

MTPreferences Định nghĩa các thiết đặt

MTRMSManager Quản lý (lưu trữ và đọc) các thiết đặt trong RMS

fileselectdialog MTFileSelectDialog Hộp thoại lựa chọn file

MTFileSelectDialogListene

r Handler nắm bặt sự kiện trong hộp thoại lựa chọn file

network MTUpdateManager Quản lý tự động cập nhật

ảnh cho giao diện ứng dụng

ui MTUIManager Quản lý giao diện

người dùng của ứng dụng

MobTorrentMidlet Midlet chính của chương trình MIDP

… Các form, cửa sổ

giao diện của chương trình

MobTorrentEngine là lõi của ứng dụng, thực thi giao thức BitTorrent và quản lý mọi thành phần của ứng dụng. Engine này bao gồm các gói:

Package Class Mô tả

Bencode MTBencode Định nghĩa bộ giải mã

Bencode, sử dụng để đọc các metadata của file .torrent.

MTBencodedDictionary Định nghĩa từ điển đã được giải mã

MTBencodedDictionaryE

ntry Định nghĩa entry trong từ điển đã giải mã

MTBencodedDictionayInt (adsbygoogle = window.adsbygoogle || []).push({});

eger Định nghĩa các kiểu giá trị đã được giải mã

MTBencodedDictionayList MTBencodedDictionayStri ng

(log) lúc chạy ứng dụng

Settings MTErrorCodes Định nghĩa các mã lỗi runtime của chương trình

Preferences Các thiết đặt cơ bản cho chương trình: VD cổng lắng nghe, địa chỉ cục bộ…

Tools Comparator So sánh hai đối

tượng Object

NetTools Chứa các công cụ hỗ

trợ các thao tác mạng VectorSorter Sắp xếp các thành

phần trong đối tượng Vector của Java

SHA1 SHA1 Mã hóa SHA1

TorrentEngine MTBitfield Đối tượng sử dụng để đánh dấu các mảnh của torrent đã download.

MTFile Đối tượng file

MTFileFragment Phân mảnh file MTFileManager Quản lý file

MTNetworkManager Quản lý kết nối mạng MTNetworkStatusManag

er Quản lý trạng thái mạng

MTOpenTorrentResult Lưu kết quả mở torrent

MTPeer Đối tượng Peer MTPeerConnection Quản lý kết nối tới

các Peer

MTPiece Đối tượng mảnh, là

thành phần nhỏ nhất được trao đổi giữa các Peer

MTPieceToDownload Chứa các mảnh được đánh dấu để

download

MTStringFormatter Chứa các hàm định dạng String cho các thông điệp trong giao thức

MTTorrent Định nghĩa đối tượng Torrent, là đối tượng chính trong ứng dụng, với các hàm thư viện được sử dụng trong hầu hết các hoạt động của torrent. MTTorrentManager Quản lý các sự kiện/hoạt động của tất cả các torrent trong ứng dụng. Ngoài ra còn quản lý cả giao diện người dùng.

MTTorrentObserver Là giao diện (interface), định nghĩa giao diện đối tượng theo dõi các trạng thái của chương trình

MobTorrent Midlet

RMSManager

LocalizationSupport

MTUIManager MTListTorrent (adsbygoogle = window.adsbygoogle || []).push({});

MTTorrentManager

Restore Setting from RMS

Init Localization Support

Create

Create Callback [command] Waiting for [command]

Create

MTNetworkManager

Create

MTTracker Đối tượng Tracker

Statistics Thống kê

4.1.2Hoạt động của MobTorrent

Phần này mô tả qua các sơ đồ hoạt động của ứng dụng MobTorrent hướng người phát triển, giúp thấy được tổ chức của các class, và luồng điều khiển của chương trình.

Khởi tạo chương trình:

Ban đầu lúc khởi tạo chương trình, Midlet MobTorrent sẽ được gọi, sử dụng RMSManager để khôi phục lại các thiết đặt của chương trình được lưu trong bộ nhớ RMS của mobile. Sau đó, khởi tạo Localization Support để sử dụng gói ngôn ngữ hỗ trợ.

Tiếp đến, khởi tạo đối tượng quản lý giao diện chính – MTUIManager như đã mô tả ở phần trên. MTUIManager tạo ra đối tượng MTListTorrent khi người dùng đã tạo ra danh sách các torrent được chấp nhận (không có lỗi). MTListTorrent gọi lại các hàm callback phụ thuộc vào command theo các thao tác của người dùng trên menu.

MTUIManager cũng tạo ra đối tượng MTTorrentManager là đối tượng chính quản lý thực thi BitTorrent. Trong quá trình khởi tạo, MTTorrentManager tạo ra MTNetworkManager để quản lý mạng.

Download torrent:

MTTorrentManager MTBencode MTTorrent MTPiece MTFile MTFileManager MTTracker Connection MTTracker MTPeer MTPeer Connection Data to Bencode Create Create Manage Setup Setup Setup Setup Create Create Create Create Init Init

Tiến trình download torrent bắt đầu khi người dùng lựa chọn torrent và chọn Start. Lúc này MTUIManager nhận callback với command=start, và bắt đầu gọi MTTorrentManager thực hiện việc download.

MTTorrentManager tạo ra MTTorrent. MTTorrent lúc khởi tạo sẽ tạo ra các đối tượng: MTPiece, MTFile, MTPeer, MTTracker.

MTTorrentManager sử dụng MTBencode để đọc các thông tin từ metadata file .torrent, sau đó cài đặt những thông tin này vào các đối tượng MTPiece, MTFile, MTPeer, và MTTracker.

MTTorrentManager tạo ra MTFileManager để quản lý các thao tác trên đối tượng MTFile.

MTPeer tạo ra MTPeerConnection để nắm giữ kết nối tới Peer.

MTTracker tạo ra MTTrackerConnection để nắm giữ kết nối tới Tracker. 4.1.3Mô hình chức năng Hợp tác cục bộ

Command = Start

MTTorrentManager MTLocalCooperation MTLocalConnection MTLocalResource MTLocalNeighbor MTFileManager MTFile Init Callback Create Manage Manage Create Maintain

Scan/Waiting for Neighbor Waiting for torrent valid

Phần này mô tả bằng sơ đồ hoạt động của chức năng Hợp tác cục bộ sẽ được tích hợp vào ứng dụng MobTorrent. Chức năng này sẽ được tích hợp thành một phần trong kiến trúc tổng thể của ứng dụng MobTorrent, qua sơ đồ sẽ cho thấy mối liên hệ của các module trong kiến trúc chung.

Đối tượng MTTorrentManager sẽ khởi tạo ra đối tượng MTLocalCooperation khi người dùng xác nhận việc sử dụng chức năng hợp tác cục bộ.

MTLocalCooperation tạo ra đối tượng MTLocalConnection để dò các thiết bị trong phạm vi kết nối bluetooth, và tạo kết nối tới các Neighbor tham gia vào mạng. Ngay sau khi khởi tạo MTLocalConnection, MTLocalCooperation sẽ duy trì đối tượng MTLocalResource – đối tượng quản lý các tài nguyên được chia sẻ trên mạng. (adsbygoogle = window.adsbygoogle || []).push({});

MTLocalCooperation sẽ chờ cho đến khi có torrent được chấp nhận trong danh sách của mình và tạo ra các thông điệp thông báo về tài nguyên mới cho các Neighbor khác thông qua MTLocalConnection.

4.1.4Mô tả các Module

Để cài đặt chức năng Hợp tác cục bộ vào ứng dụng MobTorrent, yêu cầu phải cài đặt thêm một số các module hỗ trợ, tích hợp vào mô hình hiện tại của MobTorrent. Các module này được đặt tên bắt đầu bằng “Local” để phân biệt với các module khác trong chương trình, bao gồm:

Local Cooperation

Module quản lý các hoạt động/sự kiện chính của chức năng hợp tác cục bộ. Module này trong chương trình chạy ở luồng riêng rẽ, thực hiện các chức năng riêng trong mạng hợp tác cục bộ. Các chức năng này bao gồm:

o Thực thi giao thức:

Cài đặt các giao thức đã được trình bày cụ thể trong phần Giao thức ở chương 3.

o Tích hợp với mô hình ứng dụng sẵn có:

Module này phải đồng bộ các luồng dữ liệu, các kết nối cục bộ với các luồng dữ liệu, kết nối của hệ thống hiện tại, tránh các xung đột, cập nhật chính xác các thông tin về lưu lượng, dung lượng file, các phần đã tải xong, các phần còn thiếu…

o Quản lý các thành phần trong mạng hợp tác cục bộ:

Các thành phần trong mạng hợp tác cục bộ bao gồm: Các hàng xóm (Neighbor), các kết nối (Connection), các tài nguyên (Resource). Module này quản lý các luồng dữ liệu và mô hình hoạt động/chức năng của các thành phần trong mạng, thực thi đúng theo giao thức đã thiết kế.

Local Neighbor

Module quản lý thông tin về các hàng xóm (Neighbor), là các thiết bị di động gần nhau được tìm thấy qua kết nối bluetooth. Các thông tin được quản lý bao gồm: tên thiết bị (friendly-name), địa chỉ, kết nối. Các chức năng của module bao gồm:

o Thiết đặt các thông tin về Neighbor

o Truy xuất các thông tin về Neighbor

o Quản lý kết nối (socket) tới Neighbor này

Local Connection

Module quản lý các kết nối (Connection) trong mạng: từ thiết lập kết nối, sử dụng kết nối, đến đóng kết nối. Các kết nối này được thực thi với bluetooth, sử dụng các APIs của Java/MIDP, trong mô tả JSR-82. Các chức năng của module bao gồm:

o Quản lý kết nối bluetooth

o Cung cấp các phương thức khai thác kết nối

Module quản lý các tài nguyên (các torrent) mỗi Neighbor đang nắm giữ trong mạng hợp tác cục bộ. Các tài nguyên này chỉ được lưu giữ trong từng phiên thiết lập mạng hợp tác, bởi vì tính chất thay đổi nhanh, vào ra mạng liên tục của các Neighbor, nên danh sách các tài nguyên sẽ được bảo trì liên tục trong mỗi phiên sau khi thiết lập. Các chức năng bao gồm:

o Quản lý các tài nguyên

Mỗi Neighbor tham gia vào mạng sẽ gửi danh sách các tài nguyên mình có cho các nodes khác. Chức năng này cũng duy trì danh sách các tài nguyên có trong mạng được nắm giữ bởi các Neighbor khác. Danh sách này là các cặp [Neighbor-Torrent], cần phải được bảo trì một cách thường xuyên tại module này.

o Truy xuất tài nguyên

Node sẽ thường xuyên theo dõi danh sách các torrents đang được các Neighbor khác tải về. Chức năng này sẽ giúp giám sát việc trùng lặp nhu cầu download các tài nguyên trong mạng hợp tác.

4.1.5Mô tả các Class

Package Class Mô tả

TorrentEngine MTLocalCooperation Đây là thread thực thi module Local Cooperation với các hàm cài đặt các chức năng của module như đã mô tả ở trên.

MTLocalNeighbor Đây là class định nghĩa đối tượng LocalNeighbor, với các tham số về thông tin của Neighbor. Các phương thức của đối tượng cài đặt các chức năng của module Local Neighbor như đã mô tả.

MTLocalConnection Đây là class định nghĩa đối tượng Local Connection, quản lý tất cả mọi kết nối tới từng Neighbor trong (adsbygoogle = window.adsbygoogle || []).push({});

mạng. Các phương thức của đối tượng cài đặt các chức năng của module Local Connection như đã mô tả.

MTLocalResource Đây là class định nghĩa đối tượng Local Resource, quản lý tài nguyên nắm giữ bởi tất cả các Neighbor trong mạng. Các phương thức của đối tượng cài đặt các chức năng của module Local Resource như đã mô tả.

Một phần của tài liệu xây dựng mạng p2p cho di động (Trang 40 - 51)