KafkaConsumer 파라미터
- Topic 이름을 KafkaConsumer의 첫번째 인자로 지정 혹은 나중에 별도로 subscribe를 호출해서 지정
파라미터 | 의미 | 기본 값 | 설명 |
bootstrap_servers | 메세지를 보낼 때 사용할 브로커 리스트 (host:port) | localhost:9092 | |
client_id | Kafka Consumer 이름 | 'kafka-python-{version}' | 지정 안 하면, 알아서 지정됨 |
group_id | Kafka Consumer Group 이름 | consumer 수 상관없이 꼭 설정해줘야 함 | |
key_deserializer, value_deserializer | 메세지의 키와 값의 deserialize 방법 지정 (함수) | serialize 했더 것을 다시 deserialize 해줌 | |
auto_offset_reset | earliest, latest | latest | 기본값 설정에서 consumer을 실행했는데 아무것도 없다면 현재 들어오고 있는 것이 없는 것 |
enable_auto_commit | True이면 소비자의 오프셋이 백그라운드에서 주기적으로 커밋됨, False이면 명시적으로 커밋을 해줘야 함. 오프셋은 별도로 리셋 가능하며 Conductor Web UI에서도 가능 |
True |
Consumer가 다수의 Partitions들로부터 어떻게 읽나?
- Consumer가 하나이고 다수의 Partitions들로 구성된 Topic으로부터 읽어야 한다면?
- Consumer는 각 Partition들로부터 라운드 로빈 형태로 하나씩 읽게 됨
- 이 경우 병렬성이 떨어지고 생산 속도에 따라 Backpressure가 심해질 수 있음
- 이를 해결하기 위한 것이 Consumer Group
- 한 프로세스에서 다수의 Topic을 읽는 것이 가능
- Topic 수만큼 KafkaConsumer 인스턴스 생성하고 별도의 Group ID와 Client ID를 지정해야 함
Consumer Group
- Consumer Topic을 읽기 시작하면 해당 Topic 내 일부 Partition들이 자동으로 할당됨
- Consumer의 수보다 Partition의 수가 더 많은 경우, Partition은 라운드 로빈 방식으로 Consumer들에게 할당됨
- 한 Partition은 한 Consumer에게만 할당
- 이를 통해 데이터 소비 병렬성을 늘리고 Backpressure 경감
- 그리고 Consumer가 일부 중단되더라도 계속해서 데이터 처리 가능
- Consumer Group Rebalancing
- 기존 Consumer가 무슨 이유로 사라지거나 새로운 Consumer가 Group에 참여하는 경우 Partition들이 다시 지정되어야 함
- 이를 Consumer Group Rebalancing이라고 부르며 이는 Kafka에서 알아서 수행해줌
반응형