• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

key를 갖는 메시지 전송 시 궁금한 사항이 있습니다.

23.12.19 17:52 작성 23.12.19 17:54 수정 조회수 117

0

강사님, 안녕하세요! 강의 잘 듣고 있습니다.

강의 들으면서 궁금한 사항이 생겨서 질문드려요.

key를 지정해서 메시지를 전송하면 같은 key에 한해서는 같은 파티션으로 메시지가 전송되는 것을 보장 받을 수 있고, 해당 key로 전송된 메세지는 순서를 보장받을 수 있다. 까지는 이해했는데요~

운영하면서 파티션의 개수가 늘어날 경우, 늘어난 직후에도 같은 key로 전송되는 메세지는 순서를 보장받을 수 있는 것일까요?

(즉, 파티션 개수가 늘어나기 이전에 key:a, partition:0으로 전송되었다면 추후, 파티션 개수가 늘어나 리밸런싱이 일어나더라도 key:a 메세지는 partition:0으로 전송되는 것일까요?)

답변 1

답변을 작성해보세요.

1

안녕하십니까,

기본적으로 토픽의 Partiton 추가는 운영중에는 하지 않고, 별도의 유지보수 시간에 수행합니다.

왜냐하면 Partition을 추가하면 기존 topic의 데이터를 모든 파티션에 새롭게 Repartition하기 때문이며, 이 시간 중에는 topic에 blocking이 걸리게 됩니다. 데이터가 많으면 많을 수록 Repartition에 시간이 걸립니다.

이 시간중에 producer는 메시지를 보내지 못하고 connection timeout이 발생하며 Consumer의 경우는 partition 들이 repartition될 때까지 기다렸다가, rebalacing을 수행하게 됩니다.

이때 기존에 a 메시지가 partition 0으로 갔을지라도 repartition후에는 다른 partition으로 갈 수 있습니다.

감사합니다.