2017-05-21 10 views
0

PUSH 소켓을 사용하는 경우 연결하려는 첫 번째 PULL 소켓이 불공정 메시지 몫을 차지하게됩니다. 메시지의 정확한 회전은 모든 PULL 소켓이 성공적으로 연결될 때만 발생합니다. 이는 몇 밀리 초가 걸릴 수 있습니다. PUSH/PULL 대신 데이터 속도를 낮추기 위해 ROUTER/DEALER와로드 밸런싱 패턴을 고려하십시오.ZeroMQ에서 PULL-PUSH 동기화를 수행하는 또 다른 신뢰할 수있는 방법

따라서 PUSH/PULL에서 동기화를 수행하는 한 가지 방법은로드 균형 조정 패턴을 사용하는 것입니다. 아래의이 특정한 경우에 대한

, 나는 동기화 할 수있는 또 다른 방법이 있는지 궁금 :

Parallel Pipeling

내가 보내 다음 연결을 성공적으로 설정 될 때까지 차단하는 노동자의 PULL 엔드 포인트를 설정하고, 수를 작업자의 PULL 종점을 통한 특별 메시지가 '싱크'됩니다. '싱크대'가 근로자의 특수 메시지를받은 후 '싱크대'는 REQ-REP로 '통풍기'에 메시지를 보내 모든 근로자가 준비되었음을 알립니다. '인공 호흡기'는 일자리를 근로자에게 배포하기 시작합니다. 그것은 신뢰할 수 있습니까?

사진이 너무 오래 Sink는 메시지를 보내는 시작하려면 확인 년대 Ventilator을 이야기하기 전에 대기하는 방법을 Workers 많은 알고로, here

답변

0

예에서입니다. Sink이 연결되기 전에 시작하는 경우 Workers의 특수 메시지가 전달되는지 여부에 대한 질문이 있습니다. 그러나 Ventilator에서 데이터를 받기 시작할 때까지 메시지를 계속 보내면 해결할 수 있습니다. 이 경우, Sink은 수신 한 복제본을 단순히 무시합니다.

Ventilator에 실제로 작동하는 연결 인 Workers과 완전히 같지는 않지만 그 자체로 Workers에서받는 특별한 무 반응 메시지를 보낼 수 있습니다. 그들은 그들이 특별한 메시지를 Sink에 보낼 시작할 때 그 중 하나를받습니다.