Kafka 토픽 관리

jingyu·2022년 6월 28일
0

MSA

목록 보기
2/5

Kafka의 토픽 관리 방법에 대해 설명한다.

Topic?

Kafka에 저장되는 데이터를 Topic이라는 이름으로 구분
Kafka의 Topic은 데이터베이스의 Table 개념과 유사

Topic 생성 규칙

실시간 Streaming 환경에서는 분석 데이터 모델별로 Topic을 생성해야 함
사용자는 Application으로 데이터를 전송하고 Kafka는 Application에서 요청한 분석 모델별로 Topic을 생성
사용자가 Kafka로 직접 전송하면 안됨

Topic 관리

Topic 생성

데이터 Producing할 때 Topic이 없을 경우 Kafka에서 Topic을 자동 생성해 줌

Topic 생성 옵션 : True (default)

Application에서 특정 Topic에 데이터를 전송할 경우 Topic을 자동 생성하게 함

Topic 삭제

  • 방법1) Topic 모니터링 관리
    JMX로 Topic 상태값을 수집 후 삭제 조건에 일치하는 Topic은 삭제하도록 구성
    e.g.) 15일 동안 미사용으로 보이는 Topic들을 삭제한다
    삭제하기 N일 전부터 알람을 전송하여 중요한 토픽들은 삭제되지 않도록 시스템을 구성

<출처 : https://www.slideshare.net/ifkakao/ss-113145591>

  • 방법2) Kafka 관리자가 직접 Topic 생성 및 삭제
    Topic 자동 생성 설정을 False로 변경
    Kafka 관리자가 Topic에 대한 생성, 삭제를 직접 관리함

Topic 정책

Serving 개발 환경에서 Topic은 Application에서 데이터 전송시 자동 생성하고 사용하지 않는 Topic은 모니터링으로 일정 시간 지난 후 삭제한다.
Serving 운영 환경에서 Topic은 Kafka 관리자가 생성 및 삭제를 관리한다.


Kafka 클러스터 내에서 적정한 Topic 수

클러스터의 서버 스펙이나 서버 대수마다 다를 수 있으나, 클러스터에 500개 미만으로 구성 (from. 카카오)
Kafka FAQ에서는 많은 수의 topic을 가지는 것보다는 적은 개수의 큰 topic을 가지는 것을 권장
Topic이 있으면 Broker들이 Replication하고 있기에 불필요하게 Topic을 바라보고 있으니 미사용 Topic은 제거하는게 좋음

Topic 개수별 Latency 테스트

8GB RAM, 140GB SSD를 장착한 Ubuntu 15.10 환경
10만개의 4KB 크기의 메시지를 보내며 10번을 반복
Topic 1개, 50,001개, 120,001개일 경우에 테스트
Topic 1개와 50,001개의 Latency는 비슷
<출처: https://dhsim86.github.io/web/2017/04/11/kafka_how_many_topics-post.html>

참고
https://www.slideshare.net/ifkakao/ss-113145591
https://dhsim86.github.io/web/2017/04/11/kafka_how_many_topics-post.html
https://i.engn.me/notes/conference/if-kakao-dev2018/undefined

profile
내일을 향해 쏴라!

0개의 댓글