Just Fighting

[Kafka] 카프카 개념정리 - 토픽 본문

Big Data

[Kafka] 카프카 개념정리 - 토픽

yennle 2022. 5. 11. 13:45
728x90

카프카에는 다양한 데이터가 들어갈 수 있음

이 데이터가 들어가는 공간을 토픽이라고 함

일반적인 AMQP와는 다르게 동작함

 

카프카는 토픽을 여러 개 생성할 수 있음

토픽은 데이터베이스의 테이블이나 파일시스템의 폴더와 유사한 성질을 가짐

프로듀서가 토픽에 데이터를 넣고, 컨슈머가 그 데이터를 가져감

토픽은 이름을 가질 수 있음. 무슨 데이터를 담는지 명시하면 추후 유지보수에 편리함.

 

하나의 토픽은 여러개의 파티션으로 구성될 수 있으며, 파티션의 번호는 0부터 시작함.

파티션에 데이터가 차곡차곡 쌓이게 됨.

컨슈머는 데이터를 가장 오래된 순으로 가져감.

더 이상 데이터가 들어오지 않으면 컨슈머는 새로운 데이터가 들어올 때까지 기다림.

 

이 때, 컨슈머가 데이터를 가져가더라도 데이터는 삭제되지 않는다. 파티션에 그대로 남음.

새로운 컨슈머가 붙으면 데이터를 다시 가장 오래된 데이터부터 가져갈 수 있음.

, 컨슈머 그룹이 달라야하고, auto.offset.reset = earliest여야함.

이렇게 하면 동일 데이터를 두 번 처리할 수 있음. 이게 카프카를 사용하는 중요한 이유!

예를 들어, 엘라스틱 서치에 저장을 할 수도 있고, 하둡에 저장을 할 수도 있음.

 

 

파티션이 여러 개일 때,

키가 null이고, 기본 파티셔너를 사용할 경우에는 라운드 로빈으로 파티션에 할당됨.

키가 있고, 기본 파티셔너를 사용할 경우네는 키의 해시값을 구하고 특정 파티션에 할당됨.

파티션을 늘릴 때 조심해야함. 파티션을 늘리는 건되지만 줄이는 건 불가능 하기 때문!

파티션의 개수를 늘리면 컨슈머의 개수를 늘려서 데이터 처리를 분산시킬 수 있음.

 

 

파티션에 있는 데이터를 삭제는?

삭제되는 타이밍은 옵션에 따라 다름.

레코드가 저장되는 최대 시간과 크기를 지정할 수 있음.

 

참고 : https://www.youtube.com/watch?v=7QfEpRTRdIQ&list=PL3Re5Ri5rZmkY46j6WcJXQYRlDRZSUQ1j&index=2 

 

728x90
Comments