OPTION 1: Chi phí chung của việc tạo ra một kết nối TCP là:
- Tạo kết nối ổ cắm
- Gửi dữ liệu
- Tear xuống kết nối ổ cắm
Bước 1: Yêu cầu trao đổi các gói, do đó, nó bị trễ bởi & từ độ trễ mạng cộng với thời gian dịch vụ của máy chủ đích. Không có sử dụng CPU đáng kể trên một trong hai hộp có liên quan.
Bước 2: Tùy thuộc vào kích thước của thư.
Bước 3: IIRC, chỉ gửi gói 'đóng ngay bây giờ', không đợi mã ack đích, do đó không có thời gian chờ.
OPTION 2: Chi phí UDP: *
- Tạo đối tượng UDP
- Gửi dữ liệu
- Đóng UDP đối tượng
Bước 1: Yêu cầu thiết lập tối thiểu, không phải lo lắng trễ , rất nhanh.
Bước 2: HÃY CẨN THẬN SIZE, không có truyền lại trong UDP vì nó không quan tâm liệu gói có được nhận bởi bất kỳ ai hay không. Tôi đã nghe nói rằng thông điệp càng lớn thì khả năng nhận dữ liệu càng lớn và quy tắc chung là bạn sẽ mất một tỷ lệ phần trăm tin nhắn nhất định trên 20 MB.
Bước 3: Công việc tối thiểu, thời gian tối thiểu.
OPTION 3: Sử dụng ZeroMQ Thay vào đó
Bạn đang so sánh TCP để UDP với mục tiêu giảm thời gian kết nối lại. ĐÂY LÀ MỘT GỢI Ý NICE: Ổ cắm ZeroMQ.
ZMQ cho phép bạn thiết lập ổ cắm xuất bản mà bạn không quan tâm nếu có ai đang nghe (như UDP) và có nhiều người nghe trên ổ cắm đó. Đây không phải là một ổ cắm UDP - nó là một thay thế cho cả hai giao thức này.
Xem: ZeroMQ.org để biết chi tiết.
Tốc độ rất cao và khả năng chịu lỗi, và đang gia tăng sử dụng trong ngành tài chính vì những lý do đó.
Nguồn
2012-05-16 15:30:19
Tôi nghĩ độ trễ của cái bắt tay là chi phí đáng kể nhất. – CodesInChaos
Ahh điểm tốt. Kết nối không được coi là mở cho đến khi toàn bộ bắt tay hoàn thành. Tuy nhiên sau khi mở, bạn có thể phát trực tuyến dữ liệu mà không cần đợi mã ACK trên mỗi đoạn (vì cửa sổ trượt) – seand
không có 'ack trên mỗi đoạn'. – EJP