Data Engineering/Kafka
[Kafka] 카프카 개념 정리
Zyung
2023. 9. 28. 09:54
사용하는 이유
- 높은 처리량으로 실시간 처리
- 임의의 타이밍에 데이터 읽기
- 다양한 제품과 시스템에 쉽게 연동
- 메시지를 잃지 않음
⇒ 데이터의 이동이 서비스나 모니터링, 데이터베이스 등 다양하게 이동하게 되는데 거기에 따른 많은 파이프라인 구축이 필요하게 된다.
이것을 한곳으로 모아서 데이터가 이동하게 해서 확장성과 안정성을 높이자!! ⇒ 카프카
💡 브로커가 있는 이유
- 접속처를 하나로 할 수 있다.
- 증감에 대응할 수 있다.
Kafka Cluster
- 카프카 브로커 여러개가 모여서 카프카 클러스터를 구성하게 된다.
- 브로커를 여러개 두는 이유는 ISR(In Sync Replica)가 가능하기 때문
- ISR
Kafka Broker
- 카프카 서버라고 생각하면 된다
- Topic
- 같은 토픽에 대해서는 같은 곳으로 모을 수 있다.
- Partition
- 키에 대해서 같은 파티션으로 이동하게 된다.
- 만약 순서가 중요한 데이터일 경우에는 키를 적절히 정하여 같은 파티션으로 들어가게 하는 것이 필요함
- 키가 없을 경우에는 해시로 적절히 배분된다.
- 컨슈머의 개수 <= 파티션의 개수
- 같은 것이 가장 이상적
- 키에 대해서 같은 파티션으로 이동하게 된다.
Kafka Producer
- 레코드를 생성하는 어플리케이션
Kafka Consumer
- 레코드를 받는 어플리케이션
- 그룹(Kafka Consumer Group)으로 운영 가능
- 하나의 그룹은 MySQL로 수신, 다른 그룹은 MongoDB로 수신하는 등 같은 레코드에 대해서도 다르게 처리할 수 있다.
- rebalance 지원: 장애에 대응하기 편리하다
Kafka Connect
- 작업의 형태를 하나의 템플릿으로 만들어 스레드나 프로세스로 병렬처리가 가능하도록 한다.
- REST API로 통신하며 해당 통신에 따라 새로 생성하고 삭제하며 관리할 수 있다.
- 오픈소스로 다양하게 제공된다(Mysql, HDFS 등)
- 다음과 같이 동기화하는데에도 사용할 수 있다.