리눅스/kafka

kafka consumer group 및 rebalancing 및 kafka-consumer-groups 명령어

정지홍 2024. 10. 11. 11:44

카프카에서는 기존에 round robin을 사용했으나 현재는 sticky partitioning을 사용

 

cosunmer group이란

  • 카프카의 메시지들은 topic 단위로 관리됨. 이 topic은 여러개의 partition으로 구성.
  • partition들을 여러 consumer가 효율적으로 분산하여 처리할 수 있게 하는 구조

consumer group의 특징

  • 병렬 처리 및 확장성
  • 내결함성(fault-tolerance)
  • Offset 관리:
  • 재조정(rebalance):

1. consumer명령어 실행시 그룹을 지정해줌.

이렇게 그룹을 지정하였다.

 

2. kafka를 실행했던 터미널로 가보면 아래와 같이 확인 가능

  • stabilized group group_01 generation 1
  •  for group group_01 for generation 1. the group has 1 members

 

 

3. 1번의 명렁어를 다시 실행해보면 아래와 같이 확인 가능

  • The group has 2 members, 0 of which are static.

 

 


  • kafka-consumer-groups --bootstrap-server ipAddr:port --list
    • 현재 만들어진 그룹을 조회


  • kafka-consumer-groups --bootstrap-server ipAddr:port --describe --group 그룹이름

consumer group에 대해서 조회

 

각각 2개 3개가 실행된 경우.... consumer id가 바뀜을 확인 가능
컨슈머가 없는 경우....


그룹을 지정 안하고 다음과 같이 보내자.

그러면 아래와 같이 출력되는데 log-end-offset과 lag가 변함을 볼 수 있다. ( 0에서 3으로...)


이번에는 txt파일로 입력값을 주자....

 


consumer group 삭제

kafka-consumer-groups --bootstrap-server ipAddr:port delete --group 그룹이름

이는 컨슈머를 다 종료 안시켜서 오류 발생하는 것
정상 종료
--describe사용시 존재하지 않는다고 알려준다.