스터디/[카프카 인 액션] (2024.12)

[카프카인액션] 1장. 특징 | 3가지 방식 | 적합하지 않을 수 있는 경우

ttoance 2024. 12. 7. 22:23

1장. 카프카 소개 

https://kafka.apache.org/intro

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

1. 카프카의 특징

- 메시지 큐처럼 레코드를 읽고 쓴다.

- 내결함성(fault tolerance)으로 레코드를 저장한다.

- 스트림이 발생할 때 처리한다. 

* fault tolerance : https://kafka.apache.org/0102/documentation/streams/architecture#streams_architecture_recovery

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

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, 누군가가 처우서 대금을 지불했다는 메시지를 놓치지 말아야 할 경우, 중복으로 인해 컨슈머 단에서 필터링해야 할 수는 있겠지만 가장 안전한 배달 방식 

최소 한 번 시맨틱 at-least-once semantics

 

 

2) 최대 한 번 시멘틱 at-most-once semantics : 메시지는 단 한 번 보내며 실패하더라도 재발송하지 않는다.

- 프로듀서가 메시지를 한 번 보내면 절대 재시도하지 않는다. 

ex, 웹사이트가 방문하는 페이지뷰 추적하고 있다면, 수백만 개중 소수의 페이지뷰 이벤트에 대한 분실은 괜찮을 것임.

최대 한 번 시멘틱 at-most-once semantics

 

3) 정확히 한 번 시맨틱 exactly-once-semantics: 메시지는 이 메시지의 컨슈머에게 단 한 번만 보인다. 

 

 

3. 카프카에 관한 오해 

- 카프카는 하둡과만 함께 작동한다. 

- 카프카는 다른 메시지 브로커와 동일하다. 

ㄴ 기본적으로 메시지를 리플레이하는 능력

ㄴ 데이터 병렬 처리 

 

4. 카프카가 적합하지 않을 수 있는 경우 

- 한 달에 한 번 이나 1년에 한 번만 집계 데이터에 대한 요약이 필요한 경우 + 빠른 답변, 데이터 재처리 능력이 필요하지 않는 경우 

ㄴ 이런 경우 1년 내내 카프카를 실행할 필요가 없다. 

- 데이터에 대한 기본 접근 패턴이 무작위 데이터 조회일 경우

ㄴ 기본적으로 인덱스 파일이 있지만, 관계형 데이터베이스와 비교할 수 있는 성능이 아님 

- 메시지의 정확한 순서가 요구된다면 워크로드가 얼마나 실용적인지 확인해야함 

ㄴ 정렬되지 않는 상황을 방지하려면 최대 1개의 프로듀서 요청 스레드와 함께 토픽의 파티션이 1개만 있는지도 확인해야 한다. 

ㄴ 다양한 우회 방안이 있지만, 한번에 그룹당 1개의 컨슈머로 제한하면 잠재적인 문제가 발생할 수 있음 

- 메시지 용량이 큰 경우, 메모리를 더 많이 고려해야 한다. 

반응형