-
Apache Kafka 요약기록해야 기억한다/OSS(Open Source Software) 2020. 11. 14. 22:58
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 에 의존하여 동작
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
반응형LIST'기록해야 기억한다 > OSS(Open Source Software)' 카테고리의 다른 글
Jenkins 설치(docker image) (0) 2021.07.28 logback 에서의 rolling 정책 사용시 주의사항 (0) 2021.01.07 Cassandra 의 간략한 특징과 timestamp 에 대해 (0) 2020.12.16 Sonarqube - 정적 분석, Coverage (0) 2020.12.01