kafka

Kafka의 내부 원리를 공부하기 위한 토이프로젝트

downfa11 2024. 12. 21. 16:41

시도는 충분히 아름답다ㅎ

 

 

 

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을 기록하도록 구현하고 있다.

이게 까다로운게 컨슈머 그룹 안에서 새로운 컨슈머가 등록되거나 이동하는 상황을 상정해야한다.

 

아직 서버와 클라이언트를 구분하지 않고 책임의 분리에만 집중하고 있는데, 이거 클러스터랑 클라이언트 구분부터 먼저 진행해야겠다.