
Kafka UI 툴 이용하기 Kafka 브로커를 모니터링하거나, 어드민으로 관리하기 위한 다양한 툴이 존재한다. 이런 다양한 툴들에 대한 비교 설명은 다음 사이트를 참조하자. Overview of UI Tools for Monitoring and Management of Apache Kafka Clusters from: https://towardsdatascience.com/overview-of-ui-tools-for-monitoring-and-management-of-apache-kafka-clusters-8c383f897e80 우리는 UI for Apache Kafka 를 이용해 볼 것이다. UI for Apache Kafk 자세한 내용은 https://github.com/provectus/kafka..

AWS MSK Install guide AWS에서는 Amazon Managed Streaming for ApacheKafka (MSK)를 제공한다. MSK는 완젼 관리형 Kafka클러스터를 AWS 환경하에서 구성할 수 있도록 해준다. 완전 관리형이기 때문에 Zookeeper나, Cluster의 추가, 운영등의 부담이 적으며, 필요할때 Kafka 툴을 이용하여 오퍼레이션을 수행할 수 있도록 한다. AWS MSK 구조 AW MSK는 다음과 같은 구조를 가지고 있다. 우리가 구성할 대상은 아래 도식과 같은 아키텍처를 구성할 것이다. 위 그림과 같이 msk의 경우 AWS에서 Kafka 클러스터를 실행할 수 있도록 한다. Cluster가 구성되면, EC2, AWS Lambda, Amazon Kinesis Data..

Kafka SpringBoot Quick Start with Transaction kafka 는 트랜잭선 처리를 수행할 수 있다. Transaction Concept 정상 트랜잭션 흐름 그림과 같이 여러 메시지를 동일 트랜잭션 ID 묶기 위해 트랜잭션을 시작한다. 메시지를 검사하고, 정상인경우 메시지를 브로커로 전달한다. 오류가 없다면 트랜잭션을 정상으로 커밋한다. 메시지는 Transaction Isolation Level이 ReadCommitted 가 된다.ConsumerFactory 에 설정된 Isolation Level에 따라 ReadCommitted이면 컨슘 하므로 메시지가 출력된다. 비정상 트랜잭션 흐름 그림과 같이 여러 메시지를 동일 트랜잭션 ID 묶기 위해 트랜잭션을 시작한다. 메시지를 검사..
Kafka SpringBoot Quick Start with Error Handling kafka 는 기본적으로 메시지를 수신하고, 오류가 발생하면 메시지를 버린다. 이때 메시지를 재 처리하거나, 특정 작업을 수행하기 위해서 에러 핸들러를 두고 있다. kafka 에서는 recovery, error handling 등의 방법을 제공한다. 기본사항 기본적으로 Kafka 클러스터가 구축되어 있어야한다. Kafka SpringBoot Quick Start 를 참조하여 가장 기본적인 Kafka 어플리케이션을 구축하자. 작업 순서 기본 에러 핸들링에 대해서 간단하게 알아본다. 에러가 발생한경우 핸들링을 수행하는 예제를 살펴본다. 리커버리를 통해 메시지 정보를 수정하거나, 별도 처리하는 방법을 알아본다. 에 핸들링을..

Kafka SpringBoot Quick Start with Priority Queue 메시지를 프로듀싱 할때, 우선순위에 따라 별도로 메시지를 수신 받아야할 때가 있다. 동일한 토픽이지만 메시지 높은 우선순위를 설정해야하는 경우, 이 메시지는 별도로 처리가 필요하다. 일반 메시지는 일반 처리를 수행한다면 우리는 필요할때 우선순위 설정을 확인하고, 메시지를 빠르게 처리할 수 있을 것이다. 우선순위 메시지 수신 처리방식. 우선순위 메시지 수신은 키를 이용하여 파티션을 파티션 벼킷을 분리하는 방식을 이용한다. 동일 토픽에서 메시지를 수신할때, 메시지 키에 따라 메시지를 필터링하여 우선 처리해야할 작업을 수행하는 방식으로 이루어진다. 위 Overview에서 Producer는 메시지를 우선순위 키를 할당하여 메..

Kafka SpringBoot Quick Start with Partition Key 이번에는 kafka 메시지에 key를 할당하고, 이 key에 따라 파티션이 선택되도록 해보자. 기본적으로 kafka는 key가 설정되지 않은경우, 메시지는 reound robin 방식으로 파티션을 선택하여 메시지가 전달된다. key가 있다면 key값을 hashing하고 해싱 결과를 이용하여 파티션을 선택하도록 하고 있다. 만약 특정 메시지의 키에 따라 들어온 순서가 중요한 서비스라면, 키를 반드시 할당하고, 이들이 특정 파티션으로 분배되도록 지정해주는 용도로 사용할 수 있다. 메시지 키가 없는경우 메시지가 들어오면 파티셔너가 메시지 키를 확인하고 메시지를 분산한다. 위와 같이 메시지 키가 없는경우 라운드로빈 방식으로 한..
Kafka SpringBoot Quick Start with Manual Consume 지금까지 메시지를 프로듀스 하면, 컨슈머 리스너가 브로커의 상태를 검사하고, 메시지가 들어오면 리스너가 메시지를 가져가는 방식을 알아 보았다. 일반적으로 Listener가 메시지를 가져가겠지만, 필요할때 직접 메시지를 가져가게 하고 싶다면 Manual로 메시지를 수신할 수 있다. 기본사항 기본적으로 Kafka 클러스터가 구축되어 있어야한다. Kafka SpringBoot Quick Start 를 참조하여 가장 기본적인 Kafka 어플리케이션을 구축하자. Manual Consumer 작성하기. 기본적인 설정은 이미 작성한 Kafka SpringBoot Quick Start 의 내용에 다음과 같이 추가하자. KafkaCo..

Kafka SpringBoot Quick Start 지금까지 Kafka 클러스터 구성을 하였으니 이제는 Kafka 샘플을 작성하자. Kafka 샘플을 구성하고, 간단하게 메시지를 생산하고, 소비해볼 것이다. 작업순서 Sample Code 템플릿 생성 SpringBoot Kafka 환경 설정 Kafka Topic 생성 Kafka Producer 생성 Kafka Consumer 생성 Kafka 메시지 Key로 라우팅 결정하기. 1. Sample Code 템플릿 새성 https://start.spring.io/ 에서 아래와 같이 프로젝트를 생성하자. Project: Maven Language: Java Spring Boot: 2.6.3 Project Metadata: 프로젝트 메타데이터를 화면과 같이 지정 D..
Install Kafka Single Broker with Docker compose 지금까지 kafka를 단일 노드에 설치를 해 보았다. kafka를 다운받아 config파일을 변경하여 설정하는 방법이 있는 반면, docker를 이용하여 kafka를 구동할 수 있다. 우리는 여기서 docker-compose를 이용하여 kafka single broker를 설치해 볼 것이다. 사전 준비사항 참고로 설치는 mac에서 수행할 것이다. 사전 준비사항은 다음과 같다. Docker Desktop 설치 : https://docs.docker.com/desktop/mac/install/ 에서 docker를 설치하자. Docker dekstop 설치후 다음과 같이 버젼을 확인하자. $ docker-compose ver..
- Total
- Today
- Yesterday
- mapping
- Terraform
- NodeSelector
- Spring
- Database
- java
- Golang
- Kafka
- kubernetes
- deploy
- AWS
- argocd
- docker-compose
- mongo
- springboot
- MySQL
- jenkins
- CD
- D3
- docker
- go
- tfsec
- jpa
- kubectl
- MongoDB
- Gorilla
- gitops
- kafka-springboot
- declative
- CI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |