Kafka
Kafka에서 정확한 한 번을 지원하는 방법
정확한 한 번을 지원하는 방법Kafka에서 메시지 보장 옵션은 3가지가 있습니다. 재밌는건 정확한 한 번 옵션 또한 분산 서버 환경에서는 정확한 한 번을 보장하지 못하며 다른 옵션들 또한 아래 사유로 정확한 한 번을 보장하지 못합니다.At-least-once semantics - ACK 응답이 안 올경우 한 번도 메시지를 더 발행At-most-once semantics - ack 응답이 안와서 retry자체를 안해서 메시지를 발행 안 할 수 있음Exactly-once semantics - 오프셋을 다시 읽는 경우정확한 한 번을 지원하기 위해서는 멱등성 프로듀서, 트랜잭션 API, 애플리케이션 레벨에서 중복 제거 총 3가지의 방법이 있습니다.각 방법마다 장단점이 존재하고 현재 프로젝트의 상황에 맞는 방법을..
카프카 스키마 레지스트리
개요스키마의 개념과 유용성카프카와 스키마 레지스트리스키마 레지스트리의 장점스키마 레지스트리 호환성BACKWARD 호환성FORWARD 호환성FULL 호환성정리개요스키마란 정보를 구성하고 해석하는 것을 도와주는 프레임워크나 개념을 의미합니다. 스키마란 개념을 처음 입문하게 되는 계기는 보통 DB를 학습하면서 입니다. DB를 학습하면서 스키마란 데이터베이스의 구조를 정의하고 전반적인 명세와 제약 조건을 기술하는 언어라고 학습하게 됩니다.카프카에서도 스키마란 개념을 활용하여 토픽으로 전송되는 메시지에 대해 미리 스키마를 정의하여 전송함으로서 DB에서 스키마를 활용한 방법과 동일한 효과를 얻을 수 있습니다.카프카에서는 스키마를 활용하기 위해서 스키마 레지스트리라는 개념이 필요합니다. 따라서 이번 글에서는 스키마 ..
컨슈머의 내부 동작 원리(컨슈머 오프셋, 그룹코디네이터, 스태틱 맴버십,파티션 할당 전략)
개요컨슈머 오프셋 관리그룹 코디네이터스태틱 멤버십컨슈머 파티션 할당 전략레인지 파티션 할당 전략라운드 로빈 파티션 할당 전략스티키 파티션 할당 전략협력적 스티키 파티션 할당 전략정확히 한 번 컨슈머 동작개요이번 글에서는 카프카의 컨슈머에 대한 동작 원리와 컨슈머 오프셋, 컨슈머들의 파티션 할당 정책과 프로듀서의 정확히 한 번 전송과 결합해 트랜잭션 컨슈머의 내부 동작에 대해서 글을 작성하도록 해보겠습니다.컨슈머 오프셋 관리컨슈머의 동작 중 가장 핵심은 오프셋 관리입니다.컨슈머의 오프셋의 역할은 메시지의 위치를 나타내는것입니다. 이러한 오프셋이 중요한 이유는 컨슈머가 일시적으로 동작을 멈추고 재시작 하는 경우에 새로운 컨슈머가 기존 컨슈머의 역할을 대신하는 경우에 기존 컨슈머의 마지막 메시지 위치부터 새로..
프로듀서의 내부 동작 원리(파티셔너, 배치)
파티셔너파티셔너의 라운드 로빈 전략라운드 로빈 전략의 단점을 극복하기 위한 스티키 파티셔닝 전략프로듀서의 배치메시지 전송 방식 정책적어도 한 번 전송(무슨 일이 있어도 적어도 한 번은 전송한다.)최대 한 번 전송(무슨 일이 있어도 한 번만 전송한다.)중복 없이 전송정확히 한 번 전송전송 정책 한 눈에 비교하기 파티셔너프로듀서는 데이터를 전송할 때 send() 메소드를 수행함으로써 프로듀서 → 시리얼 라이저 → 파티셔너를 거쳐 카프 카프카의 Topic으로 전송됩니다.이때 복수개의 Topic중 어떤 Topic으로 메시지 를 전송할 지를 결정해야 하는데 이때 사용하는 것이 파티셔너입니다.파티셔너는 예상치 못한 많은 양의 메시지가 카프카로 들어오는 경우 파티션을 늘릴 수 있는 기능을 제공합니다. 그러나 이러한 ..
카프카의 내부 동작 원리(리플리케이션,리더, 팔로워, 리더에포크, 컨트롤러,로그)
카프카 리플리케이션리플리케이션 동작 개요리더와 팔로워복제 유지와 커밋리더와 팔로워의 단계별 리플리케이션 동작리더에포크와 복구컨트롤러컨트롤러의 중요성컨트롤러의 리더 선출 과정로그(세그먼트)로그 세그먼트 삭제로그 세그먼트 컴팩션카프카 리플리케이션고가용성 분산 스트리밍 플랫폼인 카프카는 무수히 많은 데이터 파이프라인중에 정중앙에 위치하는 메인 허브 역할을 합니다.메인 허브 역할을 하는 카프카가 다운되거나 문제가 발생할 경우 정상적으로 동작하지 못한다면 심각한 문제가 발생하게 됩니다.이러한 문제점을 해결할 수 있도록 카프카는 초기 설계 때부터 일시적으로 브로커에서 장애가 발생해도 안정적으로 운영될 수 있도록 리플리케이션을 수행하게 됩니다.이번글에서는 리플리케이션에 대해 살펴보며 추가적으로 리더, 팔로워의 역할과..
카프카 기본 개념과 구조
개요이번 글에서는 카프카의 기본 개념과 구조에 대해 포스팅할 계획입니다.카프카의 처리량을 높이기 위해 설계된 분산 시스템, 페이지 캐시, 배치 전송 등에 대해서 살펴보겠습니다.카프카의 기초 용어와 개념용어 정리주키퍼(Zookeeper): 아파치 프로젝트 애플리케이션을 호칭하는 용어. 카프카의 메타데이터 관리 및 브로커의 헬스케어를 담당합니다.카프카(Kafka): 아파치 프로젝트 애플리케이션 이름을 의미합니다.카프카 클러스터(Kafka Cluster): 카프카가 설치된 여러 대의 브로커를 구성하면 카프카 클러스터라고 호칭합니다.브로커(Broker): 카프카 애플리케이션이 설치된 서버 또는 노드를 의미합니다.프로듀서(Producer): 카프카로 메시지를 보내는 역할을하는 클라이언트를 의미합니다.컨슈머(Con..
카프카의 특징과 장점
카프카의 특징높은 처리량http 기반으로 이벤트를 ㄹ전달하지만 응답시간은 한 자리수 밀리초로 처리할 만큼 빠르다.순서 보장이벤트 처리 순서가 보장되므로 엔터티 간의 유효성 검사나 동시 수정 같은 무수한 복잡성들이 제거되어 구조가 간결하다.적어도 한 번 전송 방식카프카는 멱등성을 유지한다.이로인해 프토듀서가 같은 데이터를 재손하도 데이터의 변화가 일어나지 않다.전송방식중에 ‘적어도 한 번’이라는 방식이 존재한다. 따라서 이벤트가 중복 발생할 수 있으나 누락 없는 전송이 가능하다.강력한 파티셔닝논리적으로 토픽을 여러 개로 나눌 수 있다.다른 파티션들과의 의존성 없이 처리가 가능하므로 수평적인 확장이 가능하다.자연스러운 백 프레셔 핸들링카프카는 Pull 방식으로 동작한다. Pull 방식의 장점은 자기 자신의 ..