티스토리 뷰

BigData

Kafka 소개 및 정리

Sh.TK 2018. 8. 9. 14:42

참조:


위 참조 사이트의 내용을 간략하게 정리하였다.



구성

  • Broker 는 Topic 기준으로 메세지를 관리.
  • Producer 는 Topic의 메세지를 생성하고, Broker에 전달
  • Consumer 는 Broker가 쌓아둔 Topic을 가져가서 처리하게 된다.
  • Topic 은 업무 또는 메세지.


차이점(장점)

  • 다수의 메세지를 batch 형태로 처리 가능. (TCP/IP 라운드트립 횟수를 줄인다.)
  • TCP 기반의 프로토콜 사용.(오버헤드 감소)
  • 분산 시스템으로 설계 (분산 및 복제가 다른 메시징 시스템에 비해 손쉽다)
  • Transactions Per Second(TPS)가 우수하다.
  • 파일시스템에 저장
    • 데이터의 영속성이 보장
    • 파일시스템에 저장하여 메세지(데이터)가 많아도 성능이 크게 저하가 안된다.
    • 수명을 설정하여 Consumer에 의해 처리된 데이터도 일정 기간동안 보관할 수 있다. (consumer를 다시 처리할 수 있다.)
  • Consumer가 Broker로부터 데이터를 Pull하는 구조.



Topic & Partition 분산 그리고 복제

  • Topic은 각 파티션에 분배되어 저장된다.
    • 파티션이 3개라면 하나의 Topic은 각 파티션마다 존재하므로 3개의 Topic이 생긴다. (failover 수행)
    • Offset으로 메세지를 식별하고 각 파티션마다 동일한 Topic에 대한 Offset은 다르다.
  • Producer는 사용자가 구현한 알고리즘에 의해 균등하게 Partition으로 데이터를 전달한다.
    • Round-Robin, 키를 활용한 알고리즘...
  • 각 Partition으로 데이터가 전달되면, 고가용성을 위해서 데이터를 복제하여 각 클러스터에 분산시킨다.
    • 복제된(temp) 데이터는 follower라고 하고, 복제한(original) 데이터는 leader 이다.
    • 모든 데이터의 읽기와 쓰기는 leader를 통해 진행되고, leader에서 에러가 발생하면 follower 중 하나가 leader가 된다.


Consumer와 Consumer Group

  • Kafka에서는 발행-구독 모델으로 일반화 했다.
    • Topic을 구독하는 모든 Consumer에게 메세지를 브로드캐스팅(1:N 전송)하는 방식.
  • 같은 Consumer Group의 Consumer는 동일한 Partition을 바라보지 않는다.
  • 하나의 Consumer에 의해 독점적으로 Partition이 Access되기 때문에 순서대로 처리된다.
    • 알고리즘을 통해 순차적인 방법말고도 처리할 수 있다.


파일시스템을 활용하여 고성능 디자인

  • 메모리(기존)가 아닌 파일시스템(Kafka)에 쌓아두고 관리한다.
  • 일반적으로는 하드디스크가 느리나, 특정조건에서는 빠를 수도 있다.
  • Kafka 프로세스는 OS의 페이지 캐시에 모든 것을 위임한다. (재시작해도 따로 캐시를 워밍업할 필요가 없다. OS 페이지에 캐시 되어있으므로)
  • 네트워크를 통해 Consumer에 전송할 때는 Zero-copy(python memoryview)기법을 사용하여 데이터 전송 성능을 향상 시켰다.


댓글
공지사항
최근에 올라온 글
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함