Gidhub BE Developer

Kafka 디자인 특징 : 분산 시스템, 페이지 캐시, 배치 처리

2019-11-26
goodGid

이 글의 코드 및 정보들은 을 바탕으로 작성하였습니다.

Kafka 디자인 특징

  • 분산 시스템, 페이지 캐시, 배치 전송 처리 등의 기능을 구현했다.

분산 시스템

  • 같은 역할을 하는

    여러 대의 서버로 이뤄진 서버 그룹을 분산 시스템이라 한다.


장점

  • 단일 시스템보다 더 높은 성능을 얻을 수 있다.


  • 분산 시스템 중

    하나의 서버 또는 노드 등이 장애가 발생하면

    다른 서버 또는 노드가 대신 처리한다.


  • 시스템 확장이 용이하다.

    물론 불필요하게 서버를 추가하면 불필요한 비용이 증가하게 된다.


Example

물리적인 서버 1대가 있다.
이 서버는 초당 1000개의 메시지를 받게 되면
CPU 사용률이 100% 도달한다.
즉 서버의 최대 처리 수준은 1000메시지/초이다.

만약 초당 900개의 메시지가 들어온다면?
이 서버의 사용률은 90%에 도달한다.
장애 상황은 아니지만 위험하다.

여기서 
서버 1대를 추가하여
분산 시스템을 구축한다면
각 서버마다 450개의 메시지를 처리하면서
서버의 사용률은 45%가 된다.

서버를 분산함으로써
단일 서버보다 2배의 성능을 처리할 수 있고
서버 1대가 장애가 발생하더라도
나머지 1대가 장애가 발생한 서버를 대신해 
작업을 처리할 수 있어 안전성도 높아진다.

페이지 캐시

  • Kafka는 처리량을 높이기 위한 기능을 몇 가지 추가했고

    그 중 하나가 페이지 캐시를 이용하는 것이다.


OS <-> 페이지 캐시

  • OS는 물리적 메모리에

    Application이 사용하는 부분을 할당하고

    남은 잔여 메모리 일부를 페이지 캐시로 유지해

    디스크에 I/O 작업을 하지않기 때문에

    OS의 전체적인 성능을 높힐 수 있다.


  • 그리고 Kafka는 이러한 특징을 이용해

    빠른 액세스를 하기 위해

    OS의 페이지 캐시를 이용하도록 디자인되었다.


  • 이런 장점 때문에

    실제로 Kafka 문서에도

    Kafka를 구성할 때

    디스크 중에서 가격이 가장 저렴한

    SATA 디스크 를 사용하여 운영한다.


배치 전송 처리

  • 데이터를 주고받는 과정에서는 I/O가 발생한다.

  • Kafka에서는 I/O를 줄이기 위해

    작은 단위의 I/O들을 묶어서 배치 작업으로 처리한다.


Example

메시지 전송 시간 : 1초

메시지 4개를 각각 전송한다면?
총 4초가 소요

만약 이 메시지들을 묶어서 전송한다면?
총 1초가 소요
  • 이러한 배치 작업은

    속도 향상에 매우 큰 도움을 준다.


Summary

  • Kafka도 분산 시스템이기 때문에

    유동적으로 서버 증설이 가능하다.


  • 또한 캐시 개념을 사용하여

    성능 향상을 시켰고


  • 배치 작업을 통해

    I/O요청을 줄여 속도를 향상시켰다.


Reference


Recommend

Index