메시지를 저장하는 저장소이다. 하나의 카프카 클러스터는 여러 개의 브로커로 구성되어 있다.
실제 데이터를 저장하는 공간, 브로커 하나는 하나의 서버
카프카 클러스터에 메세지를 보내는 역할
카프카 클러스에서 데이터를 조회한다.
메세지를 저장하는 단위 즉, 메세지를 구분하는데 사용한다. (주문용 토픽, 유저용 토픽 등) 파일 시스템에서 폴더와 같은 역할을 한다.
Topic이 논리적인 개념이라면 partition는 메세지를 저장하는 물리적인 파일을 말한다. 하나의 토픽은 하나 이상의 파티션에 존재한다.
partition는 append only 파일이므로 producer가 메세지를 보내면 순서대로 붙인다. 또한 consumer가 조회한 메세지에 대해 삭제를 하지 않고 offset을 활용해 조회된 데이터 이후의 데이터를 기록한다.
위에서 Topic은 하나 이상의 partition에 존재한다고 했는데 여러 개의 topic이 있을 경우 어떤 partition에 저장할까?
만약 key가 존재한다면 같은 key를 가진 메세지는 같은 파티션에 저장된다. 즉 같은 키를 가진 메세지들은 조회 시 순서를 보장받는다.
Consumer는 하나의 group에 속한다. consumer group에는 여러 consumer가 존재하는데 partition는 같은 group의 consumer에 대해서 하나씩밖에 연결되지 않는다. 즉 consumer group은 partition에 메세지를 순서대로 처리가 가능하다.