본문 바로가기

카프카5

카프카 톺아보기4-1 프로듀서 개념 카프카 프로듀서란 카프카 클러스터로 이벤트를 발행하는 클라이언트 어플리케이션을 의미한다.DDD 관점에서 보면, 서로 다른 바운디드 컨텍스트(일반적으로 서버가 분리되어 있음)에 속한 애그리거트의 상태 변경에 대한 도메인 이벤트를 시스템간의 이벤트로 변환하여 발행할 때 카프카 프로듀서를 통해 이벤트를 발행하곤 한다.예를들어, 주문이 취소되는 경우 주문이라는 애그리거트 (도메인의 제약사항을 공유하는 객체 묶음) 상태가 변경된 것을 이벤트로 발행하게 되는데, MSA 에서 다른 컨텍스트 예를 들어, 재고 시스템과 같은 컨텍스트가 이에 대한 처리가 필요한 경우 해당 이벤트를 받아서 로직을 처리하게 된다.기본적으로 카프카 프로듀서는 컨슈머에 비해 그렇게 복잡하지 않다.파티셔너파티셔너는 프로듀서가 메시지를 발행할 때 .. 2024. 5. 30.
카프카 톺아보기 3-1. 컨슈머 개념 커밋커밋이란 컨슈머가 자신이 어디까지 메시지를 소비했는지 메시지의 오프셋(offset)을 기록하는 행위이다.참고로 offset 을 커밋하는 방식은 여러가지가 있을 수 있다.offset 을 자동으로 커밋할 수도 있고 수동으로 커밋할 수도 있다. 또한 커밋에 대한 결과를 동기적으로 받을 수도 있고 비동기로 받을 수도 있다.아래 그림을 보면 poll 을 통해 1~500 개의 메시지를 가져온다. 그리고 offset 500을 커밋하게 된다.이렇게 되면, 해당 파티션과 연결된 컨슈머 그룹의 컨슈머는 다음에는 501 오프셋을 가진 메시지를 소비하게 된다.auto commit자동으로 커밋을 수행하는 경우, auto.commit.interval.ms 설정에 의해서, 메시지들을 poll 한 후에 해당 시간이 흐른뒤에 로직.. 2024. 5. 30.
카프카 톺아보기2 - CLI 카프카는 운영을 위한 커맨드 라인툴을 많이 제공한다.카프카를 운영하는 입장은 아니지만, 로컬에서 카프카를 세팅할때 필요한 명령어들을 조금 알아보려고한다.브로커 설정도커 컴포즈를 사용하여 카프카 세팅을 하는 경우, 아래와 같은 방식을 통해 설정할 수 있다.이번 포스팅에서는 커맨드라인 툴을 설명할 예정이라 추후에 다뤄보려고 한다.docker-compose 파일의 environment 프로퍼티로 설정server.properties 로 설정토픽 관련 - kafka-topics.sh위 쉘 스크립트를 통해서는 토픽의 생성, 정보 세팅, 정보 변경 등을 수행할 수 있다.옵션—create : 토픽의 생성. 별다른 설정을 주지 않으면, 브로커의 값을 따르게 된다.docker 명령어를 통해서 실행docker exec -i.. 2024. 5. 30.
카프카 - 메시지 유실 가능성 언젠가 면접에서 카프카 사용시 메시지가 유실될 수 있을까? 만약 유실될 수 있다면 언제 유실될 수 있을까? 라는 질문을 받은적이 있다. 당시 질문에 대답을 잘 못했는데, 카프카를 통신수단 이상으로 생각하지 않기도 했고 카프카 그 자체에 대해서는 잘 몰랐기 때문이었다. (지금도 잘모르지만)그렇다면, 카프카 사용시 메시지는 유실될 수 있을까? 한번 알아보려고 한다.복제https://pius712.tistory.com/16 카프카 톺아보기애플리케이션 개발자의 입장에서 카프카에 대해서 간단하게 살펴보고자 한다. (깊게는 필자도 잘 모른다.) 아파치 카프카는 분산 이벤트 스트리밍 플랫폼이다. 일반적인 pub/sub 구조의 rabbitMQ, redpius712.tistory.com 위 포스트에서 설명했듯, 카프카에.. 2024. 5. 23.
카프카 톺아보기 - 기본개념 애플리케이션 개발자의 입장에서 카프카에 대해서 간단하게 살펴보고자 한다. (깊게는 필자도 잘 모른다.)아파치 카프카는 분산 이벤트 스트리밍 플랫폼이다.일반적인 pub/sub 구조의 rabbitMQ, redis pub/sub 과 달리 메시지를 저장한다는 특징이 있다. 1. 브로커데이터를 쓰는 producer 와 데이터를 읽는 consumer 는 broker 를 통해서 데이터를 주고 받는다. 그리고 broker 는 발행된 데이터를 저장하는 공간이기도 하다.브로커는 하나의 서버에서 작동하며, 각기 다른 서버에서 작동하는 여러 브로커를 묶어서 클러스터로 구성할 수 있다.  카프카에서 브로커는 여러 역할을 하는데 크게 아래와 같은 역할을 한다. 해당 역할들에 대해서는 아래에서 추가적으로 살펴볼 것이다.컨트롤러데이.. 2024. 2. 25.