카프카 등장배경
Source Application과 Target Application이 증가함에 따라 그 복잡도 또한 비례하여 확장성 및 장애에 취약했다.
그래서 Source Application과 Target Application 간 결합도를 약하게 하면서 단순화 하기 위해 등장.
Kafka는 라이브러리로 되어 있어 Application에서 쉽게 구현 가능,
Produser는 데이터를 Kafka에 넣는 역할,
Consumer는 Kafka에 있는 데이터를 가져오는 역할.
| Producer | -> | Apache Kafka (데이터 전송) | -> | Consumer |
|---|---|---|---|---|
| Source Apllication | (Topic == queue)#1 | Target Application | ||
| (Topic == queue)#2 | ||||
| (Topic == queue)#3 |
토픽여러개 생성가능
토픽에 데이터 넣음.
토픽명 명명가능
하나의 토픽은 여러개 파티션으로 구분 가능
데이터는 가장 오래된 순서 (0번)부터 가져감. (FIFO원칙)
컨슈머가 데이터를 가져가도 데이터는 삭제 안함
새로운 컨슈머가 다시 0번부터
| 메시지 브로커 | 이벤트 브로커 | |
|---|---|---|
| 방식 | 데이터 전송 -> 처리 -> 삭제 | 데이터 전송 -> 처리 -> 보관 |
| 종류 | 레디스큐, 레빗엠큐 | 카프카, 키네시스(aws) |