작성
·
155
·
수정됨
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으로 갈 수 있습니다.
감사합니다.