1장. 카프카 소개
https://kafka.apache.org/intro
1. 카프카의 특징
- 메시지 큐처럼 레코드를 읽고 쓴다.
- 내결함성(fault tolerance)으로 레코드를 저장한다.
- 스트림이 발생할 때 처리한다.
* fault tolerance : https://kafka.apache.org/0102/documentation/streams/architecture#streams_architecture_recovery
If a task runs on a machine that fails, Kafka Streams automatically restarts the task in one of the remaining running instances of the application.
In addition, Kafka Streams makes sure that the local state stores are robust to failures, too. For each state store, it maintains a replicated changelog Kafka topic in which it tracks any state updates.
2. 카프카가 제공하는 3가지 방식
1) 최소 한 번 시맨틱 at-least-once semantics : 메시지는 수신확인이 될 때까지 재발송한다.
- 프로듀서가 같은 메시지를 한 번 이상 보내어 브로커에 틀림없이 기록되도록 카프카를 구성할 수 있다.
- 메시지가 이 브로커에 쓰였음을 보증받지 못한다면, 프로듀서는 이 메시지를 다시 보낸다.
ex, 누군가가 처우서 대금을 지불했다는 메시지를 놓치지 말아야 할 경우, 중복으로 인해 컨슈머 단에서 필터링해야 할 수는 있겠지만 가장 안전한 배달 방식
2) 최대 한 번 시멘틱 at-most-once semantics : 메시지는 단 한 번 보내며 실패하더라도 재발송하지 않는다.
- 프로듀서가 메시지를 한 번 보내면 절대 재시도하지 않는다.
ex, 웹사이트가 방문하는 페이지뷰 추적하고 있다면, 수백만 개중 소수의 페이지뷰 이벤트에 대한 분실은 괜찮을 것임.
3) 정확히 한 번 시맨틱 exactly-once-semantics: 메시지는 이 메시지의 컨슈머에게 단 한 번만 보인다.
3. 카프카에 관한 오해
- 카프카는 하둡과만 함께 작동한다.
- 카프카는 다른 메시지 브로커와 동일하다.
ㄴ 기본적으로 메시지를 리플레이하는 능력
ㄴ 데이터 병렬 처리
4. 카프카가 적합하지 않을 수 있는 경우
- 한 달에 한 번 이나 1년에 한 번만 집계 데이터에 대한 요약이 필요한 경우 + 빠른 답변, 데이터 재처리 능력이 필요하지 않는 경우
ㄴ 이런 경우 1년 내내 카프카를 실행할 필요가 없다.
- 데이터에 대한 기본 접근 패턴이 무작위 데이터 조회일 경우
ㄴ 기본적으로 인덱스 파일이 있지만, 관계형 데이터베이스와 비교할 수 있는 성능이 아님
- 메시지의 정확한 순서가 요구된다면 워크로드가 얼마나 실용적인지 확인해야함
ㄴ 정렬되지 않는 상황을 방지하려면 최대 1개의 프로듀서 요청 스레드와 함께 토픽의 파티션이 1개만 있는지도 확인해야 한다.
ㄴ 다양한 우회 방안이 있지만, 한번에 그룹당 1개의 컨슈머로 제한하면 잠재적인 문제가 발생할 수 있음
- 메시지 용량이 큰 경우, 메모리를 더 많이 고려해야 한다.
'스터디 > [카프카 인 액션] (2024.12)' 카테고리의 다른 글
[카프카인액션] 2장. 레코드 | 브로커 | 프로듀서 | 컨슈머 | 주키퍼 | 커밋 로그 | 카프카 스트림즈 | 컨플루언트 클라이언트 | 스트림 처리 (3) | 2024.12.14 |
---|