2009-07-28 5 views
3

최근 presentation에 대해 보았습니다. RabbitMQ에 대해 메시지 중복 제거를위한 "멱시 장벽"이라는 사용법이 언급되었습니다. 이것은 메시지 충돌자를위한 멋진 이름일까요, 아니면 좀 더 구체적 일 수 있습니다. 그렇다면 정확하게 무엇입니까? Google 검색 결과는 RabbitMQ와 거의 관련이 있으며 결과는 거의 설명되지 않았습니다.메시징 멱등수 배리어

답변

9

Idempotency은 함수의 출력을 n 번 수행하면 함수가 한 번 수행되는 것과 동일한 상태가되는 함수의 동작입니다. 지연된 메시지로 인해 예기치 않은 동작이 발생하지 않으므로 메시징 환경에서 유용합니다. 결합은 메시지가 중복을 방지하기 위해 집중되는 것을 의미하지만, 멱등 원은 메시징 프레임 워크가 다중 메시지 전송 및 중복 메시지 실행을 허용 함을 의미하는 반면 메시지의 여러 사본 실행은 하나의 메시지 실행과 동일한 결과를 유지합니다.

+0

정확하게 이해했다면, 마지막 문장은 멱등 원이 실제로 프레임 워크가 아니라 메시지 소비자의 기능이라는 것을 암시하는 것처럼 보입니다. 그렇다면 프레임 워크가 만연하지 않는다는 것은 무엇을 의미합니까? 프레임 워크가 중복 실행을 허용하면 클라이언트가 중복을 감지하여 무시하거나 영향을받지 않습니다. – omerkudat

+1

메시징 환경에서 멱 등 열 동작은 다음 두 가지 방법 중 하나로 만들 수 있습니다. 메시지에 캡슐화하거나, 꼬리 재귀를 생각하거나, 설명대로 클라이언트가 일부 캐싱 메커니즘을 구현하게 할 수 있습니다. 생각하고있는 캐싱 기술은 개념적으로 단순한 기술이지만 메시지 소비자가 계속 실행되는 동안 캐시가 계속 커야하기 때문에 확장이 잘되지 않습니다. 서비스를 통해 높은 처리량이있는 경우 메모리 부족 상태가 발생할 수 있습니다. – codethulhu

+0

SLA가 지연된 메시지라는 점을 알고 있으면 슬라이딩 창 (TCP와 유사)을 구현할 수 있습니다. 즉, 마지막 1000 개의 메시지 만 캐시에 보관해야하는 SLA를 만들면 제한된 메모리를 얻게됩니다. 이러한 유형의 배열은 지연에 대한 현실적인 상한선을 가지기 때문에 대부분의 상황에 충분하지만, 분명히 필요하다면 "무한"지연을 허용하지 않습니다. 결론은 SLA를 파악하는 것입니다. –