전체 글(50)
-
Consumer Group 삭제하기
일반적으로 Consumer Groups는 자동으로 삭제되지 않는다. 우선 describe를 통해 이미 만들어진 Consumer Group을 확인해본다. Consumer Group을 delete를 하기 위해서는 해당 Consumer Group에 속해있는 모든 Consumer가 하나라도 살아있으면 안된다. 터미널 탭중 consumer 탭이 살아있으면 consumer_id 가 붙게되고 consumer_id가 없어야지만 삭제할 수 있다. 우선 열린 터미널 탭 중 Consumer 탭들을 다 삭제해준다. (내 경우는 consumer_id 종류가 2개이므로 2개의 탭에서 ctrl+C 를 실행한다.) 그리고 다시 삭제 명령어를 실행시키면 group이 잘 삭제된다. list로 조회했을 때도 group 명이 없는 것을 알..
2023.08.07 -
kafka-consumer-groups 명령어로 group, consumer, Lag 확인하기
앞서 작성한 consumer group 에서 consumer 추가 및 삭제 시 rebalancing이 일어나는 것을 볼 수 있었다. 그리고 Kafka console CLI 중 kafka-consumer-groups 를 이용하여 consumer group에 대한 정보를 얻을 수 있다. Consumer group과 Consumer 생성 우선 두개의 탭을 열어 하나는 zookeeper 서버 구동, 다른 하나는 Kafka 서버 구동을 한다. 그리고 producer 탭 역할을 할 새로운 터미널 탭을 열고 멀티 파티션을 가질 새로운 topic 을 만들어준다. (내 경우에는 이미 동일한 토픽명을 가진 토픽을 만든적이 있어서 삭제하고 다시 만들었다.) 그리고 새로운 탭을 열어 group_id = 01 인 consume..
2023.08.07 -
Consumer Group과 Consumer
Consumer Group과 Consumer 의 이해 - 모든 Consumer들은 하나의 Consumer group에 소속해야하며, Consumer Group은 1개 이상의 Consumer를 가질 수 있다. - 파티션의 record들은 단 하나의 Consumer에만 할당된다. - Consumer Group 내에 Consumer 변화가 있을 때 마다 파티션과 consumer의 조합을 변경하는 rebalancing이 발생한다. - 모든 consumer들은 고유한 group.id를 가지는 Consumer group에 소속되어야 한다. - 만약 Partition 0~ 3까지 하나의 Consumer 1에서 할당되게 된다면, 이 때 Consumer 1에서는 각 파티션(batch)의 메시지 순서를 보장하지는 않는다...
2023.08.07 -
key가 없는 메시지의 파티션 분배전략 - Round Robin, Sticky Partitioning
여러 개의 파티션을 가지는 topic에 Key가 없는 메시지를 보낼 때 어떻게 producer가 key가 없는 메시지들에 대하여 어떤 파티션 분배전략을 통해 브로커 내 파티션에 메시지를 보내는지 알아본다. 메시지가 들어오면 바로 broker 내 파티션으로 보내지 않고, 해당 topic 내 해당 Partition으로 갈 batch에 메시지를 미리 담는다. 개별 batch들은 여러개의 record(메시지)로 되어있고, 이 batch가 가는 Partition 은 이미 정해져 있다. 그리고 이 batch level로 메시지를 보낸다. key가 없는 메시지의 파티션 분배전략 - Round Robin(RR) : kafka 2.4 버전 이전 기본 파티션 분배 전략 (순차적이다) - Sticky Partitioning..
2023.08.07 -
여러 개의 파티션을 가지는 Topic에 메시지 전송
zookeeper 서버 기동 및 kafka 서버 기동 기존에 만들어둔 zoo_start.sh, kafka_start.sh를 각각 다른탭에서 실행시킨다. https://younse.tistory.com/34 여러 개의 파티션을 가지는 Topic 생성 topic 명은 'multipart-topic' , 파티션 개수는 3개로 지정해주었다. (describe 로 잘 만들어졌는지 확인까지) 그리고, data 하위폴더에 있는 kafka-logs에 해당 토픽이 있는지 확인한다. Topic에 간단한 메시지 보내기 메시지를 보내기 전에 일단 kafka-console-consumer를 수행하여 메시지 읽는 것을 미리 대기시킨다. 터미널에 새로운 탭을 만들고 그곳에 kafka-console-consumer를 실행시켜 con..
2023.08.07 -
key값에 따른 메시지 전송 방식
앞서 메시지는 Producer를 통해 전송 시 Partitioner를 통해 토픽의 어떤 파티션으로 전송되어야할 지 미리 결정이 되야한다고 했고, 이 과정을 파티셔닝 과정이라고 설명했다. 파티셔닝 과정에서 'key'값의 유무에 따라 메시지 전송 방식이 다르기 때문에 해당 개념을 알아보자. Key값을 가지지 않는 메시지 전송 만약 key값을 가지지 않는 경우 라운드 로빈(Round Robin), 스티키 파티션(Sticky Partition) 등의 파티션 전략 등이 선택되어 파티션 별로 메시지가 전송될 수 있다. 만약 라운드 로빈 방식(순차적)으로 메세지를 보낸다고 하면 다음처럼 메세지가 파티션별로 들어가게 된다. 다만, Topic이 여러 개의 파티션을 가질 때 메시지의 전송 순서가 보장되지 않은 채로 Con..
2023.07.05