2013-07-23 22 views

Trả lời

56

Sự khác biệt là một ổ cắm PUB gửi cùng một thông điệp tới tất cả thuê bao, trong khi PUSH hiện một round-robin trong số tất cả kết nối PULL ổ cắm của nó.

Trong ví dụ của bạn, nếu bạn gửi một tin nhắn duy nhất từ ​​gốc, sau đó tất cả các thuê bao sẽ nhận được nó (trừ thuê bao chậm, vv) nhưng chỉ có 1 người lao động.

Các/phụ mẫu quán rượu được sử dụng để phân phối thông điệp rộng theo chủ đề. Các mô hình đẩy/kéo thực sự là một cơ chế pipelining. Ví dụ push/pull của bạn dường như đang cố gắng thực hiện cân bằng tải, điều đó là tốt, nhưng req/rep có thể phù hợp hơn với các vấn đề khác.

Dường như "vấn đề" ở đây được mô tả trong cùng một phần của 0MQ hướng dẫn bạn có những hình ảnh từ: push/pull ventilator example

+4

Tôi cũng muốn biết sự khác biệt về tin nhắn bị mất ... tức là những gì sẽ xảy ra nếu máy chủ PUB hoặc PUSH nhắn và khách hàng [1] bị mất kết nối và kết nối lại [2] khách hàng được kết nối với tất cả các thời gian nhưng khách hàng đang bận làm việc và không phải trong .recv() – Bhuvan

+1

'SUB' và' PULL' ổ cắm có điểm chung tài sản mà họ tiêu thụ từ các tin nhắn có sẵn ngay cả khi mã khách hàng không làm một 'recv', vì vậy trong ví dụ của bạn, khách hàng [2] sẽ nhận được các tin nhắn trong cả hai trường hợp, và khách hàng [1] sẽ bắt đầu nhận được tin nhắn mới khi nó kết nối lại. Quan trọng hơn, không phải loại ổ cắm nào được "xử lý" cho một máy khách cụ thể. – SteveLove

+1

bạn nhận thông tin này ở đâu .... nhấn và dùng thử với zeroMQ hoặc bạn tìm thấy một số tài nguyên thú vị? – Bhuvan

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