2020. 11. 14. 22:58ㆍㄱㅐㅂㅏㄹ/OSS(Open Source Software)
kafka는 disk 기반 분산 메시징 시스템
기본 개념
· publish-subscribe 모델로 동작
· producer(발행), consumer(소비), broker(중개) 로 구성됨
· 메시지는 topic 이라는 기준으로 관리되고 topic을 발행하고 중개하여 소비하는 구조를 가짐
· topic은 세부적으로 partition 으로 분산 저장되고 해당 topic은 partition ID + offset 값으로 식별됨
· 분산환경으로 구성되어 broker 들이 클러스터로 구성되어 동작하도록 되어 있고 broker 가 단 한개이더라도 클러스터로 동작
· 범용시스템에서 제공하는 기능들은 기대하면 안되고 TCP 기반으로 오버헤드를 감소시켜 동작
· in memory 가 아닌 disk에 메시지를 저장하기에 영속성을 확보했고 메모리 방식에 비해 disk가 가지는 여러 단점들을 zero-copy, OS 페이지 캐시등을 이용해 감소시킴
· 여느 메시징과 다르게 broker 가 consumer 에서 push하지 않고 consumer 가 자신이 필요한만큼(처리가능한 만큼) broker 로부터 pulling 해서 처리 - 해당 특징으로 batch 성의 소비도 가능
· 이외에 consumer group 등의 topic의 액세스 관련 개념들이 존재
· 기본적으로 broker의 관리는 zookeeper 에 의존하여 동작
Apache Kafka
Apache Kafka: A Distributed Streaming Platform.
kafka.apache.org
1. 서버 실행
· zookeeper 서버 : kafka 내부에 있는 zookeeper 포함. 외부 zookeeper 를 이용해도 무관
- kafka_2.xxxx.tgz 압축해제
- 해당 경로로 이동
(properties 를 수정하지 않고 그대로 기동)
> .\bin\windows\zookeeper-server-start.bat .\config\zookeeper.properties

· kafka 서버
> .\bin\windows\kafka-server-start.sh .\config\server.properties

2. Topic 생성
- Partition 1개, 1 replica 을 가진 "bjlee_test" topic 명으로 생성
- tmp\kafka-logs 폴더에서 파티션정보를 확인할 수 있다.
- 생성된 topic은 --alter 옵션을 통해 변경가능. 단, partition/replica 는 변경 불가능. 기본설정을 운영환경에 적절하게 설정필요
> .\bin\windows\kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic bjlee_test Created topic "bjlee_test".
3. 메시지 전송
- 테스트용도로 사용
> .\bin\windows\kafka-console-producer.bat --broker-list localhost:9092 --topic bjlee_test This is a message This is another message
4. consumer 시작
- 테스트용도로 사용
- --from-beginning 옵션을 통해 consumer 가 언제 시작되던 topic 기준으로 발행된 메시지는 disk에 저장되어 읽어 올 수 있다.
> .\bin\windows\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic bjlee_test --from-beginning This is a message This is another message'ㄱㅐㅂㅏㄹ > OSS(Open Source Software)' 카테고리의 다른 글
| [DevOps] Sonarqube로 코드 품질과 커버리지, 두 마리 토끼 잡기 (실무 적용 가이드) (0) | 2026.01.04 |
|---|---|
| Jenkins 설치(docker image) (0) | 2021.07.28 |
| logback 에서의 rolling 정책 사용시 주의사항 (0) | 2021.01.07 |
| Cassandra 의 간략한 특징과 timestamp 에 대해 (0) | 2020.12.16 |