← 질문 목록
#56깊이 0
메시지 순서는 어디까지 보장되는가?
대개 파티션 안에서만이다. 여러 파티션에 흩어진 메시지 사이에는 전역 순서가 없다. 만들려면 번호를 매기는 자리를 따로 둬야 한다. 그 자리가 병목이 되므로 병렬로 얻던 것을 얼마간 내놓게 된다.
| 범위 | 순서 보장 |
|---|---|
| 같은 파티션 | 넣은 순서대로 읽힌다 |
| 다른 파티션 | 순서가 없다. 병렬로 흐른다 |
| 전역 순서 | 파티션 하나로 몰거나 번호를 매기는 자리를 따로 둔다. 처리량을 잃는다 |
그래서 순서가 중요한 것끼리 같은 파티션으로 보낸다. 주문 이벤트를 주문 번호로 나누면 한 주문의 사건들은 순서가 지켜진다.
소비자 쪽에서도 깨질 수 있다. 여러 스레드가 한 파티션을 나눠 처리하면 넣은 순서와 끝난 순서가 달라진다.
순서가 반드시 필요한지도 따져야 한다. 상태를 순서 대신 버전으로 판단하면 늦게 온 이벤트를 버릴 수 있어서 순서 요구 자체가 사라진다.
추천 꼬리질문
관련 질문
- 메시지 큐를 두면 무엇을 얻고 무엇을 잃는가?아키텍처 · 분산시스템메시지 큐를 통한 비동기 통신 시 메시지 전달 순서 보장 문제는 핵심적인 고려 사항이다.
- 재시도가 있는 시스템에서 멱등성이 필요한 이유는?아키텍처 · 분산시스템메시지 순서가 보장되지 않는 시스템에서 중복 처리나 순서 바뀜을 해결하기 위해 멱등성이 필요하다.
- 처리에 실패한 메시지는 어디로 가는가?아키텍처 · 분산시스템둘 다 메시지 큐의 전달 보장 의미론을 다루며 재처리와 순서 보장이 상호 영향을 준다
- 전송 성공은 단말 수신까지 뜻하는가?모바일
- 보낼 데이터가 길에서 감당할 크기보다 크면 어떻게 되는가?네트워크