- Apache Kafka는 링크드인에서 개발된 분산 메세지 시스템이다.
- 2011년 오픈소스로 공개되었고 → 14년 11월 confluent가 창립된다.
- 대용량의 실시간 데이터 처리에 특화된 아키텍쳐로 설계되었다.
탄생 배경
- 링크드인 사이트가 급속도로 성장하면서 발생하는 실시간 이슈를 처리할 필요성이 대두되었다.
- 실시간 트랜잭션 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없어서 복잡도가 증가했다.
- 데이터 파이프라인 관리 복잡도(하둡, DB 등)가 심했다.
시스템 목표
- 프로듀서와 컨슈머의 분리
- 기존 메세징 시스템과 같이 영구적인 메세지 데이터를 여러 컨슈머에게 허용
- 높은 처리량을 위한 메세지 최적화
- 데이터가 증가함에 따라 스케일 아웃이 가능한 시스템
카프카 개발 전/후 데이터 처리 시스템 비교
Before
- end-to-end 연결 방식의 문제점 발생
- 구조가 복잡함
After
- 이벤트/데이터의 흐름을 중앙에서 일괄적으로 관리
- 구조가 훨씬 간결해졌다.
카프카의 지향점
카프카를 메세지 전달의 중앙 플랫폼으로 두고 필요한 모든 DB 시스템(실시간 분석 시스템, 하둡, MSA 등등)과 연결된 파이프라인을 만드는 것을 지향
카프카의 특징 및 데이터 모델
동작방식 및 원리
메세지 시스템
- producer(publisher)
- 데이터 단위를 보내는 부분
- consumer(subscriber)
- 토픽이라는 메세지 저장소에 저장된 데이터를 가져가는 부분
- 중앙에 메세지 시스템 서버를 두고 메세지를 주고 받는 형태의 구독/배포 모델
구독/배포 모델
- 발신자의 메세지엔 수신자가 정해져있지 않은 상태로 발행한다.
- 구독을 신청한 수신자만 메세지를 받을 수 있다.
- 일반적인 형태의 통신은 통신에 참여하는 개체끼리 모두 연결해야 해서 구조가 복잡해지고 확장성이 낮다.
- 구독/배포 모델은 구조도 간단하고 확장성이 높다.
- 데이터 유실이 적다.
- 메세징 시스템이 중간에 있어서 전달 속도가 빠르지 않다.
- 직접 전송하지 않기 때문
- 중앙 카프카 시스템이 배포 메세지를 받고 구독 수신자에게 뿌려주는 형태로 구성
'잡다한 기술' 카테고리의 다른 글
[zookeeper] Apache Zookeeper? (0) | 2021.12.31 |
---|---|
[zookeeper] zookeeper에서 semaphore 사용하기 (0) | 2021.12.31 |
[zeppelin] Apache Zeppelin with Apache Spark? (0) | 2021.12.31 |
[django] Serializer에 분명히 해당 필드가 있는데 없다고 하는 경우 (0) | 2021.12.31 |
[git] ! [rejected] master -> master (non-fast-forward) 해결방법 (0) | 2020.02.02 |