반응형

카프카(KAFKA) 데이터 처리방식의 특화된 기능


1. KAFKA는 기존 메시징 시스템과는 달리 메시지를 메모리대신 파일 시스템에 쌓아두고 관리한다.


2. 디스크에 기반한 영속적인 저장 방식을 사용하지만 페이지 캐시를 활용하여 높은 처리량을 제공하는 인메모리 방식에 가깝다


3. 메모리에 별도의 캐시를 구현하지 않고 OS의 페이지 캐시에 위임하고 OS가 알아서 서버의 유휴 메모리를 페이지 캐시로 사용하여 앞으로 필요한 것으로 예상되는 메시지들을 미리 읽어들여(readahead)디스크 읽기 성능을 향상 시킨다.


4. Kafka 프로세스가 직접 캐시를 관리하지 않고 OS에 위임하기 때문에 프로세스를 재시작 하더라도 OS의 페이지 캐시는 그대로 남아있기 때문에 프로세스 재시작 후 캐시를 워밍업할 필요가 없다는 장점이 있다. 


5. 여러 consumer가 한 topic으로부터 여러 번에 걸쳐 메시지를 가져올 수 있다. 이러한 방식이 가능한 이유는 클라이언트가 해당 queue에서 어느 부분까지 데이터를 받아갔는지 위치를 알려주는 'offset'을 관리하기 때문이다.


6. 메시지를 메모리에 저장하지 않기 때문에 메시지가 JVM 객체로 변환되면서 크기가 커지는 것을 방지할 수 있고 JVM의 GC로 인한 성능 저하를 피할 수 있다.

반응형

'Bigdata > Kafka' 카테고리의 다른 글

[Kafka] 큐잉 시스템과 카프카의 차이  (0) 2017.06.10
반응형

큐잉 시스템과 카프카가 다른점

분명히 카프카는 메시지들이 수신된 순서대로 처리되도록 보장하기 위해 많은 문제를 겪는 ActiveMQ나 RabbitMQ 같은 큐잉 시스템이 아니다.

카프카의 파티셔닝 시스템은 이런 구조를 유지하지 않는다. 특정한 토픽의 파티션에 대한 쓰기와 읽기 순서에 대한 정의가 없으므로 클라이언트는 메시지가 쓰여진 순서와 다르게 파티션에서 읽을 수도 있다. 게다가 생산자를 비동기로 구현하는 일이 흔해서 한 파티션으로 보내진 메시지는 (비록 응답대기시간이나 비결정적 이벤트의 차이로 인해 먼저 발생하더라도) 또 다른 파티션으로 보내진 메시지 이후에 쓰여질 수도 있다.


카프카는 또한 메시지 소비자를 다루는 방법에서도 많은 큐잉 시스템과는 다르다. 대부분의 큐잉 시스템에서 메시지는 소비되었을 때 시스템에서 제거된다. 카프카는 메시지를 제거하는 메커니즘이 없는 대신, 소비한 마지막 메시지의 오프셋을 지속적으로 파악하기 위해 소비자에 의존한다. 로그는 카프카 설정의 log.retention.hours 설정에 의해 삭제된다.


[ 참고 ] 실시간 분석의 모든 것


반응형

'Bigdata > Kafka' 카테고리의 다른 글

카프카(KAFKA) 데이터 처리방식의 특화된 기능  (1) 2017.08.30

+ Recent posts