나는 heroku에 REST 서버가있다. REST 서비스에는 N-dynos를, 근로자에게는 N-dynos를 갖습니다.결과가있는 비동기 작업 대기열에 올바른 접근 방식은 무엇입니까?
본질적으로 장기간 휴식 요청이 있습니다. 이러한 것들이 들어 오면 나는 그것들을 작업자 중 한 명에게 위임하고 클라이언트에게 작업을 폴링하고 결국 작업 결과를 반환하는 리디렉션을 제공하려고합니다.
나는 이것을 위해 RedisToGo의 JEDIS/REDIS를 사용할 것이다. 제가 할 수있는 한 두 가지 방법이 있습니다.
- 필자는 PUB/SUB 기능을 사용할 수 있습니다. 게시자에게 작업 결과에 대한 고유 ID를 만들고이를 리디렉션 URI로 REST 클라이언트에 반환하도록합니다.
- 기본적으로 PUB/SUB 대신 RPUSH/BLPOP을 사용합니다.
# 1의 이점이 무엇인지 잘 모르겠습니다. 예를 들어, LongMathOperation이라는 작업이 있다면 간단히이 목록을 가질 수있는 것처럼 보입니다. list 요소는 수학 연산 인수뿐만 아니라 결과를 배치해야하는 위치에 대해 REST 서버에서 생성 된 UUID를 갖는 JSON 객체입니다. 그러면 모든 작업자 dynos는 BLPOP 호출을 차단하고 첫 번째 호출에서 작업을 처리하고 처리하며 UUID의 키를 사용하여 REDIS에 결과를 저장합니다.
의미가 있습니까? 그래서 내 질문은 "왜 PUB/SUB를 사용하면 이것보다 더 좋을까요?"입니다. PUB/SUB는 내가 누락 된 테이블에 무엇을 가져다 주나요?
감사합니다.