일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 자료구조공부
- 스프링부트공부
- JPA공부
- Flutter
- Kafka
- K8S
- 기술공부
- 플러터 개발
- 스프링
- 스프링 공부
- querydsl
- JPA
- nestjs공부
- Axon framework
- nestjs스터디
- 스프링공부
- 기술면접공부
- 플러터 공부
- 카프카
- 코테공부
- 알고리즘공부
- 프로그래머스
- DDD
- 코테준비
- JPA예제
- 자바공부
- JPA스터디
- nestjs
- 스프링부트
- JPA 공부
- Today
- Total
DevBoi
[Kafka] 카프카 config 내용 분석 하기 본문
kafka-configs 를 정리해보자
토픽의 일부 옵션을 설정하기 위해서는 kafka-configs.sh명령어를 사용해야한다.
--alter와 --add-config 옵션을 사용하여, Min.insync.replicas옵션을 토픽별로 설정할 수있다.
관련 Config 명령어로 broker,all,describe옵션을 사용해서 조회가 가능하다.
bin/kafka-configs.sh --bootstrap-server my-kafka:9092 --alter --add-config min.insync.replica=2 topic test
bin/kafka-topics.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --describe
예를 들어 위와 같이, 해당 토픽에 대해서 생성했다고 하자.
해당 토픽에 대해서 파티션은 3개이고, 복제 개수는 1개이다.
이제 insync.replica를 수정반영해보자
자세히 보여야 보이는데 아랫줄에, configs: 부분에 내용이 추가된 것을 볼수있다.
뭐 이제 수정 반영하는 방법은 알겠다. 사실 이 부분은 config 파일로 저장해놓고, 기동시에 반영할 수 있는 부분이기도 하다.
카프카에서 권고하는 사항은 따로 지정되어있다.
min.insync.replicas 는 우선 최소 리플리케이션 복제 개수 값이다.
대부분 카프카에서 프로듀서는 acks=all를 설정을 많이한다.
acks=all은, 하나의 ISR 팔로워가 프로듀서의 데이터를 잘 복제 했다는 것을 알려주는것을 의미하고
프로듀서는 acks=all일경우 팔로워의 응답을 기다린다.
위의 상황에서 만약에 min.insync.replica=3로 지정했다고 예를 들어보자
1.프로듀서는 acks=all 옵션으로 리더 파티션에게 메시지를 전달한다.
2.리더 파티션은 메시지를 받아 저장하고, 팔로워 파티션에 있는 브로커들은 주기적으로 리더파티션과 통신한다.
3.만약에 신규 데이터가 있다면, 복제하여 저장한다.
4.리더는 복제할 대상이 최소 옵션수 유지되고있는지를 확인하고 acks를 보낸다.
5.리더가 프로듀서에게 acks를 보낸다.
만약 팔로워 파티션의 전체 개수만큼, 옵션값을 설정한다면
하나의 팔로워, 즉 하나의 브로커를 꺼버리면, 전체 클러스터의 장애로 이루어지게 된다.
즉, 완전 무손실을 위한 acks=all은 min.insync.replica의 옵션값이 중요하며, 해당 전체 장애로 이루어질수있기 때문에
브로커 개수를 신경 써야한다.
물론 아주빠르지만 손실을 감안하게 되면, acks=0으로 둘수도 있다.
'Develop > [Kafka]' 카테고리의 다른 글
[Kafka] Kafka-console-consumer (0) | 2023.08.13 |
---|---|
[Kafka] kafka-console-producer (0) | 2023.08.07 |
[Kafka] 토픽 생성 및 파티션 설정 (0) | 2023.08.01 |
[Kafka] 카프카 재시작시 발생하는 에러 (0) | 2023.08.01 |
[Kafka] Kafka Zookeeper,Broker 세팅 및 실행 (0) | 2023.07.27 |