2012-06-29 2 views
-1

ZMQ는 자체로드 균형 조정을 수행 할 수있는 모든 유연성을 제공합니다. 그러나 나는 문서가로드 밸런싱을 수행 말한대로 아주 잘 균형을로드 라인ZMQ 장치 큐의로드 균형이 올바르지 않습니다.

zmq_device (ZMQ_QUEUE, frontend, backend);

를 사용하여, 코드의 약 4 라인을 아웃 - 오브 - 박스 브로커를 기대.

ZMQ_QUEUE는 클라이언트 집합에서 요청을 수집하고이를 일련의 서비스 집합에 공평하게 분배하는 공유 대기열을 만듭니다. 요청은 프론트 엔드 연결에서 공정하게 대기 중이고 백엔드 연결간에로드 밸런싱됩니다. 회신은 원래 요청을 한 클라이언트로 자동으로 되돌아갑니다. 가 (1 설정 :

나는 백엔드 서비스의 군대가 아직 내 프런트 엔드 클라이언트가 1 초 < 1/10 소요 뭔가를 몇 초를 기다려야 자주 찾을 동일한 클라이언트 및 서비스 기계 수). 나는 ZMQ가 적절하게로드 밸런싱되지 않는다고 의심한다 - 대역폭이 없다고하더라도 같은 서비스에 너무 많은 요청을 보낸다.

나는 서비스가 멀티 스레드 방식이기 때문에 부분적으로 생각한다. 최대 10 개의 동시 요청을 처리 할 수있는 방법이지만 10 번째 요청이 아직 받아 들일 수있을지라도 10 번째 요청이있을 때 크게 느려집니다. 무작위 배포가 이상적입니다. 이 작업을 수행하는 즉시 사용 가능한 방법이 있습니까? 아니면 몇 줄의 코드에서 수행 할 수 있습니까? 아니면 처음부터 내 브로커를 작성해야합니까?

답변

0

Fwiw 문제는 노동자들이 작업 공간을 확보 할 수 없을 때 작업을 수행하고 있었고 문제는 ZMQ 레이어 자체가 아니 었습니다.

관련 문제