2012-01-06 26 views
5

Tôi đã tự hỏi liệu ý tưởng của mình về zeromq có đúng không? Tôi đã nghĩ đến việc viết một peer to peer chat ứng dụng bằng cách sử dụng zeromq nhưng khi tôi đọc thêm vào nó zeromq có vẻ là mức độ thấp hơn so với những gì người ta sẽ sử dụng (tcp sockets). Zeromq có tốt để viết ứng dụng trò chuyện ngang hàng hay không hoặc trường hợp sử dụng này không áp dụng được không?Zeromq là giải pháp phù hợp để trò chuyện video ngang hàng

Trả lời

11

Thứ nhất, tôi sẽ không đồng ý với tuyên bố của bạn rằng zeromq là nhiều hơn mức thấp hơn so với ổ cắm. AFAICT zeromq trình bày một API tương tự như API socket. Tuy nhiên nó cũng có thể xử lý những thứ khác như gửi tin nhắn cho nhiều khách hàng với cùng một cuộc gọi gửi.

Thứ hai, câu hỏi của bạn không rõ ràng: ý nghĩa của bạn là tốt: Dễ viết (vì bạn tham khảo cấp thấp), đáng tin cậy, đủ hiệu quả, v.v ...? Bạn có thể sử dụng bất cứ điều gì bạn muốn, mức độ phức tạp thực hiện tất nhiên sẽ khác nhau.

Ngoài ra, bạn có thể sử dụng udp thay vì tcp trong ứng dụng trò chuyện video, vì nó là hơn quan trọng là dữ liệu đến thời gian hơn tất cả dữ liệu đến, nhưng đó là một chủ đề hoàn toàn khác. Nếu bạn có thể sử dụng zeromq với udp (và bạn sẽ phải nghiên cứu điều đó), tôi không thấy lý do tại sao bạn không thể sử dụng nó để trò chuyện video.

Yếu tố chính bạn cần xem xét là liệu bạn có thể gửi dữ liệu giữa các đồng nghiệp đủ nhanh để cung cấp QoS được chấp nhận hay không: AFAIR có RTT tối đa khoảng 300ms được coi là ok cho các dịch vụ đàm thoại.

Sau đây link áp dụng cho chính thức nhưng cũng nên áp dụng đối với reqirements video chat:

Hầu hết những người gọi nhận thấy độ trễ khứ hồi khi chúng vượt quá 250mSec, vì vậy ngân sách trễ một chiều thường sẽ là 150 mili giây. 150 mSec cũng được chỉ định trong khuyến cáo ITU-T G.114 là độ trễ một chiều mong muốn tối đa để đạt được chất lượng âm thanh cao. Ngoài thời gian chờ chuyến đi vòng quanh đó, người gọi bắt đầu cảm thấy khó chịu khi tổ chức một cuộc trò chuyện hai chiều và thường kết thúc nói chuyện với nhau. Với sự chậm trễ trong vòng 500 mSec và hơn thế nữa, các cuộc gọi điện thoại là không thực tế, nơi bạn gần như có thể kể một câu chuyện đùa và khiến người kia cười sau khi bạn rời khỏi phòng.

+0

+1 cho "dữ liệu đến đúng giờ". Chỉ đùa thôi – aitchnyu

0

Khi Ralf chỉ ra, ZeroMQ rất cao cấp, không phải cấp thấp. Hơn nữa, thông thường người ta sẽ khuyên bạn không nên sử dụng ZeroMQ cho video đơn giản vì hỗ trợ UDP là mới và chưa phổ biến (see this answer). Nói chung, ZeroMQ được xây dựng xung quanh bằng cách sử dụng các cổng TCP, và mặc dù kiến ​​trúc PUB/SUB bắt chước UDP, bạn sẽ không nhận được hiệu suất UDP thực (điều này rất quan trọng đối với video) vì việc kiểm tra lỗi trên ổ cắm TCP khiến khó có được độ trễ đủ thấp để có luồng video mượt mà.

Các vấn đề liên quan