
● 복잡해지는 아키텍처

● 이를 해결해기위해 나온것이 - Apache Kafka

● kafka 메시지 처리

● kafka 메시지 처리

● Apache Kafka
LinkedIn에서 최초로 만들고 opensource화 한 확장성이 뛰어난 분산 메시지 큐(FIFO : First In First Out)
→ 분산 아키텍쳐 구성, Fault-tolerance한 architecture(with zookeeper), 데이터 유실 방지를 위한 구성이 잘되어 있음
→ AMQP, JMS API를 사용하지 않은 TCP기반 프로토콜 사용
→ Pub / Sub 메시징 모델을 채용
→ 읽기 / 쓰기 성능을 중시
→ Producer가 Batch형태로 broker로 메시지 전송이 가능하여 속도 개선
→ 파일 시스템에 메시지를 저장하므로, 데이터의 영속성 보장
→ Consume된 메시지를 곧바로 삭제하지 않고 offset을 통한 consumer-group별 개별 consume가능
● 토픽: 데이터가 들어가는 공간
● partition의 record가 (일정기간)삭제되지 않음
● partition의 record 생명주기
→ log.retention.ms: 최대 record 보존 시간
→ log.retention.byte: 최대 record 보존 크기(byte)

● 이에 목적에 따라 동일한 데이터를 활용할 수 있다 (Elastic Search, Hadoop)
● partition과 consumer를 늘려 병렬처리를 할 수 있다.

● 카프카 프로듀서: 데이터를 토픽에 보내는 역할
Topic에 해당하는 메시지를 생성
특정 Topic으로 데이터를 publish
처리 실패/재시도
● Replication

● ISR

● 카프카 컨슈머
● 카프카 컨슈머의 동작은 다른 메시징 시스템과는 다소 다름

● 카프카 장애 및 컨슈머 재실행시 데이터 처리
__consumer_offsets 토픽의 offset 정보를 토대로 시작위치 복구 가능
→ 고가용성의 특징을 갖음

→ 컨슈머가 마지막으로 읽은 offset, 프로듀서가 마지막으로 넣은 offset의 차이: Lag
