728x90
Apache Kafka의 등장 배경
💡 정의
Apache Kafka는 고성능 데이터 파이프 라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 수천 개의 회사에서 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼이다..
- 아파치 카프카는 링크드인에서 발생하는 이슈를 해결하고자 개발된 기술이다.
- 링크드인에서 사용하던 기존 아키텍쳐에서는 데이터 처리의 복잡도가 증가했고, 데이터 파이프라인의 관리가 어려웠다는 문제점이 있었다
- 시간이 갈수록 애플리케이션 개수가 늘어나고 데이터 전송 파이프라인이 늘어나기 시작하면서 아키텍처가 점차 복잡해졌다.
- 카프카는 이 문제점들을 해결하고 기업의 대용량 데이터를 수집하고 사용자들이 이를 실시간 스트림을 할 수 있게 해줬다.
LinkedIn의 사례(Before Kafka)
Apache Kafka Architecture
- 프로듀서(Producer)
- 메시지를 생산하여 브로커의 토픽으로 전달하는 역할
- 브로커(Broker)
- 카프카 애플리케이션이 설치되어 있는 서버 또는 노드를 지칭
-
컨슈머(Consumer)
-
브로커의 토픽으로부터 저장된 메시지를 전달받는 역할
-
-
주키퍼(Zookeeper)
- 분산 애플리케이션 관리를 위한 코디네이션 시스템
- 분산된 노드의 정보를 중앙에 집중하고 구성관리, 그룹 네이밍, 동기화 동의 서비스 수행
Apache Kafka 동작 원리
- Topic & Partition
- 메시지 분류 단위이다
- n개의 파티션 할당 가능하다
- 각 파티션마다 고유한 오프셋(offset)을 가진다
- 메시지 처리순서는 파티션 별로 유지 관리된다
- Producer & Consumer
- 프로듀서는 레코드를 생성하여 브로커로 전송한다
- 전송된 레코드는 파티션에 신규 오프셋과 함께 기록된다
- 컨슈머는 브로커로 부터 레코드를 요청하여 가져간다(polling)
Apache Kafka 고 가용성
- 고가용성을 위한 파티션 복제기능으로 데이터 유실 방지를 할 수 있다
- 기본 설정은 replicator factor는 3
- 리더 파티션, 팔로워 파티션
- 리더 파티션 : Kafka 클라이언트와 데이터를 주고 받는 역할
- 팔로워 파티션 : 리더 파티션으로 부터 레코드를 지속 복제(복제하는데 시간이 걸림). 리더 파티션의 동작이 불가능할 경우 나머지 팔로워 중 1개가 리더로 선출된다
- Kafka rack-awareness
- 1개의 Rack에 다수의 브로커를 집중 하는 것은 위험하다
- 다수의 Rack에 분산하여 브로커 옵션(broker.rack) 설정 및 배치한다
- 파티션 할당 및 레플리케이션 동작시 특정 브로커에 몰리는 현상을 방지한다
'4학년 공부 과정 > 분산 데이터베이스' 카테고리의 다른 글
하둡(Hadoop) - 주키퍼(Zookeeper) (0) | 2023.05.31 |
---|---|
하둡(Hadoop) - HBase - 2 (1) | 2023.05.24 |
하둡(Hadoop) - NoSQL Database, HBase - 1 (2) | 2023.05.24 |
하둡(Hadoop) - 네임노드, 세컨더리 네임노드, 데이터노드 및 장애대응 (0) | 2023.04.28 |
하둡(Hadoop) - 하둡 분산 파일시스템(HDFS) (0) | 2023.03.12 |