Kafka에서 partition 수와 메시지 순서

김석·2023년 5월 17일
0

Kafka

목록 보기
3/11

1. partiton 한 개인 경우

메시지를 순서대로 consume하는 것이 보장됨.

topic에 대해 모든 데이터의 순서를 보장받고 싶다면, topic 생성 시 partition의 수를 1로 지정해야 함.


2. partition이 여러 개인 경우

consumer는 1 3 2 순으로 메시지를 가져왔음.

consumer는 각각의 partition에서 첫 번째 데이터를 가져올 뿐, partition의 순서대로 가져오지 않는다.

같은 partition의 데이터의 순서는 보장됨. 따라서 2 5, 3 6의 순서는 consumer에서 보장 됨. 하지만 partiton 간의 순서는 보장되지 않음.


3. 순서를 보장하기 위해서는?

kafaka의 partition을 하나로 구성한다면, kafka의 강점인 확장성을 잃는다. 메시지 순서를 ㅂ증하는 구현 방안 중 하나로 해시에 의한 분할(partition에서)을 활용하는 방안을 고려할 수 있다. 이 방법은 전체 메시지 순서가 아닌, producer 및 장치 ID 등 카테고리별 순서 제어를 목표할 때 유용하다. 그러나 각종 구성 요소 장애를 고려한 완전 정렬은 난이도가 높다. 또한 consumer 구현이 producer 데이터 전송 로직에 강하게 의존하는 것은, kafka 전후의 시스템적인 분리에 제한을 줄 수 있다.

순서 보증을 위한 정렬 기능을 반드시 broker에서 구현할지(단일 파티션을 사용), consumer에서 구현하는 것이 더 나을지는 시스템 전체를 고려하여 판단해야 한다.


출처

https://www.popit.kr/kafka-%EC%9A%B4%EC%98%81%EC%9E%90%EA%B0%80-%EB%A7%90%ED%95%98%EB%8A%94-%EC%B2%98%EC%9D%8C-%EC%A0%91%ED%95%98%EB%8A%94-kafka/

profile
handsome

0개의 댓글