분산 이벤트 스트리밍 플랫폼
스트리밍을 처리하기 위한 플랫폼 (고성능)
https://kafka.apache.org
카프카 클러스터는 데이터 이동을 위한 핵심 역할을 맡는다.
메세지를 구분하는 용도로 사용한다. (예> 뉴스용 토픽, 주문용 토픽)
파일시스템의 폴더와 유사함
한 개의 토픽은 한 개 이상의 파티션으로 구성됨
프로듀서와 컨슈머는 토픽을 기준으로 메세지를 주고 받는다.
프로듀서는 라운드로빈 또는 키로 파티션 선택
컨슈머는 컨슈머그룹에 속한다.
한 개 파티션은 컨슈머 그룹의 한 개 컨슈머만 연결 가능
디스크 버퍼에서 네트워크 버퍼로 직접 데이터 복사
디스크에서 데이터를 읽어다가 네트워크로 보내는 속도가 뻘리짐
카프카 브로커는 메세지 필터, 메세지 재전송과 같은 일을 하지 않음 (프로듀서 컨슈머가 직접 함)
브로커는 컨슈머와 파티션 간 매핑 관리
프로듀서 : 일정 크기만큼 메세지를 모아서 전송 가능
컨슈머 : 최소 크기만큼 메시지를 모아서 조회 가능
낱개 처리보다 처리량이 증가한다.
수평 확장이 용이한 구조를 가지고 있다.
리플리카 : 파티션의 복제본
복제수 (replication factor) 만큼 파티션의 복제본이 각 브로커에 생김
토픽을 생성할 때 복제수를 2로 설정하면 동일한 데이터를 가지고 있는 파티션이 서로 다른 브로커에 2개가 생김
리더와 팔로워로 구성
프로듀서와 컨슈머는 리더를 통해서만 메세지를 처리함
팔로워는 리더로부터 데이터를 읽어서와서 저장함 (복제)
리더가 속한 브로커에 장애가 발생하면 다른 팔로워가 리더가 됨
성능 (높은 처리량)
고가용성
kafka 조금 아는 척하기 1 (개발자용)