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