본문 바로가기
MessageQueue/Kafka

kafka patitioning 과 replication, ack ISR 의 관계

by 아이티.파머 2023. 5. 3.
반응형

kafka patitioning 과 replication, ack ISR 의 관계

우리는 카프카를 사용하며 고가용성이다, 안정적이다는 이야기를 하며 사용한다. 어떤부분에 있어서 고가용성과 안정적인 부분이 있는지 알아보자.

카프카를 설치하고 토픽을 생성하며 우리는 replication 갯수, 그리고 partition 의 갯수를 정의하게 된다.
이때 replication 과 partation의 의미를 알아보자.

replication-factor 3 --partitions 3 우리는 토픽을 생성하며 보통 이렇게 옵션을 넣는다.

  • replication-factor 3 복제 본수에 대한 3벌
  • --partitions 3 파티션 3개

위에 설명 그대로 토픽 생성시 파티션 3개를 생성하고 , 토픽에 메세지가 오면 다른 파티션으로 복재본을 3개 만든다는 것이다.

즉 그림으로 보면 다음과 같다.

  • Ads Topic 라는 토픽을 만들며 파티션을 3가지 생성한다.
    • 생성된 파티션은 Leader, Follower partition 으로 생성된다. (이렇게 3개)
  • Ads Topic 이라는 곳으로 메세지가 전송되면 Leader Partition 으로 토픽 메세지가 전달된다.
  • Lead Partition으로 토픽이 전송된 뒤에 Follower partition인 partition#02, partition#03 으로 복제 된다.

이렇게 됨으로써 Broker Node#01이 동작불능 상태가 되어도 Broker #02가 Master로 승격하며 서비스가 정상 작동되고 메세지 유실없이 실행될 수 있다.

어디서 많이 본거 같지 않나요? Redis 나 Hadoop을 cluster로 묶었을때 장애가 발생되면 fail over 되는기능이랑 똑같죠. 물로 이것은 카프카도 clustering 설정을 했을때 입니다.

그럼 이제 ACK 모드와 ISR 에대해 이야기해보겠습니다. ACK 란 앞서 보았듯이 Producer 에서 topic에 메세지를 전달한뒤 송신여부를 확인 하는 설정입니다. ACK 모드는 세가지가 있습니다 0,1,ALL

이 세가지 모드를 하나씩 알아봅시다.

  • ack=0 메세지를 leader partition 으로 보내고나서 송신여부를 확인하지않습니다. 속도는 빠르지만 데이터 유실의 위험이 있습니다.
  • ack=1 ‘0’ 과 마찬가지로 메세지를 leader partition 으로 보냅니다. 이번엔 리더파티션으로 부터 송신여부를 응답코드로 확인합니다. 하지만 앞서 설정한 follower partition 으로 복제가 정상적으로되었는지는 체크하지 않습니다. ‘0’ 보다는 안정적이지만 Leader 가 폭파되고 나면 데이터 유실의 위험이 있습니다.
  • ack=ALL 마지막 버전입니다. 0, 1 의 옵션 플러스 follower partition 까지 잘 복제가 되었는지 확인합니다. 가장 안정적이지만 확인하고 체크하는게 많음으로 속도가 다소 느릴수 있습니다.

ACK 모드와 연관있는 ISR에 대해 알아보겠습니다.

ISR은 In sync replica 의 약어로 말그대로 Leader Partition에 있는 데이터들을 flowler partition으로 복제가 잘되었는지 확인 하는 생태를 말한다. 이용어가 생긴이유는 이렇다고 한다. Leader partition으로 데이터가 들어오고나서 follower partition 으로 복제가 일어날동안 텀이 생기게 되는데 이때 싱크가 맞는지 맞지 않는지에 대해서 확인 하는것이다. 이때 replica.lag.time.max.ms의 설정값을 넘겼는데도 복제가 되지 않게 되면 해당 fowller partition은 복제에 문제가 생겼다고 판단하고 ISR 그룹에서 제외되며 이는 Leader partition에 문제가 생겼을때 ISR에서 제외되었음으로 Leader로 선출될수 없다.

즉 ISR과 ACK 는 모두 별도의 역활을 가지고 있으며 ISR은 Replica set에 데이터가 잘 복제 되었는지 확인 할 수있는 개념이다.

반응형

'MessageQueue > Kafka' 카테고리의 다른 글

Message Queue 처리 구조에 따른 종류  (0) 2023.06.02
Event broker 와 Message broker 란?  (0) 2023.06.02
docker kafka 보안 설정  (0) 2023.05.31
kafka cluster 구성  (0) 2020.05.13
kafka 특징  (0) 2020.05.13