반응형

/*
-- Title : [kfk] Kafka 장단점 및 동작방식
-- Tag : apache kafka 아파치 카프카
*/


■ 장점

ㅁ 분산 시스템

최초 구성한 클러스터에서 브로커를 추가하는 방식으로 확장 가능하며, 온라인 상태에서도 브로커를 간단하게 추가할 수 있다.

https://victorydntmd.tistory.com/344

 

ㅁ 페이지 캐시(Page Cache)

  • 메모리(RAM) 영역에 어플리케이션이 사용하는 부분을 할당하고 남은 잔여 메모리를 캐시로 전환하여 디스크 접근 최소화해 I/O 성능을 향상시킨다.
  • 페이지 캐시 기능을 통해 높은 처리 속도를 가진다.
https://hoing.io/archives/5108

ㅁ 배치 전송 처리

  • Producer와 Consumer들 간의 수많은 통신을 묶어서 처리한다.
  • 네트워크 오버헤드를 줄일 수 있으며 더욱 빠르고 효율적으로 처리 할 수 있다.
  • 예: 온라인 상품 구매 프로세스에서 재고 수량은 실시간으로 업데이트 되나, 구매 로그는 실시간 처리 보다는 배치 처리한다.

ㅁ 압축 전송

  • 메세지 전송 시 높은 압축 전송을 통해 성능을 높인다.
  • 지원 압축 타입: gzip, zstd(높은 압축), lz4, snappy(빠른 응답속도)

ㅁ 고가용성 보장

https://taes-k.github.io/2020/01/02/kafka-start/

  • 분산 시스템이기 때문에, 하나의 서버가 다운되어도 다른 서버가 대신하여 안정적인 서비스가 가능하다.
  • 복제 기능을 제공하고 있으며, 토픽 자체를 복제하는 것이 아닌 토픽의 파티션을 복제한다.
  • 원본: 리더(reader)/ 복제본: 팔로워(follower)
  • 리더(reader)는 Producer와 Consumer로 부터 오는 모든 읽기와 쓰기 요청을 처리한다.
  • 팔로워(follower)는 오직 리더로부터 복제만 하고, 읽기와 쓰기 요청을 처리하지는 않는다.


■ 단점

  • 기본 브로커가 3개 이상 필요하므로 서버 비용이 든다.
  • 메시지가 수정이 필요하다면 카프카의 성능이 급격히 감소한다.
    (메시지가 바뀔필요가 없을때 카프카는 가장 잘 동작한다.)
  • Producer가 데이터를 압축하고 Consumer가 데이터를 압축 해제하는 과정에서 성능이 떨어진다.


■ 동작 방식

https://waspro.tistory.com/645

  1. Producer는 Zookeeper로부터 메시지를 보낼 BrokerID를 요청함.
  2. Zookeeper는 Producer에게 BrokerID를 리턴함.
  3. Producer는 전달받은 BrokerID의 Partition Leader에 메시지를 전송함.
  4. Partition Follower는 전송된 메시지를 전달하여 복제함.
  5. Consumer는 누적된 Offset만큼 해당 Partition의 메시지를 구독함.
  6. Zookeeper는 Consumer Group가 가져가야할 Offset을 업데이트하여 전달함.
  7. Consumer Group은 Offset 값 증가시키면서 Partition Leader에서 메시지 읽어옴.

ㅁ Partition 선택과 Partition 수 / Consumer 수 간의 관계

https://jyeonth.tistory.com/30

  • Producer가 메시지를 전달할 때 key를 포함해서 전송할 수 있음.
        1) key = NULL이면, Partition을 선택하는 기준은 Round-robin 순임. (번갈아 가면서)
        2) key가 지정되어있으면, 해당 key를 가지는 데이터는 항상 같은 Partition으로 보내짐.
  • 하나의 Partition에 대해 같은 Consumer Group 내 여러 Consumer가 이용할 수 없음.
    Partition 한개당 하나의 Consumer Group 단위로 Offset을 관리하기 때문에 두개 이상의 Consumer가 하나의 Partition의 메시지를 소비할 수는 없음.
  • Partition의 수 보다 Consumer의 수가 더 많을 경우, 할당 받지 못한 Consumer는 대기함.

 


※ Resources
https://jisootech.notion.site/jisootech/Kafka_1-d56f464e412d4519a3cdea14c53340cc
victorydntmd.tistory.com/344
hoing.io/archives/5108
taes-k.github.io/2020/01/02/kafka-start/
waspro.tistory.com/645
https://jyeonth.tistory.com/30

 

반응형

+ Recent posts