중앙에 메세징 시스템 서버(카프카)를 두고 각 서버에서 메세지를 보내고 받는 형태의 PUB/SUB 통신을 한다

카프카 서버로 이루어진 클러스터
카프카 서버
분산 코디네이션 시스템
카프카 클러스터에 데이터를 관리할 시 그 기준이 되는 개념
하나의 토픽은 한개 이상의 파티션으로 구성되어 있음
데이터를 관리하는 하나의 그룹
각 토픽 당 데이터를 분산 처리하는 단위
토픽 안에 파티션을 나누어 그 수대로 데이터를 분산 처리
카프카에서는 각 파티션 당 복제된 파티션 중에서 하나의 리더가 선출
이 리더는 모든 읽기,쓰기 연산 담당
리더를 제외한 나머지는 팔로워 -> 단순히 리더의 데이터를 복사

하늘색으로 칠해진 각 파티션들은 리더 파티션이고 이 파티션들에게 프로듀서가 쓰기 연산을 진행
리더 파티션에 쓰기가 진행된 후 업데이트된 데이터는 각 파티션의 복제본들에게로 복사
프로듀서가 파티션들에게 write 연산을 진행하는 방법

카프카는 데이터를 순차적으로 디스크에 저장하는데 따라서 저장된 데이터 뒤에 append 형식으로 데이터를 추가하게 된다.
이때 각각 파티션들의 데이터 집합을 offset이라고 한다
이 데이터의 EXPIRE DATE는 직접 지정할 수 있으며 DEFAULT는 7일이다
컨슈머가 consume 하는 방법
컨슈머그룹의 각 컨슈머들은 파티션의 오프셋을 기준으로 데이터를 순차적 처리한다.
컨슈머 그룹으로 나누어서 데이터를 처리하는데 같은 그룹 내의 컨슈머는 따라서 절대 같은 파티션의 데이터를 처리하지 않는다