Cài đặt ứng dụng theo mô hình Local Proxy

Một phần của tài liệu DỊCH vụ VIDEO THEO yêu cầu dựa TRÊN LOCAL PROXY MODEL (Trang 36)

4.2.1. Phân tích hệ thống

Mục đích của luận văn là xây dựng ứng dụng trên P2P, nhưng tương tác giữa máy khách và máy chủ video vẫn giữ nguyên như trong Bảng 1. Ứng dụng được thực hiện theo mô hình trong Hình 3. Module Client không thay đổi, module máy chủ video là không cần thiết. Một module Local Streaming Server sẽ được cài đặt trên cùng máy Client, nó tiếp nhận tất cả các yêu cầu từ module Client như là 1 máy chủ streaming cục bố, nhưng chia sẻ thông qua mạng P2P với Local Streaming Server của các máy khác.

Để đơn giản, luận văn xin lựa chọn phương pháp sau:

- Trao đổi thông tin được tổ chức trong các tập tin và thư mục.

- Tập tin và thư mục được đồng bộ giữa các Local Streaming Server module sử dụng P2P hệ thống chia sẻ file như một cơ sở giao tiếp.

[2]Yêu cầu đối với Local Streaming Server và phần P2P của ứng dụng:

- Modules Local Streaming Server xử lý các yêu cầu từ modules Client tương ứng của mình.

- Khi một tệp video được gửi lên mạng, module Local Streaming Server có thể lưu trữ tệp video đó nếu thuộc phạm vi xử lý của mình.

- Modules Local Streaming Server luôn sẵn sàng và xử lý yêu cầu từ các Local Streaming Server khác.

- Không để mất dữ liệu khi một máy thoát ra khỏi mạng.

Bằng phương thức lưu trữ thông tin dưới cấu trúc file, tại mỗi máy sẽ có các thư mục chia sẻ:

34

Share: lưu các file [session_id]<filename>, nội dung file này chứa nội dung của file video có kèm thông tin mô tả (metadata) của video mà người dùng upload lên.

Dangky: lưu các file username.txt, nội dung file này chứa thông tin đăng ký của người dùng.

Logged-in: lưu các file [logged_in]<username>.txt thông tin trạng thái đăng nhập của người dùng.

Mỗi phiên giao dịch có 1 chỉ số session_id khác nhau, ta dùng hàm để lấy tham số session_id đặt vào trước tên của file video nhằm phân biệt 2 file video khi chúng có tên trùng nhau.

Trên cơ sở các chức năng trong Bảng 1, luận văn đã phát triển thêm và xây dựng ứng dụng dựa trên mô hình Local Proxy với các các chức năng như trong Bảng 2 và phân tích hoạt động của thành phần Local Streaming Proxy.

Bảng 2. Mô tả hoạt động của Local Streaming Server

STT Chức năng Hoạt động của Local Streaming Server

1 Đăng ký

- Tạo một file có dạng <username>.txt lưu trong thư mục Dangky bao gồm các thông tin: username, pass, họ tên, email…

2

Đăng nhập - Tìm file <username>.txt trong thư mục Dangky, nếu có, kiểm tra <pass> trong file <username>.txt

- Nếu đăng nhập thành công, lưu trạng thái đăng nhập thành file [logged_in]<username>.txt lưu vào thư mục Logged-in.

3 Upload - Tạo file [session_id]<filename> chứa nội dung của file video, thông tin mô tả (metadata) của file video và lưu vào thư mục Share.

4 Search - Đọc file, kiểm tra <metadata> của các file [session_id]<filename> có thông tin tìm kiếm?

35

+ Nếu không, gửi yêu cầu tìm kiếm lên mạng P2P.

5 Play Kiểm tra file [session_id]<filename> lưu trữ ở đâu.

+ Nếu file được lưu trữ tại Local Streaming Server thì nó sẽ thực hiện quá trình streaming video đến Client theo các giao thức ràng buộc về thời gian được thiết kế như trong mô hình Client – Server.

+ Ngược lại, nó sẽ gửi yêu cầu tìm kiếm file video lên mạng P2P. Khi xác định được địa chỉ lưu trữ file cần tìm, Local Streaming Server sẽ gửi yêu cầu xem video trực tiếp đến node lưu trữ video và thực hiện các giao thức ràng buộc về thời gian được thiết kế như trong mô hình Client–Server.

Khi áp dụng mô hình Local Proxy vào xây dựng ứng dụng, trên mỗi máy tính sẽ tích hợp 3 thành phần là modules Client, modules Local Streaming Server và thành phần P2P Agent.

36

4.2.2. Phân tích các module trong ứng dụng theo mô hình Local Proxy

Client module: Module này có thiết kế như thành phần Client trong mô hình Client-Server ở hình 5, phần mềm được cài đặt để trình chiếu video là VLC Player.

Client sẽ thực hiện việc gửi trực tiếp yêu cầu lên Local Streaming Server được cài đặt tại máy của Client. Sau đó Local Streaming Server sẽ thực hiện việc phân tích và đáp ứng yêu cầu cho Client.

- Local Streaming Server module: Trên mỗi máy tính sẽ cài đặt một module Local Streaming Server. Nó tương tác với module Client và cập nhật các dữ liệu cục bộ và xử lý yêu cầu của Client của chính nó. Local Streaming Server module đóng vai trò như một Streaming Server cục bộ. Chương trình được cài đặt để streaming video là Live555MediaServer.

- P2P Agent: Duy trì kết nối giữa các Local Streaming Server và chấp nhận yêu cầu chia sẻ, cập nhật, truyền tải dữ liệu trên mạng P2P thông qua các thao tác Put(filename), Get(filename), Search(filename), Delete(filename).

4.2.3. Giao thức sử dụng trong hệ thống P2P

Đối với hệ thống P2P, luận văn lựa chọn giao thức Kamdemlia

Các node Kademlia lưu trữ thông tin liên lạc của nhau để định tuyến các bản tin truy vấn. Với mỗi i sao cho 0≤ i ≤ 160, mọi node sẽ lưu trữ một danh sách về <địa chỉ IP, cổng UDP, Node ID> của các node nằm giữa 2i và 2i+1 tính từ bản thân nó. Ta gọi danh sách đó là các danh sách k-buckets. Mỗi k-bucket lưu trữ không quá k liên lạc với các node. Và phải có cơ chế quản lý thay thế và xóa liên lạc để tối ưu hóa khả năng duy trì liên lạc của danh sách k-bucket.

Kademlia xây dựng hệ thống tìm kiếm và lưu trữ <khóa, giá trị>. Các khóa sử dụng 160 bit và được đưa ra nhờ một hàm băm của dữ liệu. Mỗi máy tính cá nhân có một node ID trong không gian 160 bit khóa và được đưa ra nhờ một hàm băm về địa chỉ IP của node. Các cặp <khóa, giá trị> được lưu trữ trên những node có ID gần với khóa nhất. Để định vị các node gần một ID cá nhân, Kademlia sử dụng thuật toán định tuyến đơn từ đầu đến cuối và sử dụng toán tử XOR để tính khoảng cách giữa 2 điểm.

37

Dựa trên giao thức Kademlia, luận văn xây dựng một mạng P2P gồm các Local Streaming Server của các Client được xếp theo một cấu trúc. Mỗi Local Streaming Server được gọi là một node. Mỗi node có một node ID để xác định vị trí của nó. Có một Node luôn trực tuyến trong mạng và khi các node muốn tham gia vào mạng nó sẽ kết nối đến Node này để xác định vị trí của mình trong mạng [2].

Các thao tác cơ bản mà giao thức Kademlia cung cấp là:

- Put(filename): Khi muốn Upload 1 file video lên mạng, Client sẽ gửi file video đó lên Local Streaming Server, Local Streaming Server sẽ xử lý thông tin nhận được bằng cách tạo file [session_id]<filename>, tiếp theo nó băm tên file [session_id]<filename> để xác định vị trí các node sẽ chịu trách nhiệm lưu trữ file này, sau đó đưa file lên mạng P2P bằng phương thức Put(filename) theo thuật toán của Kademlia.

- Get(filename): Client muốn lấy nội dung file [session_id]<filename>, nó sẽ gửi tên file lên Local Streaming Server. Local Streaming Server sẽ xử lý bằng cách băm tên file để xác định sẽ tìm kiếm file ở node nào trên mạng P2P theo giao thức Kademlia, sau đó tìm kiếm và lấy về từ P2P của Local Streaming Server khác bằng thao tác Get(filename) và gửi lại cho Client.

- Search (keyword): Client gửi từ khóa cần tìm kiếm lên Local Streaming Server, Local Streaming Server xử lý bằng cách băm thông tin nhận được để xác định sẽ tìm kiếm ở node nào trên mạng P2P theo giao thức Kademlia, sau đó tìm kiếm thông tin trong <metadata> của các file [session_id]<filename> thông qua thao tác Search(keyword) và trả lại cho Client danh sách tên file video.

- Delete (filename): Client muốn yêu cầu xóa nội dung file nào đó bằng cách gửi tên file cần xóa lên Local Streaming Server. Local Streaming Server sẽ xử lý bằng cách băm tên file đó để xác định sẽ tìm kiếm file tại node nào, sau đó sẽ tìm kiếm từ P2P của các Local Streaming Server khác, nếu tìm thấy sẽ thực hiện thao tác Delete(filename) và gửi lại thông báo cho Client.

38

4.3. Thiết kế chi tiết các chức năng của ứng dụng theo mô hình Local Proxy Tương ứng với các chức năng cơ bản được liệt kê ở Bảng 2, luận văn xin đưa Tương ứng với các chức năng cơ bản được liệt kê ở Bảng 2, luận văn xin đưa ra thiết kế chi tiết các chức năng của ứng dụng theo mô hình Local Proxy.

Chức năng Đăng ký/Đăng nhập vào hệ thống nhằm mục đích quản lý người sử dụng hệ thống. Hệ thống sẽ phân quyền sử dụng đối với từng nhóm người dùng khác nhau. Với các tài khoản trả phí được sử dụng tất cả các chức năng của hệ thống, các tải khoản không trả phí sẽ bị giới hạn một số chức năng.

4.3.1. Chức năng Đăng ký

Hình 8. Quy trình Đăng ký

39

Bảng 3. Các bước Đăng ký tài khoản người dùng mới

Bước Mô tả

1 - Người dùng nhập thông tin đăng ký bao gồm các trường username, pass, họ tên, email … tại Client.

- Client gửi yêu cầu đăng ký lên Local Streaming Server.

2 - Local Streaming Server chấp nhận yêu cầu, kiểm tra file <username>.txt có tại máy không thông qua thao tác Search(filename) trong thư mục Dangky.

+ Nếu có, thông báo cho Client là username này đã có người đăng ký rồi. + Nếu không, nó sẽ gửi yêu cầu tìm kiếm lên P2P Agent

3 - P2P Agent tìm kiếm thông tin người dùng trong mạng P2P thông qua thao tác Search (filename).

+ Nếu kết quả tìm kiếm là có, nó sẽ trả về thông báo cho Client là username này đã có người đăng ký rồi.

+ Nếu kết quả tìm kiếm là không có, nó sẽ lưu thông tin đăng ký của người dùng thành file <username>.txt vào thư mục Dangky.

4 - Trong trường hợp username chưa có người đăng ký, Local Streaming Server sẽ gửi yêu cầu đăng ký lên P2P Agent và thông báo cho Client tài khoản người dùng đã được đăng ký thành công .

- P2P Agent tiến hành sao lưu thông tin đăng ký của người dùng vào mạng P2P.

40 4.3.2. Chức năng Đăng nhập

Hình 9. Quy trình Đăng nhập

Quy trình Đăng nhập được thực hiện như sau:

Bảng 4. Các bước Đăng nhập

Bước Mô tả

1 - Người dùng nhập username, pass để đăng nhập vào hệ thống tại Client. - Client gửi yêu cầu đăng nhập lên Local Streaming Server.

2 - Local Streaming Server chấp nhận yêu cầu, kiểm tra tại máy xem <username>.txt đã tồn tại trên hệ thống chưa thông qua thao tác search(filename) trong thư mục Dangky.

+ Nếu có, nó tiến hành đọc file, kiểm tra pass trong file <username>.txt có đúng không. Nếu đúng pass, nó sẽ lưu trạng thái đăng nhập của người

41

dùng thành file [logged_in]<username> vào thư mục Logged-in, tiếp theo nó sẽ gửi trạng thái đăng nhập lên P2P Agent, sau đó thông báo đăng nhập thành công cho Client. Nếu sai pass, nó sẽ thông báo cho Client là đăng nhập không thành công vì sai pass.

+ Nếu không có, nó sẽ gửi yêu cầu tìm kiếm lên P2P Agent.

3 - P2P Agent kiểm tra xem file <username>.txt có trên P2P không thông qua thao tác search(filename)

+ Nếu có, nó tiến hành đọc file, kiểm tra pass trong file <username>.txt có đúng không. Nếu đúng pass, Local Proxy lưu trạng thái đăng nhập của người dùng thành file [logged_in]<username> vào thư mục Logged-in, sau đó thông báo đăng nhập thành công cho Client. Nếu sai pass, Local Proxy sẽ thông báo cho Client là đăng nhập không thành công vì sai pass. + Nếu không, nó sẽ thông báo cho Client là tài khoản của người dùng chưa được đăng ký.

4 Client thông báo kết quả đăng nhập cho người dùng.

4.3.3. Chức năng Upload

42

Quy trình Upload video được thực hiện như sau: Bảng 5. Các bước Upload video

Bước Mô tả

1 - Người dùng chọn file video muốn Upload, nhập thông tin mô tả (metadata) cho file video và thực hiện chức năng Upload tại Client. - Client gửi yêu cầu chia sẻ video lên Local Streaming Server.

2 - Local Streaming Server chấp nhận yêu cầu, tạo file [session_id]<filename> lưu vào thư mục Share, nội dung file này chứa nội dung của file video có kèm thông tin mô tả (metadata) của file video.

- Local Streaming Server gửi thông tin lên P2P Agent.

3 - P2P Agent nhận thông tin đẩy file video lên mạng P2P thông qua thao tác Put(filename).

4.3.4. Chức năng Search

43

Quy trình tìm kiếm video được thực hiện như sau:

Bảng 6. Các bước tìm kiếm video

Bước Mô tả

1 - Người dùng nhập từ khóa cần tìm kiếm và thực hiện chức năng Search tại Client.

- Client gửi yêu cầu tìm kiếm lên Local Streaming Server.

2 - Local Streaming Server chấp nhận yêu cầu, đọc các file, kiểm tra trong <metadata> của các file [session_id]<filename> trong thư mục Share tại máy có chứa thông tin tìm kiếm không?

+ Nếu có, trả về danh sách tên file video cho Client.

+ Nếu không, Local Streaming Server sẽ băm thông tin tìm kiếm để xác định xem sẽ tìm kiếm thông tin tại các node nào theo giao thức Kademlia, sau đó gửi yêu cầu tìm kiếm lên P2P Agent.

3 - P2P Agent tìm kiếm trên mạng P2P xem trong <metadata> của các file [session_id]<filename> có thông tin tìm kiếm không?

+ Nếu có, Local Streaming Server trả về cho Client danh sách tên file video.

+ Nếu không, Local Streaming Server trả về thông báo không tìm thấy thông tin cần tìm.

44 4.3.5. Chức năng Play

Hình 12. Quy trình xem video

Quy trình xem video được thực hiện như sau:

Bảng 7. Các bước xem video

Bước Mô tả

1 - Người dùng chọn 1 file video muốn xem từ danh sách video hoặc từ danh sách tên file video của kết quả Search.

- Client gửi yêu cầu xem video đến Local Streaming Server.

2 - Local Streaming Server nhận yêu cầu, sau đó tìm kiếm file [session_id]<filename> xem có tại máy không?

+ Nếu có, nó sẽ thực hiện quá trình streaming video về cho Client theo các giao thức ràng buộc về thời gian được thiết kế như trong mô hình Client-Server.

45

+ Nếu không, nó sẽ gửi yêu cầu tìm kiếm lên P2P Agent.

3 - P2P Agent nhận yêu cầu, tìm kiếm trên mạng P2P xem file [session_id]<filename> được lưu trữ tại node nào thông qua thao tác search (filename). Sau đó trả về cho Local Streaming Server địa chỉ của node lưu trữ file video.

4 - Khi biết được địa chỉ node lưu trữ file video, Local Streaming Server sẽ gửi yêu cầu xem video trực tiếp đến node đó. Lúc này kết nối giữa 2 máy được thiết lập, quá trình streaming video giữa node lưu trữ video về Client theo các giao thức ràng buộc về thời gian được thiết kế như trong mô hình Client–Server.

5 - Khi các frame về Client sẽ được lưu trong vùng đệm và nội dung các frame sẽ được giải nén, giả mã và hiển thị cho người sử dụng thông qua chương trình xem video VLC Player.

46

CHƯƠNG 5 – CÀI ĐẶT CHƯƠNG TRÌNH VÀ ĐÁNH GIÁ THỬ NGHIỆM 5.1. Cài đặt chương trình

Ngôn ngữ lập trình: C#. Giao thức sử dụng để giao tiếp giữa các máy trong mạng P2P là giao thức Kademlia.

Những thành phần có sẵn, luận văn sử dụng lại là: Giao thức RTSP đã có ở mô hình Client – Server và mã nguồn mở của giao thức Kalemlia. Ngoài ra, luận văn sử dụng phần mềm VLC Player để giải nén, giải mã và hiển thị video, phần mềm Live 555MediaSerer để nén, mã hóa và streaming video.

Tác giả đã xây dựng, cài đặt các module Client, Local Streaming Server và xây dựng giao diện người dùng với các chức năng: Đăng ký, Đăng nhập, Upload, Search, Play. Thành phần P2P Agent được xây dựng, cài đặt để kết nối ứng dụng

Một phần của tài liệu DỊCH vụ VIDEO THEO yêu cầu dựa TRÊN LOCAL PROXY MODEL (Trang 36)