시도는 충분히 아름답다ㅎ
kafka는 scalar와 java로 만들어서 jvm 위에서 동작한다던데, 성능적인 요인을 따라 잡기 위한 zero copy나 Sequential IO 같은게 될지는 모르겠다.
아직은 Kafka의 내부 원리를 공부하는 단계이다.
1. hello 라는 토픽에 'hello world!' 문자열을 Produce한다.
해당 토픽에 컨슈머 그룹에 적용되지 않으면 자동으로 default라는 그룹에 속한다.
2. news 라는 토픽에 'this is consumed' 문자열을 Produce한다.
main.cpp에서 이미 news 토픽을 구독하는 Consumer를 생성했고, 'group1' 이라는 컨슈머 그룹에 등록시켰다.
3. 따라서 성공적으로 소비한 뒤, Consumed message를 출력했다.
messages 명령어를 통해 소비된 메시지(consumed)와 아직 소비되지 않은 메시지(unconsumed)를 표시한다.
일단 Kafka의 Consumer 내부 원리를 공부하면서, __consumer_offsets
토픽에 각 consumer group이 자기 토픽을 어디까지 소비했는지 offset을 기록하도록 구현하고 있다.
이게 까다로운게 컨슈머 그룹 안에서 새로운 컨슈머가 등록되거나 이동하는 상황을 상정해야한다.
아직 서버와 클라이언트를 구분하지 않고 책임의 분리에만 집중하고 있는데, 이거 클러스터랑 클라이언트 구분부터 먼저 진행해야겠다.
'kafka' 카테고리의 다른 글
Kafka 원리를 이용한 메시지 브로커를 직접 구현해보자 (3) | 2024.12.21 |
---|---|
Kafka는 고가용성을 어떻게 유지하는지 알아보자 (0) | 2024.12.17 |
Kafka가 대용량 트래픽에 뛰어난 성능을 보이는 이유 (0) | 2024.11.21 |
동물원을 탈출한 Kafka를 잡아왔습니다 (0) | 2024.11.21 |
동물원을 탈출한 Kafka를 찾습니다 (0) | 2024.11.21 |