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

Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server

48 10 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

Tiêu đề Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server
Tác giả Dương Hữu Tùng
Người hướng dẫn PGS.TS Hà Quốc Trung
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Khoa Học Kỹ Thuật Máy Tính Và Truyền Thông
Thể loại Luận văn thạc sỹ
Năm xuất bản 2014
Thành phố Hà Nội
Định dạng
Số trang 48
Dung lượng 465,79 KB

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

Cấu trúc

  • MỤC LỤC

  • CHƯƠNG 1

  • CHƯƠNG 2

  • CHƯƠNG 3

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

Nội dung

Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server Nghiên cứu ứng dụng mô hình P2P vào các ứng dụng client server luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp

T Ổ NG QUAN

Các ứng dụng client-server ngày càng phổ biến nhưng gặp khó khăn khi xử lý dữ liệu lớn và tính toán phức tạp, đặc biệt trong video streaming khi số lượng người dùng tăng cao, dẫn đến quá tải máy chủ và độ trễ Video streaming đã trở thành nhu cầu thiết yếu với khoảng 33,5 tỷ video được xem tại Mỹ vào tháng 12-2012, cho thấy sự phát triển mạnh mẽ của ứng dụng này Video, một loại dữ liệu đa phương tiện quan trọng, đã trải qua quá trình chuyển đổi từ tín hiệu analog sang số hóa nhờ vào sự tiến bộ của công nghệ điện tử và máy tính Sự bùng nổ Internet trong những năm 90 đã định hình cách thức truyền thông video qua mạng chuyển mạch gói, nhưng cũng đối mặt với thách thức về băng thông, độ trễ và mất gói tin, cùng với việc chia sẻ tài nguyên mạng giữa các luồng và triển khai phương thức truyền thông một-nhiều.

Từ đó đã có rất nhiều giải pháp được nghiên cứu và phát triển nhằm khắc phục những vấn đề này

Video Streaming là quá trình truyền tải dữ liệu video liên tục qua Internet từ nguồn đến đích Công nghệ này thường được ứng dụng trong giải trí và giáo dục, cho phép lưu trữ video và bài học Người dùng có thể tìm kiếm, liệt kê và phát lại video theo yêu cầu mà không cần tải toàn bộ dữ liệu, tuy nhiên, việc xử lý các tập tin video chất lượng cao với dung lượng lớn có thể tốn nhiều thời gian.

Video Streaming tiết kiệm thời gian cho người dùng nhờ vào công nghệ giải nén và hiển thị dữ liệu đồng thời, cho phép video được tải về trong khi vẫn xem Quá trình này được gọi là kỹ thuật đệm (buffering).

+ Thay vì được gửi một lần duy nhất, dữ liệu video streaming sẽđược chia thành từng gói nhỏ, sau đó liên tục truyền những phần được chia ra

Ban đầu, bên nhận sẽ thu thập một phần nhỏ dữ liệu video và hiển thị những đoạn video đã nhận được Trong quá trình này, các gói dữ liệu còn lại sẽ được tải về lần lượt để đảm bảo việc hiển thị tiếp theo diễn ra kịp thời.

Video Streaming được thể hiện dưới hai dạng:

Video theo yêu cầu (on demand) là các video được lưu trữ trên máy chủ đa phương tiện và được truyền đến người dùng khi có yêu cầu Người dùng có quyền hiển thị và thực hiện các thao tác như tua, dừng, hay quay lại với các đoạn video này.

Real-time video (live event) refers to video data that is directly transformed from real-time data sources, such as cameras and microphones, which transmit live video content.

Đảm bảo chất lượng dịch vụ cho các ứng dụng video streaming là một thách thức quan trọng Do đó, tôi đã chọn nghiên cứu đề tài "Ứng dụng mô hình P2P vào các ứng dụng client-server" Đề tài này tập trung vào việc kết hợp hai giao thức peer-to-peer và client-server thông qua local proxy để cải thiện hiệu suất và trải nghiệm người dùng trong các ứng dụng streaming video.

Luận văn này được chia các phần như sau:

Chương 2: Cơ sở lý thuyết

Chương này cung cấp cái nhìn tổng quan về mô hình client-server và peer-to-peer, đồng thời nêu ra các vấn đề cần giải quyết và định hướng giải pháp, tạo nền tảng cho việc thực hiện các chương tiếp theo.

Chương 3: Thiết kếứng dụng video streaming sử dụng local proxy

Bài viết này nghiên cứu ưu nhược điểm của các mô hình client-server và peer-to-peer, đồng thời đề xuất giải pháp sử dụng mô hình local proxy, kết hợp những lợi ích của cả hai mô hình Mục tiêu của luận văn là đưa ra giải pháp triển khai ứng dụng video streaming dựa trên mô hình local proxy.

Mặc dù đã nỗ lực hết mình và nhận được sự hỗ trợ tận tình từ Thầy giáo hướng dẫn, nhưng do trình độ còn hạn chế và đề tài quá rộng, em không thể tránh khỏi những thiếu sót Em rất mong nhận được sự chỉ dẫn và đóng góp từ các Thầy cô để luận văn có thể hoàn thiện hơn.

CƠ SỞ LÝ THUY Ế T

Mô hình client/server

Mô hình client/server là một kiến trúc phổ biến trong các hệ thống phân tán, trong đó các tiến trình client gửi yêu cầu truy xuất tài nguyên tới các tiến trình server Mỗi server quản lý một tập hợp tài nguyên nhất định, và một số tiến trình có thể đóng vai trò vừa là client vừa là server khi cần truy cập tài nguyên chung Khi một tiến trình client phát đi yêu cầu hợp lệ, server sẽ thực hiện hành động tương ứng và gửi phản hồi về cho client.

Mô hình client/server là phương pháp hiệu quả để chia sẻ tài nguyên trong các hệ thống phân tán, có thể được triển khai trên nhiều nền tảng phần cứng và phần mềm khác nhau Các máy tính chạy các tiến trình client/server rất đa dạng và không cần phân biệt rõ ràng; cả tiến trình client và server đều có thể hoạt động trên cùng một máy Hơn nữa, một tiến trình server có khả năng tận dụng dịch vụ từ một server khác, tạo ra sự linh hoạt trong việc quản lý tài nguyên.

Hình 2.1Mô hình client server

Mô hình truyền tin client/server hướng tới việc cung cấp dịch vụ Quá trình trao đổi dữ liệu bao gồm:

1 Truyền một yêu cầu từ tiến trình client tới tiến trình server

2 Yêu cầu được server xử lý

3 Truyền đáp ứng cho client

Mô hình truyền tin này bao gồm việc gửi hai thông điệp cùng với một phương thức đồng bộ hóa giữa client và server Server cần nhanh chóng nhận diện thông điệp yêu cầu ngay khi nhận được, trong khi đó, yêu cầu từ client sẽ bị tạm dừng, buộc client phải chờ cho đến khi nhận được phản hồi từ server ở bước ba.

Mô hình client/server thường được cài đặt dựa trên các thao tác cơ bản là gửi (send) và nhận (receive)

Hình 2.2 Quá trình gửi một bản tin của mô hình client server

Quá trình giao tiếp client và server có thể diễn ra theo một t rong hai chế độ: bị phong tỏa (blocked) và không bị phong tỏa (non-blocked)

Chếđộ bị phong tỏa (blocked):

Trong chế độ phong tỏa, khi tiến trình client hoặc server thực hiện lệnh gửi dữ liệu (send), tiến trình sẽ tạm ngừng cho đến khi nhận được lệnh nhận dữ liệu (receive).

Khi một tiến trình (client hoặc server) phát lệnh nhận dữ liệu nhưng chưa có dữ liệu được gửi tới, tiến trình đó sẽ tạm ngừng thực thi cho đến khi nhận được dữ liệu.

Chế độ không bị phong tỏa (non-blocked)

Trong chế độ này, khi tiến trình client hoặc server gửi lệnh truyền dữ liệu, quá trình thực thi vẫn diễn ra mà không cần quan tâm đến việc có tiến trình nào nhận dữ liệu hay không.

Khi tiến trình phát lệnh nhận dữ liệu, nó sẽ tiếp nhận dữ liệu hiện có mà không bị ảnh hưởng bởi việc có tiến trình nào gửi dữ liệu tiếp theo hay không, và quá trình thực thi của tiến trình vẫn tiếp tục diễn ra.

2.1.2 Các kiến trúc Client/Server

Kiến trúc client/server phổ biến nhất là kiến trúc hai tầng, trong đó có một tầng trình diễn và một tầng lưu trữ dữ liệu Tầng trình diễn thường là client, cung cấp nhiều trạm làm việc với giao diện thống nhất, trong khi tầng lưu trữ dữ liệu là server, chịu trách nhiệm truyền thông tin và quản lý dữ liệu tập trung.

Hầu hết các ứng dụng Internet như email, telnet, ftp và Web đều thuộc loại ứng dụng hai tầng Nhiều lập trình viên phát triển ứng dụng client/server thường lựa chọn kiến trúc này để tối ưu hóa hiệu suất và tính khả dụng.

Trong ứng dụng hai tầng truyền thống, khối lượng công việc chủ yếu được xử lý ở phía client, trong khi server chỉ kiểm soát luồng dữ liệu, dẫn đến hiệu năng giảm do tài nguyên hạn chế và tăng khối lượng dữ liệu truyền qua mạng Khi toàn bộ ứng dụng chạy trên một PC, nó cần yêu cầu nhiều dữ liệu trước khi trả kết quả cho người dùng, làm giảm hiệu suất mạng Ngoài ra, việc bảo trì ứng dụng cũng gặp khó khăn, vì bất kỳ thay đổi nhỏ nào đều yêu cầu cập nhật toàn bộ ứng dụng client và server.

Hình 2.3 Kiến trúc Client Server 2 tầng 2.1.2.2 Client/Server ba tầng

Để khắc phục những vấn đề của kiến trúc Client/Server hai tầng, chúng ta có thể mở rộng thành kiến trúc ba tầng Kiến trúc ba tầng bổ sung một tầng mới, giúp tách biệt việc xử lý dữ liệu ở vị trí trung tâm, từ đó nâng cao hiệu suất và khả năng mở rộng của hệ thống.

Hình 2.4 Kiến trúc Client Server 3 tầng

Kiến trúc ba tầng chia ứng dụng thành ba phần tách biệt về mặt logic: tầng trình diễn, tầng trung gian và tầng dữ liệu Tầng trình diễn bao gồm các giao diện đồ họa, trong khi tầng trung gian thực hiện các tác vụ xử lý Tầng dữ liệu lưu trữ thông tin cần thiết và thực hiện các lời gọi hàm để truy xuất dữ liệu Sự tách biệt này giữa chức năng xử lý và giao diện giúp tăng tính linh hoạt trong thiết kế ứng dụng, cho phép xây dựng và triển khai nhiều giao diện người dùng mà không cần thay đổi logic của ứng dụng.

Tầng thứ ba lưu trữ dữ liệu thiết yếu cho ứng dụng, bao gồm nhiều nguồn thông tin khác nhau như cơ sở dữ liệu Oracle, SQL Server và tài liệu XML.

Kiến trúc n-tầng được chia thành các tầng như sau:

- Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng

- Tầng logic trình diễn: xác định cách thức hiển thị giao diện người dùng và các yêu cầu của người dùng được quản lý như thế nào.

- Tầng logic tác nghiệp: mô hình hóa các quy tắc tác nghiệp

- Tầng các dịch vụ hạ tầng: cung cấp một chức năng bổ trợ cần thiết cho ứng dụng như các thành phần (truyền thông điệp, hỗ trợ giao tiếp).

Mô hình peer to peer

Hình 2.5 Mô hình mạng ngang hàng

Mạng máy tính ngang hàng (P2P) dựa vào sức mạnh tính toán và băng thông của các máy tham gia, thay vì tập trung vào một số lượng nhỏ máy chủ Công nghệ này cho phép kết nối các nút thông qua các kết nối ad hoc, giúp truyền tải trực tiếp mà không cần cơ sở hạ tầng cố định Mạng P2P hữu ích cho nhiều mục đích, bao gồm chia sẻ file âm thanh, video, dữ liệu số và truyền tải thời gian thực như giọng nói và video streaming.

Mạng P2P thuần túy không phân chia thành khách (client) và chủ (server), mà chỉ có các nút ngang hàng thực hiện cả hai chức năng Mô hình này khác với mô hình khách – chủ, nơi giao tiếp thường diễn ra với các máy chủ trung tâm Một ví dụ điển hình là việc truyền file giữa FTP Client và FTP Server, trong đó client khởi tạo quá trình download/upload, còn server tiếp nhận và phục vụ các yêu cầu đó.

Mạng ngang hàng cho phép tất cả các máy tham gia đóng góp tài nguyên như băng thông, lưu trữ và khả năng tính toán, làm tăng tổng thể khả năng của hệ thống Ngược lại, trong mô hình máy khách - chủ, khi số lượng máy chủ cố định, sự gia tăng số lượng máy khách sẽ dẫn đến giảm khả năng chuyển dữ liệu từ máy chủ tới từng máy khách.

Tính chất phân tán của mạng ngang hàng đảm bảo hoạt động ổn định ngay cả khi một số máy gặp sự cố, trái ngược với cấu trúc tập trung, nơi mà sự cố của máy chủ có thể làm ngưng trệ toàn bộ hệ thống.

2.2.2 Phân loại mạng ngang hàng

Mạng ngang hàng P2P được chia làm hai loại chính: mạng ngang hàng thuần túy và mạng ngang hàng lai ghép

Hình 2.6 Phân loại mạng ngang hàng 2.2.2.1 M ạng ngang hàng thuần túy

Mạng ngang hàng thuần túy được chia làm 2 loại: Mạng ngang hàng có cấu trúc và mạng ngang hàng không cấu trúc

Mạng ngang hàng không cấu trúc là loại mạng mà các liên kết giữa các nút được thiết lập ngẫu nhiên, giúp dễ dàng xây dựng khi các máy mới tham gia có thể kết nối với các máy đã có sẵn Khi tìm kiếm dữ liệu, yêu cầu sẽ được phát đi trên toàn mạng để tìm kiếm các máy chia sẻ Tuy nhiên, các nút trong mạng không có nhiều hiểu biết về nhau, chỉ nắm bắt thông tin qua Broadcast Do đó, mạng ngang hàng không cấu trúc không phải là lựa chọn tối ưu cho các ứng dụng cần sự liên kết chặt chẽ giữa các nút, như multicast.

M ạng ngang hàng có cấu trúc : Khắc phục nhược điểm của mạng không cấu trúc bằng cách sử dụng hệ thống DHT (Distributed Hash Table – Bảng băm phân tán)

Hệ thống này xác định liên kết giữa các nút mạng trong mạng phủ bằng một thuật toán cụ thể, đồng thời phân chia trách nhiệm dữ liệu cho từng nút Khi một máy định tuyến thông báo, nó chỉ cần áp dụng giao thức chung để xác định và liên lạc trực tiếp với nút mạng cần thiết, giúp việc tạo cây multicast trở nên dễ dàng và quản lý cây hiệu quả hơn Một số mạng ngang hàng nổi tiếng với cấu trúc này bao gồm Chord, CAN, Kademlia, Pastry và Tapestry.

2.2.2.2 M ạng ngang hàng lai ghép

Trong mô hình mạng ngang hàng lai ghép, có một server trung gian điều khiển hoạt động của mạng và lưu trữ chỉ mục thông tin về các nút cùng vị trí các cặp key – value Các nút trong mạng cần kết nối với server này để trao đổi thông tin, qua đó server sẽ tìm kiếm và cung cấp địa chỉ nút đích Quá trình trao đổi diễn ra trực tiếp giữa hai nút sau khi server cung cấp thông tin Việc triển khai truyền tin multicast trong mô hình này tương tự như mô hình proxy – base ALM, tuy nhiên nhược điểm lớn nhất là chi phí cao cho các server trung gian Một ứng dụng tiêu biểu cho mô hình mạng này là Napster.

So sánh mô hình P2P v ớ i mô hình Client/Server

Mạng ngang hàng cho phép các nút (PC) chia sẻ và đóng góp tài nguyên, bao gồm ổ cứng, CD-ROM và máy in Tất cả các nguồn tài nguyên này có thể được truy cập từ bất kỳ nút nào trong mạng, tạo ra sự kết nối và tối ưu hóa việc sử dụng tài nguyên.

- Các node đóng vai trò như cả

Client (truy vấn thông tin) và Server

- Dữ liệu được lưu trữ ở một Server trung tâm, tốc độ cao (Tốc độ truy cập thường lớn hơn so với mạng P2P)

Khi một máy client cần thông tin về thời gian, nó phải gửi yêu cầu theo tiêu chuẩn do server quy định Nếu yêu cầu được chấp nhận, server sẽ cung cấp thông tin mà client yêu cầu Mạng P2P và mô hình Client/Server đều có những ưu và nhược điểm riêng.

- Không cần server riêng, các client chia sẻ tài nguyên Khi mạng càng được mở rộng thì khả năng hoạt động của hệ thống càng tốt

- Dễcài đặt và bảo trì

- Thuận lợi cho việc chia sẽ file, máy in,

- Tốc độ truy cập nhanh

- Hoạt động với bất kì loại ứng dụng nào

- Sử dụng được với các ứng dụng chia sẻ CSDL

- Đáng tin cậy hơn (có server riêng)

- Mức độ an toàn cao nhất

- Không tốt cho các ứng dụng CSDL

- Cần server riêng (nghẽn cổ chai)

- Phức tạp trong việc bảo trì, duy trì hoạt động của mạng.

V ấn đề c ầ n gi ả i quy ế t

Hầu hết các ứng dụng và giao thức hiện nay được xây dựng trên kiến trúc client-server do tính đơn giản của nó Tuy nhiên, việc tính toán tập trung ở máy chủ tạo ra nút thắt cổ chai, đòi hỏi các giải pháp để cải thiện hiệu suất Kỹ thuật cân bằng tải và sao chép trong hệ thống phân tán giúp phân phối tải trên nhiều máy chủ, giảm bớt áp lực cho máy chủ chính Bộ nhớ đệm cũng là một phương pháp quan trọng, cho phép sao chép dữ liệu từ máy chủ về phía client, thường được sử dụng trong mô hình proxy Proxy đóng vai trò trung gian, nhận lệnh từ client và có thể cung cấp dữ liệu từ bộ nhớ đệm thay vì truy xuất trực tiếp từ máy chủ Tuy nhiên, các phương pháp này vẫn nằm trong khuôn khổ mô hình client-server, do đó không hoàn toàn giải quyết được vấn đề nút cổ chai của máy chủ.

Khi thiết kế ứng dụng theo kiến trúc client-server, cần xem xét sự tương tác giữa số lượng máy khách và máy chủ, vì nhiều khách hàng có thể truy cập cùng lúc Việc tập trung dữ liệu trên máy chủ gây ra khó khăn về đồng bộ hóa, nhân rộng, an ninh và kiểm soát truy cập Mô hình P2P giúp giải quyết những vấn đề này bằng cách phân phối khối lượng công việc trên các máy ngang hàng (peers) Sự thay đổi trong tương tác giữa các thành phần của hệ thống yêu cầu thiết kế giao thức và ứng dụng phức tạp hơn, từ việc chỉ tạo mối liên kết giữa máy khách và máy chủ sang việc xây dựng các kết nối phức tạp giữa các máy ngang hàng.

Kiến trúc P2P có khả năng cải thiện thông tin liên lạc và nâng cao hiệu suất xử lý Tuy nhiên, hiện tại, kiến trúc này chưa chú trọng đến việc tương tác giữa các máy ngang hàng, điều này tạo cơ hội cho việc kết hợp các mô hình mới.

Mô hình client-server được thiết kế để tương tác giữa các máy, trong khi mô hình P2P chủ yếu phục vụ cho lưu trữ, trao đổi dữ liệu và tính toán Hệ thống có thể kết hợp cả hai thành phần này, tạo ra các hệ thống phụ P2P Để phát triển hệ thống hiệu quả, cần giải quyết những vấn đề tồn tại hiện nay.

- Sựtương tác giữa cấu trúc client-server và hệ thống phụ P2P

- Áp dụng hệ thống với yêu cầu ứng dụng cụ thể[5].

Định hương g i ả i pháp

Hình 2.7 Mô hình Local Proxy

- Module client: tương tựnhư client trong mô hình client-server

- P2P agent: giao tiếp vơi các P2P agent khác qua mạng P2P

Module local proxy hoạt động như một server, tương tác với các module client mà không cần thiết kế lại Cần xây dựng module local proxy để tương tác với các local proxy khác qua mạng P2P Giao tiếp giữa các P2P agent có thể thực hiện thông qua hệ thống chia sẻ file, nhưng để đạt hiệu quả cao hơn, nên thiết kế cấu trúc dữ liệu phù hợp với ứng dụng và giao thức trong hệ thống P2P Mô hình P2P cho phép giao tiếp giữa các client mà không cần một server trung gian.

2.5.2 Mô hình share cache model

Hình 2.8 Mô hình share cache model

Trong mô hình cache dùng chung, việc tích hợp P2P và bộ phận cache vào hệ thống giúp giảm thiểu hiện tượng thắt cổ chai và cải thiện vấn đề băng thông Hình 2.8 minh họa các thành phần của mô hình này.

Trong mô hình này, máy chủ lưu trữ toàn bộ thông tin phần mềm và phân phối cho các máy khách dựa trên yêu cầu thực tế Kênh truyền tải thông tin là kết nối giữa máy chủ và máy khách Đặc biệt, mô hình đề xuất bổ sung bộ nhớ cache cho máy khách, với hai chức năng chính: sao lưu tất cả dữ liệu được truyền và cung cấp thông tin về dữ liệu đang được sao lưu trong cache đến mọi điểm.

Thuật toán thay Page đặc biệt quản lý dữ liệu trong cache, cho phép máy khách tối ưu hóa hiệu quả với hai tác vụ chính: giới hạn kích thước tổng thể của dữ liệu trong cache và đánh giá mức ưu tiên cho dữ liệu cần được lưu trữ.

Mô-đun P2P trong mô hình này cho phép máy khách thiết lập liên kết P2P để trao đổi dữ liệu, giúp dữ liệu cache không chỉ được sử dụng bởi máy khách hiện tại mà còn bởi các máy khách khác Khi cần truy cập dữ liệu, máy khách sẽ kiểm tra dữ liệu tại máy địa phương; nếu không tìm thấy, nó sẽ gửi yêu cầu đến máy chủ để tìm kiếm thông tin Máy chủ sẽ truy vấn các máy khách khác và đưa ra phương án tối ưu để lấy dữ liệu Điểm khác biệt lớn nhất giữa mô hình cache dùng chung và mô hình P2P là việc tìm kiếm thông tin thông qua bảng hash phân tán, cho phép tất cả các máy tham gia truy cập giá trị của một khóa bất kỳ Mặc dù có nhiều thuật toán cài đặt DHT như Chord, Tapestry và CAN, nhưng chúng đều phức tạp và có thể dẫn đến tình trạng dữ liệu không truy cập được khi một số thành phần offline.

Mô hình chia sẻ cache mà tôi đề xuất sử dụng một phương thức cài đặt tập trung gọi là "bộ điều hướng dữ liệu" Mô-đun này được triển khai trên máy chủ để thu thập thông tin về dữ liệu trong cache từ bất kỳ máy khách nào thông qua kết nối máy chủ - máy khách, đồng thời thu thập thông tin về kết nối P2P của các máy khách Dựa trên thông tin thu thập được, bộ điều hướng dữ liệu có khả năng hướng dẫn máy khách cách lấy thông tin cụ thể một cách hiệu quả nhất.

THI Ế T K Ế Ứ NG D Ụ NG VIDEO STREAMING S Ử D Ụ NG

Gi ớ i thi ệ u bài toán

Hiện nay, ứng dụng client-server ngày càng phổ biến, nhưng khi xử lý dữ liệu lớn hoặc các tác vụ phức tạp như streaming audio và video, mô hình này gặp nhiều hạn chế, đặc biệt khi số lượng người dùng đồng thời tăng, dẫn đến quá tải máy chủ và trễ tín hiệu Để đảm bảo chất lượng dịch vụ cho các ứng dụng này, việc nghiên cứu và áp dụng đồng thời hai giao thức peer-to-peer và client-server thông qua local proxy là cần thiết Phần 3.2 của bài viết sẽ trình bày cách cài đặt một hệ thống streaming video đơn giản sử dụng giao thức client-server.

3.2 Mô tả video streaming client server

Trong mô hình client-server, quá trình streaming diễn ra khi các client nhận thông tin từ một server và xử lý các dữ liệu này; đồng thời, server cung cấp các thông tin mà client yêu cầu.

Hình 3.1 Mô hình một client và một server

Cả hai mô đun client và server được xây dựng trên kiến trúc đa luồng, giúp duy trì kết nối trong quá trình xử lý các luồng video Phương pháp này cho phép client truy xuất thông tin từ nhiều server khác nhau cùng lúc, đồng thời thực hiện các xử lý tại chỗ cho việc giải mã và mã hóa trong các ứng dụng VOD (Video On Demand).

Server On Demand có khả năng thu thập hình ảnh từ camera và các thiết bị khác đồng thời, cung cấp video cho các server cần thiết Việc tiếp cận đa luồng giúp hạn chế sự cố và có thể khóa toàn bộ ứng dụng khi gặp vấn đề với một mô-đun nào đó.

Server được triển khai trên kiến trúc đa luồng Server bao gồm một số luồng chính sau:

- một số luồng thu thập dữ liệu (trực tiếp từ các camera hoặc từcác đoạn phim ghi sẳn trên máy tính)

- một số luồng mã hóa thông tin cho phù hợp nhu cầu ứng dụng (ví dụ VOD)

- một luồng quản lí các kết nối, các yêu cầu kết nối, các yêu cầu video của các client

Khi hệ thống khởi động, nó ở trạng thái chờ kết nối từ các client Khi có kết nối, server sẽ bắt tay với client và tạo một luồng mới để xử lý yêu cầu Quá trình này bao gồm ba chức năng chính: init, lấy dữ liệu và gửi dữ liệu Chức năng init đảm nhận việc bắt tay và tạo luồng mới cho client, sau đó tiếp tục với giai đoạn truyền dữ liệu.

Display_fra me server client

Hình3.2 Mô hình kiến trúc server-client

Khách hàng có khả năng kết nối với nhiều luồng video khác nhau, nhưng chỉ có thể hiển thị thông tin từ một luồng tại một thời điểm Hệ thống cho phép xử lý và giải mã trên các kênh một cách độc lập khi cần thiết Mỗi tác vụ của khách hàng được thiết lập trong một luồng riêng biệt.

Trong bài viết này, chúng ta sẽ khám phá cách kết nối và tương tác với server qua dòng lệnh Người dùng có thể khởi tạo kết nối, nhận và hiển thị dữ liệu từ server Để kết nối, người dùng có thể chọn kết nối vô danh hoặc sử dụng tài khoản cá nhân thông qua tên đăng nhập và mật khẩu Để đơn giản hóa quá trình triển khai, client sử dụng giao diện dòng lệnh (CLI), được triển khai trong một luồng riêng biệt, cho phép người dùng lựa chọn các kênh xem dữ liệu do server cung cấp.

Mô t ả video streaming s ử d ụ ng P2P

P2P video streaming hoạt động mà không cần sự hỗ trợ từ các bộ định tuyến Internet, giúp tiết kiệm chi phí và dễ dàng triển khai Mỗi peer vừa đóng vai trò là client vừa là server, cho phép tải xuống video và đồng thời chia sẻ video đó với các peer khác Phương pháp truyền tải này giảm đáng kể nhu cầu băng thông của nút nguồn, với mục tiêu tối đa hóa chất lượng phân phối nội dung cho các peer Hệ thống cũng tổng hợp nguồn tài nguyên từ các peer và có khả năng mở rộng cho bất kỳ số lượng điểm tham gia nào.

Mỗi peer có khả năng cung cấp nội dung cho các peer khác đã kết nối trong lớp của nó, tận dụng băng thông từ các điểm peer tham gia.

Việc cung cấp dịch vụ P2P streaming video cho đông đảo người xem đặt ra những thách thức công nghệ phức tạp đối với hệ thống và tài nguyên mạng.

P2P video streaming tập trung vào việc phân phối hiệu quả nội dung audio và video, cho phép các peer nhận và phát dữ liệu ngay lập tức Điều này cho phép trao đổi các đoạn nội dung mà không cần quan tâm đến thứ tự, điều mà các ứng dụng streaming truyền thống không thể làm Tuy nhiên, do Internet được thiết kế chủ yếu cho mô hình client-server, khả năng tải lên của các peer trong mô hình P2P bị hạn chế, dẫn đến việc gặp phải các vấn đề như rớt gói tin và chậm trễ do tắc nghẽn mạng.

- Độ trễ có thể lớn: trong P2P video streaming, nội dung có thể phải đi qua một sốnơi nhận trung gian nên độ trễ có thể lớn

Việc xây dựng cấu trúc lưu trữ dữ liệu và trao đổi thông tin trạng thái trong hệ thống mở gặp nhiều khó khăn do hành vi không thể đoán trước của người nhận Họ có quyền tự do tham gia và rời bỏ bất kỳ lúc nào, dẫn đến việc loại bỏ các peer kế tiếp Để bảo vệ các kết nối, người nhận cần lưu trữ một số cấu trúc dữ liệu cục bộ và thực hiện việc trao đổi thông tin trạng thái với nhau.

Các chi phí kiểm soát tại mỗi điểm nhận cần được duy trì ở mức thấp nhằm tiết kiệm tài nguyên mạng và khắc phục các hạn chế về tài nguyên Điều này rất quan trọng cho khả năng mở rộng của hệ thống, cho phép hàng chục ngàn điểm nhận hoạt động đồng thời với chi phí quản lý hợp lý.

Ch ức năng hệ th ố ng video streaming

3 Lấy danh sách video đang có

Hình 3.3: Các chức năng hệ thống video streaming Các chức năng cơ bản của ứng dụng video streaming như trên, dữ liệu cần được lưu

- Thông tin đăng ký của user

- Danh sách video của user

Sử dụng việc lưu giữthông tin dưới cấu trúc file, tại mỗi client sẽ có:

• Thư mục inbox: chứa các đoạn file video nhận được, được lưu dưới định dạng

• Thư mục outbox:được lưu dưới định dạng

• Thông tin đăng ký của các user: được lưu dưới định dạng

• Thông tin trạng thái của user: dưới lưu dưới định dạng

Cấu trúc file được tổ chức như sau:

STT Thông tin Cấu trúc file

1 Đăng ký $APP/$username/..txt

2 Đăng nhập $APP/$username/..txt

3 Video gửi đi $APP/$username/outbox/.....txt

4 Video nhận được $APP/$username/inbox/.....txt

5 Danh sách video $APP/$username/..txt

6 Trạng thái log on $APP/$username/..txt

Thiết kế chi tiết hệ thống video streaming

Giải pháp sử dụng mô hình local proxy tôi đã trình bày ởtrên, tôi đã thiết kế chi tiết chức năng của hệ thống video streaming

Qui trình này được sử dụng đểđăng kí tài khoản sử dụng video streaming Đăng ký

P 2 P A ge nt Lo c al pr o x y C lient

Nhập thông tin đăng ký

Kiểm tra tổn tại tại local

Kiểm tra tổn tại trong mạng P2P Y

Lưu thông tin đăng ký tại local proxy

Lưu thông tin đăng ký vào hệ thống P2P

Hình 3.3 Đăng ký người dùng

Quy trình đăng ký được thực hiện như sau.

Bảng 3.1 Quy trình đăng kí người dùng

1 Người sử dụng nhập thông tin đăng ký tại client, client gửi yêu cầu tới local proxy

Local proxy sẽ kiểm tra tại máy xem người dùng đã đăng ký hay chưa.

- Nếu có trả lại kết quảngười dùng đã đăng ký cho client và kết thúc

- Nếu không có, local proxy gửi thông tin tìm kiếm qua P2P agent

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 rồi trả lại kết quả cho local proxy

Nếu kết quả tìm kiếm là có thì local proxy sẽ thông báo người dùng đã đăng ký với client

Nếu không tìm thấy proxy cục bộ, dữ liệu đăng ký của người dùng sẽ được lưu tại $APP/$username/..txt và hệ thống sẽ trả kết quả thành công cho client.

5 Local proxy sau đó tiến hành sao lưu thông tin đăng ký của người dùng vào mạng P2P

Quy trình xác thực người dùng được áp dụng khi sử dụng dịch vụ streaming video nhằm xác định quyền hạn của người dùng Mục tiêu là đảm bảo người dùng có quyền truy cập dịch vụ, đồng thời cung cấp thông tin cần thiết để triển khai các dịch vụ tùy chỉnh, như hạn chế nội dung video theo độ tuổi và ngôn ngữ, cũng như điều chỉnh ngôn ngữ hoặc phụ đề Ngoài ra, việc phân nhóm người dùng dựa trên sở thích, vị trí và thời gian sử dụng cũng giúp nâng cao hiệu quả của hệ thống đăng nhập.

P 2 P A ge nt Lo c al pr o x y C lient

Kiểm tra tổn tại trong mạng P 2P, xác thực

Nhập thông tin đăng nhập

Lưu thông tin đăng ký tại local proxy Đăng nhập không thành công

Tạo file trạng thái Đăng nhập thành công

Kiểm tra tổn tại tại local, xác thực Đưa file trạng thái vào P2P

Hình 3.4 Quy trình đăng nhập

Quy trình đăng nhập được thực hiện như trong Bảng 3.2 sau

Bảng 3.2 Quy trình đăng nhập

1 Người sử dụng nhập thông tin đăng nhập tại module client, client gửi yêu cầu tới local proxy

Local proxy sẽ kiểm tra tại máy xem người dùng đã đăng ký hay chưa.

- Nếu có thì tiến hành xác thực và kết quả người dùng đã đăng ký cho client và kết thúc

- Nếu không có, local proxy gửi thông tin xác thực qua 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

Khi có kết quả tìm kiếm, P2P Agent sẽ lấy file thông tin người dùng qua thao tác get file name Local proxy sẽ xác thực người dùng, và nếu thành công, sẽ lưu file thông tin để sử dụng cho lần đăng nhập sau, đồng thời tạo file để các user khác nhận diện người đang đăng nhập File này sẽ được P2P Agent đưa vào mạng P2P và lưu tại node chịu trách nhiệm Khi người dùng logout, file này sẽ bị xóa Nếu không có kết quả tìm kiếm, local proxy sẽ thông báo tới client rằng người dùng không tồn tại.

3.5.3 Danh sách các đoạn video đang có

Khi người sử dụng login, local proxy tìm trong máy local xem có chứa danh sách video đang xem hay không tại đường dẫn

Để tìm kiếm video, người dùng có thể sử dụng cú pháp APP/$username/. Nếu danh sách video không có trong máy local, hệ thống sẽ tìm kiếm trên mạng P2P bằng cách sử dụng tên file Khi file được tìm thấy, nó sẽ được lưu trữ tại vị trí thích hợp.

Việc hiển thị trạng thái của các phân đoạn video trên mạng mà username có quyền sử dụng được thực hiện thông qua việc p2p agent tìm kiếm các file tương ứng.

Qui trình gửi video lên mạng cho khách hàng được thực hiện tự động bởi local proxy, không cần sự can thiệp trực tiếp của người dùng Người dùng chỉ có thể tác động gián tiếp thông qua việc cấu hình client.

P 2 P A ge nt L oc a l pr o x y C li e n t k h á c

Tạo/định dạng video streaming Đưa file video streaming vào mạng P2P

Hình 3.5 Qui trình gửi video

Quy trình gửi video cho khách hàng được thực hiện theo Bảng 3.3, tương tự như cách mà server kết nối và cung cấp dữ liệu video streaming cho client trong mô hình client-server.

Bảng 3.3 Quy trình gửi video

Một client trong hệ thống gửi yêu cầu video đến client đang được xem xét Client này sau đó tạo một yêu cầu thiết lập video streaming đến local proxy và gửi yêu cầu đó tới local proxy.

Local proxy tạo một streaming video theo định dạng

.... và lưu tại $APP/$username/outbox/ Sau đó gửi yêu cầu chuyển file tới P2P agent

3 P2P Agent đưa streaming video vào mạng thông qua thao tác streaming file

Qui trình hiển thị video trong mô hình client-server được cải tiến nhờ sự hiện diện của local proxy, cho phép video không chỉ được tải từ server qua mạng mà còn có thể được truy xuất trực tiếp từ máy tính Điều này xảy ra khi local proxy đã lưu trữ sẵn đoạn video cần hiển thị.

P 2 P A ge nt L oc a l pr o x y C li e n t

Tìm kiếm file video tại local

Tìm kiếm file video trong mạng P2P

Yêu cầu hiển thị video

Lưu file video tại máy local

Hiển thị video Bắt đầu

Hình 3.6 Quy trình hiển thị đoạn video

Quy trình hiển thị videođược thực hiện như Bảng 3.4sau

Bảng 3.4 Quy trình hiển thị một đoạn video

1 Module client gửi yêu cầu hiển thị video tới local proxy

Local proxy tìm kiếm file theo định dạng . tại thư mục

Nếu ko tìm thấy, local proxy gửi yêu cầu tìm file tới P2P agent

P2P Agent tìm kiếm file trong mạng P2P qua thao tác search file name

. Nếu tìm thấy sẽ thực hiện thao tác get streaming video về và trả lại cho local proxy.

4 Local proxy sẽ lưu file tại $APP/$username/inbox/ rồi trả cho client

Quy trình thêm video vào danh sách bắt đầu bằng việc tìm kiếm file trên mạng P2P Nếu tìm thấy, danh sách các phân đoạn video trong file sẽ được cập nhật Người dùng có thể gọi quy trình này để xem video mới hoặc chương trình tự động thực hiện khi video hiện tại sắp kết thúc Quy trình này tương tự mô hình client-server, nhưng khác ở chỗ phản hồi không gửi trực tiếp đến server mà thông qua local proxy Để cải thiện hiệu suất hệ thống trong tương lai, có thể áp dụng các thuật toán nâng cao cho local proxy nhằm tăng tính sẵn có của các video yêu cầu.

P 2 P A ge nt Lo c al pr o x y C lient

Yêu cần thêm video Bắt đầu

Cập nhập lại danh sách video

Tìm kiếm file video trong mạng P2P

Hình 3.7: Quy trình thêm đoạn video

Bảng 3.5 Quy trình thêm một video

1 Module client gửi yêu cầu thêm video tới local proxy

Local proxy tìm kiếm file theo định dạng .

Nếu ko tìm thấy, local proxy gửi yêu cầu tìm file tới P2P agent

3 P2P Agent tìm kiếm file trong mạng P2P Nếu tìm thấy sẽ thực hiện thao tác trả lại cho local proxy.

4 Local proxy sẽ lưu file lạirồi trả cho client

Dùng đểđóng client và thoát khỏi mạng P2P.

Cài đặ t, th ử nghi ệm và đánh giá

Để phát triển ứng dụng này, tôi đã chọn ngôn ngữ Java và sử dụng mã nguồn mở, cung cấp thư viện hỗ trợ xây dựng mạng P2P Các công việc cần thực hiện để hiện thực hóa mô hình giải pháp bao gồm nhiều bước quan trọng.

Develop a client-server module featuring registration, login, video list retrieval, video upload, video display, and logout functionalities Both the client and server modules (local proxy) are hosted on a single machine.

- Xây dựng module peer to peer với các tính năng cơ bản bao gồm: tìm kiếm file, get file từ hệ thống, put file lên hệ thống

Mô hình ứng dụng đã được phân tích chi tiết và các chức năng được đánh giá, cho thấy tính khả thi và khả năng áp dụng theo yêu cầu của bài toán.

3.6.1 Cài đặt các nút mạng

Các nút mạng được cài đặt VLC, Java, P2P agent và mô đun local proxy để phục vụ cho việc truyền tải video/audio VLC hoạt động như phần mềm streaming video, trong khi Java (JRE) tạo môi trường cho các chương trình Java VLCJ kết nối VLC với các ứng dụng Java, và P2P agent dẫn hướng, triển khai dịch vụ tìm kiếm và quảng bá video trên mạng P2P Chúng tôi sử dụng cơ chế publish/subscribe để truy vấn và cập nhật video thông qua một server dịch vụ trung tâm, vì mạng P2P cần một server quản lý thông tin video Mô đun local proxy kết nối chương trình client với mạng P2P, chuyển các truy vấn video từ client sang P2P agent để lấy thông tin stream video Thông tin này sau đó được phát qua VLC nhờ vào VLCJ, giúp tăng tốc độ xử lý video bằng cách sử dụng VLCJ làm cầu nối giữa Java và VLC cho việc xử lý, mã hóa, giải mã và streaming video.

Hiện nay, mọi thông tin đều được trình bày dưới dạng văn bản thuần túy, trong đó mỗi video được biểu diễn bằng một dòng Thông tin này bao gồm tên video, mã định danh video, thời gian bắt đầu, thời gian kết thúc và thông tin về định dạng, mặc dù một số thông tin có thể không bắt buộc.

Trong quá trình triển khai thử nghiệm, mỗi nút sẽ hoạt động như một server streaming video và cũng là client nhận video Mỗi máy tính sẽ có một thư mục chứa các file video streaming, với danh sách file bao gồm định danh và thông tin thời gian bắt đầu, thời gian kết thúc được lưu trong một file cấu hình Số lượng file video và kích thước tối đa của chúng được quy định cố định trong mã chương trình Khi chạy một file video từ mạng, nút sẽ nhận streaming và phát video, đồng thời lưu trữ dữ liệu streaming vào đĩa cứng cục bộ để tiếp tục chia sẻ với các máy khác trong mạng.

Hệ thống đã được thử nghiệm trên ba máy tính, trong đó một máy là server lưu trữ thông tin video và hai máy còn lại hoạt động như server streaming video và client phát video Kết quả thử nghiệm cho thấy chương trình streaming video hoạt động hiệu quả, cho phép lấy video từ bất kỳ máy nào trong số hai máy còn lại và hỗ trợ lập vùng đệm để streaming đến các peer khác trong hệ thống.

3.6.3 Đánh giá và hướng phát triển

Hệ thống hiện tại là mạng p2p chưa hoàn chỉnh vì còn cần một server trung tâm lưu ữ ủ ẫ ằ ệ ố

Thời gian thử nghiệm và triển khai hệ thống ngắn đã dẫn đến quy mô thử nghiệm nhỏ, do đó chưa thể đánh giá đầy đủ hiệu năng của hệ thống Trong tương lai, cần triển khai thử nghiệm trên diện rộng để có được các đánh giá toàn diện hơn Để phát huy ưu điểm của mạng P2P, cần có cơ chế dự phòng cho khả năng đứt mạng, như việc chuẩn bị streaming video từ nhiều máy khác nhau để thay thế ngay lập tức khi có vấn đề xảy ra với máy chính Để cải thiện hiệu năng, hệ thống có thể được nâng cấp bằng cách nhận video từ nhiều peer cùng lúc, cho phép xem liên tục bằng cách xen kẽ giữa các nguồn streaming khác nhau.

Sau một thời gian nghiên cứu, luận văn "Nghiên cứu ứng dụng mô hình peer to peer vào các ứng dụng client server" đã được hoàn thành dưới sự hướng dẫn tận tâm của PGS.TS Hà Quốc Trung.

In this thesis, I explored the client-server model and the P2P model To integrate P2P applications into the client-server framework, I proposed two solutions: a local proxy model and a shared cache folder model From these two solutions, I chose the local proxy model to present a detailed design solution for a video streaming application that leverages the advantages of both the client-server and peer-to-peer models.

Mặc dù đã nỗ lực đáng kể, luận văn vẫn còn nhiều thiếu sót do hiểu biết hạn chế Chúng tôi rất mong nhận được ý kiến đóng góp từ các thầy cô và bạn đọc để hoàn thiện luận văn, nhằm áp dụng hiệu quả vào thực tế.

1 Bin Rong, “Video Streaming over the Internet using Application Layer

2 Dmitri Moltchanov (2012) Client/server and peer-to-peer models: basic concepts

3 Dejan S Milojicic, Vana Kalogeraki, Rajan Lukose, Kiran Nagaraja1, Jim Pruyne, Bruno Richard, Sami Rollins, Zhichen Xu (2003) Peer-to-Peer

Computing,Technical Report HPL-2002-57, HP Laboratories Palo Alto

4 Indrani Gupta, Ken Binman, Prakash Linga, Al Demers, Robbert van Renesse:” Peer – to – Peer Networks: Kelips”

5 L Abeni, C Kiraly, R Lo Cigno, “Achiving performance and robustness in P2P streaming systems”, University of Trento, Italy, Tech Rep TR-DISI- 09-041, 2009

6 Ha Quoc Trung (2012) “New approach to develop the messenger application: from client server design to p2p implementation”, ACSIT-2012

7 Ion Stoica, Robert Morris, David Karger, M Frans Kaashoek, Hari Balakrishnan “Chord: A scalable peer-to-peer lookup protocol for internet applications”

8 Nguyen Quang Thu: Study of distributed replication: design a messenger application using local proxy model Master’s thesis, Hanoi University of Science and Technology, 4 2013

9 Lawrence Chung Client-Server Architecture, Computer Science Program, The University of Texas, Dallas

10 Luong Quy Tho, Ha Quoc Trung: P2P shared-caching model: using P2P to improve client-server application performance SoICT 2013: 222-226

11 Wenwu Zhu, Member, IEEE, Dapeng Wu, Student Member, IEEE, Yiwei

Ngày đăng: 02/05/2021, 09:36

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Bin Rong, “Video Streaming over the Internet using Application LayerMulticast”, RMIT University, 2008.” Sách, tạp chí
Tiêu đề: Video Streaming over the Internet using Application Layer Multicast
Tác giả: Bin Rong
Nhà XB: RMIT University
Năm: 2008
2. Dmitri Moltchanov (2012) Client/server and peer-to-peer models: basic concepts Sách, tạp chí
Tiêu đề: Client/server and peer-to-peer models: basic concepts
Tác giả: Dmitri Moltchanov
Năm: 2012
5. L. Abeni, C. Kiraly, R. Lo Cigno, “Achiving performance and robustness in P2P streaming systems”, University of Trento, Italy, Tech. Rep. TR-DISI- 09-041, 2009 Sách, tạp chí
Tiêu đề: Achiving performance and robustness in P2P streaming systems
6. Ha Quoc Trung (2012) “New approach to develop the messenger application: from client server design to p2p implementation”, ACSIT-2012 Sách, tạp chí
Tiêu đề: New approach to develop the messenger application: from client server design to p2p implementation
Tác giả: Ha Quoc Trung
Nhà XB: ACSIT-2012
Năm: 2012
7. Ion Stoica, Robert Morris, David Karger, M. Frans Kaashoek, Hari Balakrishnan. “Chord: A scalable peer-to-peer lookup protocol for internet applications” Sách, tạp chí
Tiêu đề: Chord: A scalable peer-to-peer lookup protocol for internet applications
8. Nguyen Quang Thu: Study of distributed replication: design a messenger application using local proxy model. Master’s thesis, Hanoi University of Science and Technology, 4 2013 Sách, tạp chí
Tiêu đề: Study of distributed replication: design a messenger application using local proxy model
Tác giả: Nguyen Quang Thu
Nhà XB: Hanoi University of Science and Technology
Năm: 2013
9. Lawrence Chung Client-Server Architecture, Computer Science Program, The University of Texas, Dallas Sách, tạp chí
Tiêu đề: Client-Server Architecture
10. Luong Quy Tho, Ha Quoc Trung: P2P shared-caching model: using P2P to improve client-server application performance. SoICT 2013: 222-226 Khác

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