탄생배경
아키텍처가 거대해 지면서 애플리케이션 사이 단방향 통신으로 모든걸 처리하기 어려워짐
기본구조
메시지 큐 구조
프로듀서 -> 카프카 -> 컨슈머
메세지를 컨슈머가 가져가도 카프카에서 메세지는 삭제되지 않는다.
컨슈머 커밋 : 토픽의 몇 번 메세지까지 읽었는지 저장한다.
카프카가 데이터 파이프라인으로 적합한 이유
1. 높은 처리량
네트워크 비용은 무시할 수 없음.
많은 양의 데이터를 묶음 단위로 처리(배치) 할수있음 -> 대용량 실시간 로그데이터 처리에 적합하다.
파티션을 이용해 병렬 처리할수 있다.
1 파티션 - 1 컨슈머
2. 확장성
카프카 브로커 개수를 필요에 따라 스케일 아웃 또는 스케일 인 할 수 있다.
스케일 아웃, 스케일 인 무중단으로 가능하다.
3. 영속성
전송받은 메모리를 파일 시스템에 저장한다.
페이지 캐시 영역을 메모리에 따로 생성하여 사용한다.
브로커에 장애가 발생하더라도 메세지가 날라가지 않는다.
4. 고가용성
카프카 클러스터 : 일반적으로 브로커 3개이상을 가지고 있다.
전달받은 메세지는 각각의 브로커에 동일하게 저장된다 -> 1개의 브로커에 장애가 발생해도 다른 브로커에 저장된 데이터를 사용할 수 있다.
데이터 타입
배치 데이터
- 한정된 데이터 처리
- 복잡한 키 조인 수행
- 시간, 일의 지연 발생
스트림 데이터
- 지속적으로 들어오는 데이터를 처리
- 단순한 키 조인 수행
- 분 단위 이하 지연 발생
인프런의 [아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지! 강의 들으면서 기록한 내용입니다.
'개발 > 공부' 카테고리의 다른 글
[코틀린][Gradle] build.gradle.kts 파일을 알아보자 (feat. Gradle과 Gradle Wrapper) (0) | 2023.10.10 |
---|