⭐kafka란?
kafka 는 pub-sub 모델의 메시지 큐 입니다. 분산환경에 특화되어있는 특징을 가지고 있습니다.
구성요소
Event
- Event는 Kafka에서 Producer 와 Consumer 가 데이터를 주고 받는 단위입니다.
Producer
- Producer는 kafka 에 이벤트를 게시(post)하는 클라이언트 어플리케이션을 의미합니다.
- Producer는 메시지를 생산(Produce)해서 브로커의 토픽으로 메시지를 보내는 역할을 하는 어플리케이션이나 서버 모두를 Producer 라고 부른다.
- Producer는 데이터를 전송할 떄 리더 파티현을 가지고 있는 kafka 브로커와 직접 통신합니다
Consumer
- Consumer는 Topic를 구독하고 이로부터 얻어낸 이벤트를 처리하는 클라이언트 어플리케이션 입니다.
- 컨슈머(Consumer)는 토픽의 파티션에 저장되어 있는 메시지를 소비(consume)하는 역할을 하는 애플리케이션이나 서버 모두를 컨슈머라 부릅니다.
- 컨슈머는 데이터를 요청할 때 리더 파티션을 가지고 있는 카프카 브로커와 통신합니다.
- 토픽의 파티션으로부터 데이터를 가져가기 위해 컨슈머를 운영하는 방법은 2가지로 토픽의 특정 파티션만 구독하는 컨슈머를 운영하는 것과 1개 이상의 컨슈머로 이루어진 컨슈머 그룹을 운영하는 것이다.
Topic
- 토픽은 카프카 클러스터의 브로커에서 데이터를 관리할 때 기준이 되는 개념입니다.
- 또는 어떤 주제의 데이터를 보관할지를 정하는 '주제'라고 생각해도 됩니다.토픽은 2종류의 파티션인 반드시 존재하는 리더 파티션(Leader Partition)과 존재할 수도 있는 팔로워 파티션(Follower Partition)으로 구성될 수 있습니다.여기서, '구성될 수 있다'는 말은 이 챕터의 '4) Replication Factor'에서 설명하겠습니다.
- 이벤트가 쓰이는 곳입니다 .Producer는 이 Topic에 이벤트를 게시합니다. 그리고 Consumer는 Topic으로 부터 이벤트를 가져와 처리합니다.
- Topic은 파일시스템의 폴더와 유사하며 , 이벤트는 폴더안의 파일과 유사합니다.
- Topic에 저장된 이벤트는 필요한 만큼 다시 읽을 수 있습니다.
Producer 와 Consumer의 분리
- Kafka의 Producer와 Consumer는 완전 별개로 동작을 합니다
- Producer는 Broker의 Topic에 메시지를 게시하기만 하면되며 , Consumer는 Broker의 특정 Topic에서 메시지를 가져와 처리를 하기만 합니다
- 이 덕분에 Kafka는 높은 확장성을 제공합니다. 즉 Producer 또는 Consumer를 필요에 의해 스케일 인 아웃하기에 용이한 구조입니다. 만약 producer와 Consumer가 직접적으로 연관을 가지고 있다면,확장 또는 축소시 이들을 모두 연결 또는 해체를 하기가 매우 번거롭고 어려웠을 것입니다.
🎈참조
'개발자 성장 일지' 카테고리의 다른 글
로드밸런싱 (0) | 2022.08.10 |
---|---|
Spring Boot Controller 어노테이션 (0) | 2022.08.05 |
EJB JEE (0) | 2022.08.03 |
Tomcat, JBoss 차이 (0) | 2022.08.03 |
@Transactional 그리고 @Commit (0) | 2022.07.22 |