Software/Kafka
Kafka
Ddooby_hi
2020. 12. 21. 13:47
Kafka 란?
프로젝트 운영업무(e커머스의 상품파트 소속 시) 중 kafka 라는 용어를 들었다.
Kafka 는 분산 스트리밍 플랫폼이며 데이터 파이프 라인을 만들 때 주로 사용되는 오픈소스 솔루션이다.
대용량의 실시간 로그처리에 특화되어 있는 솔루션이며 데이터를 유실없이 안전하게 전달하는 것이 주 목적인 메세지 시스템에서 빠른 퍼포먼스로 데이터를 처리 할 수 있다.
Kafka 용어
- Event : Kafka에서 Producer와 Consumer가 데이터를 주고 받는 단위이다.
- Producer : 데이터를 발생시키고 Kafka Cluster 에 적재하는 프로세스. Kafka에 이벤트를 게시(post)하는 클라이언트 application을 의미한다.
- Kafka Cluster : kafka 서버로 이루어진 Cluster를 말한다.
- Broker : Kafka 서버이다.
- Zookeeper : 분산 코디네이션 시스템이다. Kafka Broker를 하나의 Cluster로 코디네이팅하는 역할을 하며 나중에 이야기 할 Kafka Cluster의 Leader를 발탁하는 방식도 Zookeeper가 제공하는 기능을 이용한다.
- Topic : Kafka Cluster에 데이터를 관리할 시 그 기준이 되는 개념이다. 어떤 데이터를 관리하는 하나의 그룹이다.
- Partition : 각 Topic당 데이터를 분산 처리하는 단위이다.
- Leader / Follower : Kafka에서는 각 Partition당 복제된 Partition 중에서 하나의 Leader가 선출된다. 이 Leader는 모든읽기, 쓰기 연산을 담당하게된다. Leader를 제외한 나머지는 Follower가 되고 이 Follower 들은 단순히 Leader의 데이터를 복사하는 역할만 하게 된다.
- Consumer : Topic 을 구독하고 이로부터 얻어낸 이벤트를 처리하는 클라이언트 application을 의미한다.
Kafka 동작
Kafka의 Broker는 Topic을 기준으로 메세지(Event)를 관리한다.
Kafka의 Producer와 Consumer는 완전 별개로 동작을 한다.
Producer는 특정 Topic의 메세지를 생성한 뒤 해당 메세지를 Broker에 전달한다.
Broker가 전달받은 메세지를 Topic별로 분류하여 쌓아놓으면, Consumer는 Broker의 특정 Topic에서 메세지를 가져와 처리를 하기만 한다.
기타 메세지 시스템에서는 Broker가 Consumer에게 메세지를 Push하는 방식인데, Kafka는 Consumer가 Broker로부터 직접 메세지를 가지고 가는 Pull 방식으로 동작한다.(Consumer는 자신의 처리능력만큼만 Broker로 부터 가져가서 처리하기 때문에 최적의 성능을 낼 수 있다)