1. Kafka
💬 이벤트 스트리밍
- 시스템 사이에서 대용량 메세지를 지속적으로 넣어지고 빼지기를 하기 위한 메세징 큐 종류
- 실시간 비동기 처리 시스템
- 확장성이 좋은 분산 스트리밍
2. Kafka 용이점
💬
- 높은 처리량을 실시간으로 처리하는 경우
- 메세지를 받는 시스템이 받지 못하는 상황이 있을 수 있어도
메세징 큐
에 메세지가 유실되지 않고 간직하고 있다. (파일 시스템에 저장)
- 여러 시스템이랑 연동이 좋다.
- 여러 시스템이 한 주제에 쓰고 여러 시스템이 가져갈 수 있다.
3. Kafka 용어 정리
💬 zookeeper
- zookeeper는 kafka와 직접 통신하면서 kafka의 상태관리 및 메타 데이터를 관리한다.
- zookeeper에 저장되는 데이터는 메모리에 저장되어 처리량이 크고 속도도 빠르다.
💬 broker
- producer와 consumer 사이에 메세지를 중계하는 데몬 프로세스
💬 producer
💬 consumer
💬 consumer group
- consumer가 여러 개 있을 시 consumern group을 지정한다.
- 메세지를 가지고 있는 각 파티션에 대해 offset 값을 할당 받는다.
- group id 이름이 같을 시 같은 그룹이며, topic에 대하여 오프셋을 공유하며 해당 파티션에 대해 메세지를 어디까지 읽었는지 의미한다.
- gorup id 이름이
같은
3개의 consumer 일 경우
offset을 공유하기 때문에 3개의 consumer들이 메세지를 하나씩 돌아가면서 받는다. (분배)
만약 1개의 consumer가 장애가 발생하여 메세지를 받지 못하는 경우가 생기면 나머지 consumer가 장애난 counsumer의 메세지를 읽을 수 있도록 리밸런싱이 된다.
- gorup id 이름이
다른
3개의 consumer 일 경우
offset을 공유하지 않기 때문에 3개의 consumer들이 다 똑같은 메세지를 받는다.
💬 topic
- Kafka로 받은 메세지들을 종류별로 관리하는 단위
💬 partition
- 토픽에 대한 대량의 메세지를 입출력 지원하기 구성하는 데이터 저장소
- 토픽을 구성하는 데이터의 저장소로 수평 확장이 가능하다.
- kafka에서는 브로커 당 약 2천 개 정도의 최대 파티션 수를 권장
- 파티션은 제약없이 늘릴 수 있지만 줄일 수는 없다.
파티션을 삭제하면 그 안에 있던 데이터가 삭제되기 때문에이다. (Kafka 지속성 특징에 위배)
💬 offset
- consumer group마다 topic partition에 대해 offst을 관리한다.
- 파티션 내에서 메세지의 위치를 표시하는 값
- consumer는 offset의 값으로 자기가 어디까지의 메세지를 읽었는지 관리한다.
📚 참고
https://kafka.apache.org/documentation/