- 본격적으로 카프카 프로그래밍(Kafka Programing)으로 넘어가기 전, 컨슈머 그룹(Consumer Group)과 파티션(Partition)이 가지는 의미에 대해 더 알아보고 넘어갈 것이다.
두 가지 컨슈머(Consumer)에서 메세지 테스트
- 위와 같이 네 개의 터미널(Terminal)을 사용하는 환경으로 진행할 것이다.
- 왼쪽 두개의 터미널은 프로듀서(Producer), 오른쪽 두개의 터미널은 컨슈머(Consumer)가 될 것이다.
- 주키퍼(Zookeeper)와 카프카 브로커(Broker)가 돌아가고 있다는 가정하에 진행하고, 전 포스팅에 만들어둔
first-topic
을 사용한다. - 파티션 하나를 가진 토픽이다.
1 |
|
- 위와 같이 메세지를 보낼 수 있는 프로듀서를 생성한다.
- 다음, 위 이미지와 같이 컨슈머를 동시에 두 가지 생성한다.
문제 상황
1 |
|
- 각각의 컨슈머 그룹을 가지는 컨슈머를 만들었을 땐 모두가 메세지를 받았는데, 하나의 컨슈머 그룹으로 묶어주게 되면 컨슈머 중 하나만 메세지를 받게 된다.
1 |
|
- 프로듀서를 하나 더 추가하여 메세지를 날리는 경우에도 하나의 컨슈머로만 도착하는 것을 확인할 수 있다.
- 토픽이 가지고 있는 파티션(Partiton)이 하나뿐이기 때문이다.
- 파티션 하나는 무조건 컨슈머 그룹 안에서 하나의 컨슈머와만 매핑(Mapping)된다.
- 조금 더 리소스를 효율적으로 관리하기 위해서는 파티션을 여러가지로 설정한다.
문제 해결
- 파티션을 만들기 위해 새로운 토픽을 만들 것이다.
1 |
|
- 토픽을 확인한다.
second-topic
을 만들것이며, 두개의 파티션을 할당한다.
1 |
|
- 새로운 토픽을 생성했다.
1 |
|
- 프로듀서와 컨슈머 모두
second-topic
을 사용하게끔 교체하고,second-group
으로 할당한다.
1 |
|
- 위와 같은 명령어로 프로듀서에서 마구잡이로 메세지를 보내게 되면, 첫번째와 두번째 컨슈머가 균등하게 분배되어 받고 있는 것을 볼 수 있다.
- 분산 처리를 할 때 리소스가 균등하게 분배되어 더 효율적으로 사용할 수 있다.
- 파티션의 수는 분산처리를 할 때 중요하며 다음 포스팅부터 본격적인 카프카 프로그래밍을 실시할 것이다.