카프카 처음 시작해보기

문지은·2022년 6월 7일
0
post-thumbnail

apache kafka 공홈

카프카란?

  • event streaming platform (실시간 성 데이터 처리)

카프카 특징

  • high throughput : 높은 처리량
  • scalable : 확장이 쉬움
  • permanenet storage : 고가용성 (fault-tolerant) 이 높음
  • high availability : json, csv 등 다양한 데이터 포맷에 적용 가능

카프카 동작 원리 간단하게 설명

TCP network를 통한 serverclient로 이루어진 분산 시스템

  • server
    많은 서버들이 클러스터를 이루어서 동작 -> 고가용성 높음
    brokers (데이터 저장 레이어), kafka connect (계속 데이터 import/export)로 이루어짐

  • client
    다양한 애플리케이션과 microservices에 데이터를 write하게 해줌

main concepts and terminology

  • event : 발생한 사건. 데이터
  • producers : kafka에 데이터를 write (publish)하는 주체
  • consumers : kafka에 쌓인 데이터를 read or process (subscribe)하는 주체
  • topics : event들은 topic안에 저장되어 있음. produer와 consumer 사이의 연결 고리 역할이며 m:n 관계를 가짐. event는 소비되면 삭제되는 것이 아니라 kafka에서의 유지 기간을 설정할 수 있음.
  • partitioned : topic들은 partitioned 됨. 즉 하나의 topic 안에서 여러개의 partition을 가지며 데이터를 분산하여 저장하며 client에서 kafka에서 read / 다른 애플리케이션에 write를 동시에 진행할 수 있게 함 -> 확장성에 중요한 역할. 이 때 same event key를 가진 데이터들의 순서는 보장됨.
  • replicated : 고가용성과 hightly-available을 위해서 topic들은 replicated 됨. 보통 3개의 replication factor를 가짐.

그럼 카프카를 사용해볼까요?

카프카 설치 및 실행

# home brew 를 이용해서 카프카 설치
brew install kafka

# Zookeeper 시작
# Note: Soon, ZooKeeper will no longer be required by Apache Kafka. -> 아직은 아닌듯하다
/usr/local/bin/zookeeper-server-start /usr/local/etc/zookeeper/zoo.cfg

# Apache Kafka 시작
/usr/local/bin/kafka-server-start /usr/local/etc/kafka/server.properties

topic 생성

카프카에서는 event들은 topic에 저장한다. 그래서 event를 쓰려면 먼저 topic을 생성해야 한다.

# kafka-topics가 있는 디렉토리로 이동
# 내 경우에는 /usr/local/bin

# topic 생성
kafka-topics --create --topic quickstart-events --bootstrap-server localhost:9092

# topic 정보 보기
kafka-topics --describe --topic quickstart-events --bootstrap-server localhost:9092

생성 완료~

topic에 event 보내고 읽기

# event write
kafka-console-producer --topic quickstart-events --bootstrap-server localhost:9092

# event read
kafka-console-consumer --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

카프카 종료

켜두었던 Kafka consumer, Kafka broker, ZooKeeper 종료

# 카프카 관련 설정 삭제하고 싶다면
rm -rf /tmp/kafka-logs /tmp/zookeeper
profile
백엔드 개발자입니다.

0개의 댓글