Step 1 : GET KAFKA
아래에서 최신 버전 카프카 다운로드(일단 최신으로 한번해보자구 ..)
https://kafka.apache.org/downloads
Apache Kafka
Apache Kafka: A Distributed Streaming Platform.
kafka.apache.org
원하는 위치로 옮긴 이후 압축 해제
tar -xzf kafka_2.13-3.4.0.tgz
cd kafka_2.13-3.4.0

bin -> binary, ShellScript
config -> 설정에 필요한 파일들 *server.properties
libs -> binary에서 필요한 라이브러리들
추가로 data 디렉토리 생성해두자
#broker 에서 생성되는 데이터 저장을 위해 디렉토리를 미리 만들자
mkdir data
# 이후 server.properties 파일 수정
#listener, advertised.listeners 에 localhost 변경
listeners=PLAINTEXT://localhost:9092
advertised.listeners=PLAINTEXT://localhost:9092
#3. log.dirs 를 위 /data와 매핑
log.dirs=/Users/yunsangdon/Project/nice/kafka/kafka_2.13-3.4.0/data
아직 많이쓰이는 주키퍼가 아닌, Kafka 2.8.0 이후에 Kafka 자체적으로 quorum 을 관리하는 버전으로 구성을 해보려 한다..
여기서 quorum 이란?
쿼럼은 말 그대로 의사 결정에 필요한 정족수다. 표준국어대사전을 찾아보면 정족수는 "합의체가 의사를 진행하고 결정하는 데에 필요한 최소한의 출석 인원"이라고 나와있다. 마치 서킷 브레이커처럼 현실의 어떤 용어가 프로그래밍 쪽에서 꽤 잘 어울리는 형태로(?) 정착한 것 같다. 여튼 정족수라 함은 예를 들어 이런 것이다. 나는 이번달 회식 메뉴를 한우 오마카세로 정하고 싶다. 우리 팀은 5명인데 팀원 중 n명이 동의하면 오마카세를 먹으러 갈 수 있다. 이때 n은 팀원이 총 5명이므로 1 ≤ n ≤ 5이다.
즉 쿼럼은 좁은 의미에서는 어떤 동작을 하기 위해서 필요한 최소한의, 동등한 무언가들의 찬성표 개수를 뜻한다. 넓은 의미에서는 특정 행위를 하기 위해서 정족수가 필요하다는 규칙을 가리킨다.
STEP 2: 카프카 환경 시작하기
NOTE : Java 8+ 설치가 되어있어야함.
Apache Kaka 는 Zookeeper or KRaft를 사용해야 구동되는데, 이중 자체 관리가 되는 KRaft를 활용하여 구성을 해보겠다.
Kafka with KRaft
먼저 Cluster UUID 를 생성하자
KAFKA_CLUSTER_ID="$(bin/kafka-storage.sh random-uuid)"
#한번 ID를 체크해보고,
echo $KAFKA_CLUSTER_ID
다음은 로그 디렉토리 포맷
bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
Kafka 서버 START!!
bin/kafka-server-start.sh config/kraft/server.properties
# 실행 메시지 확인
#[2023-02-21 22:39:00,908] INFO [KafkaRaftServer nodeId=1] Kafka Server started (kafka.server.KafkaRaftServer)
브로커, 토픽 확인해보기
#브로커 상태 확인
bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
#토픽 리스트 확인
bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
추가로 향후 원활한 진행을 위한 작업들
1. hosts 추가
127.0.0.1 sd-kafka
2. alias 설정
#.zshrc 수정
#vi .zshrc
#alias 추가
alias cdkafka="cd /Users/____/Project/nice/kafka/kafka_2.13-3.4.0"
#alias 적용
source .zshrc