Post

Kafka 분산처리 원리

kafka에는 데이터를 보내는 프로듀서, 그걸 받는 브로커, 소비하는 컨슈머가 있다.

프로듀서에서 보내진 데이터는 브로커 안의 토픽에 저장되게 되는데, 토픽 안에는 파티션이 있다.

예를 들어 서버가 3대이고 각 서버별로 kafka를 설치해서 클러스터를 구성한다면

토픽을 생성할 때 설정을 넣어줄 수 있다. 파티션과 레플리카로 나뉘는데, 파티션은 데이터를 어디에

나눠서 저장할지를 물어보는 것이고, 레플리카는 그 파티션의 복사본을 얼마나 생성할 것인지 묻는 것이다.

파티션: 3, 레플리카: 3, 이런 식으로 설정해주면 3대의 서버마다 파티션이 하나씩 생성되고 레플리카 역시 브로커 별로 하나씩 생성된다.

이렇게 하면 프로듀서가 보낸 데이터가 각 파티션 별로 분산되서 저장되는데.. 쉽게 말해서 한 바구니에 모든걸 담지 않는거다.

많은 양의 데이터를 3등분 시켜서 나눠 담는다고 생각하면 쉽다. 당연히 브로커 별로 데이터 중복은 발생하지 않고, 브로커 안의 파티션 별로 고유한 데이터를 가지게 된다. 그리고 다른 서버에는 혹시 모를 손상을 대비한 레플리카가 생성된다.

이렇게 하면 단일성에 대한 문제도 해결되고 확정도 용이하다.

파티션별로 컨슈머가 각각 데이터를 불러올 수 있어서 또한 부하분산이 가능함.

This post is licensed under CC BY 4.0 by the author.