2014-02-22 2 views
1

방금 ​​redis로 arround를 시작했는데 다음 시나리오가 나타났습니다.이 시나리오에서는 pub/sub가 좋은 선택입니까?

제출 양식이 있고 웹 사이트에서 사람들이 작성한 내용을 추적하고 싶다고 가정 해보십시오. 당신은 또한 그것을 어딘가에서 감시하고 싶다.

내가 알기로, redis는 단일 스레드이므로, redis의 메모리에있는 블록에 누가 글을 쓰는지에 관해서는 결코 문제가 없을 것입니다.

여기의 질문은 날씨가 모니터가 단순히 동일한 정보를 읽거나 날씨에 가입해야하고 그곳에서 가치를 얻는 날씨일까요?

저와 같은 초보자에게는 두 가지 접근 방식이 본질적으로 같은 것이고 두 가지 모두 클라이언트가 시간 간격으로 필드에서 읽어야 할 필요가 있다고 들립니다. 중요한 차이점이 있습니까?

답변

0

여기에서 디자인 선택은 PUSH 또는 PULL 사이입니다. 모니터가 일부 소스에서 주기적으로 데이터를 읽으면 데이터를 가져 오는 것입니다. 그러나 데이터를 구독하는 경우 데이터가 푸시됩니다.

PUSH와 PULL의 차이는 PULL 모니터의 경우 항상 더 많은 데이터를 주기적으로 폴링하는 것입니다. PUSH (가입)의 경우에는 데이터가 모니터로 전송되므로 처리 할 데이터가없는 동안 잠자기 상태가 될 수 있습니다.

PUB/SUB는 위의 사항을 염두에 두는 것이 좋습니다.

모니터에는 데이터가 게시 될 채널에 각각 가입해야하는 스레드 수가 있어야합니다. 스레드가 채널을 구독하면 명령을 실행할 수 없습니다. 더 많은 채널 만 구독 할 수 있습니다. 모니터가 다른 명령을 실행해야하는 경우 새 연결을 작성해야합니다.

또한 디자인 문제를 다루는 다른 방법을 찾아 볼 수도 있습니다. 처리 할 데이터의 양이 많아서 모니터를위한 거대한 작업 스택이 발생할 수 있습니다. 처리 할 모든 데이터를 덤프 할 수있는 메시지 대기열을 고려할 수 있습니다. 모니터가 소비자 역할을 할 수 있습니다. 대기열과 장점은 다음과 같습니다

  1. 메시지가 계속 수, 경우 모니터는 모니터가있을 때 데이터를 큐에 저장 및 처리 될 것이다 다운에 (지속성)
  2. 모니터가 높은 부하를 처리하기 위해 수평 확장 할 수있다.. (확장 성)
관련 문제