전체 글 썸네일형 리스트형 카프카 프로듀서 spring boot로 구현하기 카프카 프로듀서 spring boot로 구현하기 카프카 프로듀서를 Spring Boot로 어떻게 구현하는지 설명하도록 하겠습니다. 모든 소스 코드는 아래 링크를 통해 보실 수 있습니다. https://github.com/kang-seongbeom/kafka-producer-example 오늘 구현할 것을 그림으로 나타내면 다음과 같습니다. 프로젝트 구조는 다음과 같습니다. producer |_ config |_ KafkaProducerConfig.class |_ KafkaTopicConfig.class |_ SetProperties.class |_ controller |_ PushRequestController.class |_ dto |_ PushRequestDto.class |_ service |_ P.. 더보기 메모리 위에 존재하는 Vmmem Windows에서 도커(docker)를 사용하시는 분들이 만나는 문제입니다. 도커를 종료해도 다음 사진과 같이 Vmmem이 남아있어 메모리를 엄청 잡아먹습니다. 종료하는 방법은 간단합니다. 명령 프롬프트(cmd)에서 다음 명령어를 치시면 됩니다. wsl --shutdown 정상적으로 종료 되었습니다. 더보기 카프카 프로듀서와 컨슈머 docker shell 에서 테스트하기 이전 글에서 docker compose로 카프카 클러스터를 구축했습니다. 이전 글을 보고오지 않으신 분은 아래의 링크로 보고 오시기 바랍니다. https://ksb-dev.tistory.com/261 카프카 클러스터 docker compose로 구축하기 1. 왜 docker compose를 사용하는가? docker compose는 여러 개의 컨테이너가 동시에 동작할 때 필요합니다. 위 그림과 같이 카프카 클러스터를 구축할 때 보통 한 개의 주키퍼, 세 개의 카프카 브로커가 ksb-dev.tistory.com docker compose로 카프카 클러스터를 실행 시키면 다음과 같이 한 개의 주키퍼, 세 개의 카프카 브로커가 동작되고 있는 것을 볼 수 있습니다. 이 상태에서 카프카가 기본으로 제공하는 프로듀서.. 더보기 카프카 클러스터 docker compose로 구축하기 1. 왜 docker compose를 사용하는가? docker compose는 여러 개의 컨테이너가 동시에 동작할 때 필요합니다. 위 그림과 같이 카프카 클러스터를 구축할 때 보통 한 개의 주키퍼, 세 개의 카프카 브로커가 필요합니다. 이 네 가지가 동시에 동작되어야 하기 때문에, docker compose를 사용합니다. 2. docker compose 파일 작성하기 docker compose는 yml 확장자를 가지는 파일에 작성합니다. yml 파일의 특성상 띄어쓰기가 매우 중요하기 때문에, 작성할 때 주의하시기 바랍니다. 설명은 주석에 적어놨습니다. # docker compose 버전 version: "3" # compose로 한 번에 실행시킬 서비스들 정의 services: zoo1: # 사용할 이미.. 더보기 카프카란 무엇인가? - 2 카프카란 무엇인가? - 2 1. Replication Replication은 데이터 복제를 의미합니다. 데이터 복제를 통해, 하나의 브로커가 고장나더라도 다른 브로커가 그 역할을 대체할 수 있도록 합니다. 카프카는 Replication을 통해 고가용성(High Availability)을 보장합니다. 보통 클러스터 하나당 브로커 세 대 이상을 사용합니다. 위 그림과 같이 Replication이 1일 때의 모습입니다. 만약 Brocker #1이 고장나게 되면 데이터 처리를 하지 못하게 됩니다. 즉, 고가용성이 보장되지 못합니다. 카프카는 데이터 복제를 통해 문제를 해결합니다. Replication은 데이터 복제를 의미합니다. 카프카에서 Replication을 늘리게 되면, 데이터가 다른 브로커에 복제됩니다... 더보기 카프카란 무엇인가? - 1 1. 카프카를 왜 사용할까요? 설명하기 앞서 단어 두 가지를 정하고 가겠습니다. 이벤트 발생을 하는 곳을 프로듀서(Producer)라 하겠습니다. 발생된 이벤트를 사용하는 곳을 컨슈머(Consumer)라 하겠습니다. 카프카를 사용하기 이전에는 프로듀서와 컨슈머를 연결하는 데이터 파이프라인이 많았습니다. 카프카는 이 문제를 데이터의 중앙화로 해결했습니다. 또한, 그 연결 관계를 느슨하게 합니다. 발생한 이벤트를 카프카에서 낮은 지연(Latency)과 높은 처리량(Throughput)으로 처리할 수 있도록 보장합니다. 또한, 그림과 같이 모든 처리를 분산해서 처리할 수 있도록 합니다. 이러한 이유로 카프라를 분산 이벤트 스트리밍 플랫폼(Distribute Event Streaming Platform)이라 할.. 더보기 Docker + War + Tomcat 배포 실습(Tomcat Port 변경) Windows 운영체제에서 해보도록 하겠습니다. docker 설치 및 war 파일이 준비되었다는 가정하에 실습해 보도록 하겠습니다. 저의 프로젝트 웹 포트는 8050입니다. 저의 프로젝트 구조도입니다. 배포가 완료되면, target 또는 out 파일에 war 파일이 만들어집니다. 해당 war 파일을 톰켓에서 사용할 수 있도록 다음과 같이 Dockerfile을 작성하면 됩니다. 1. FROM tomcat:9.0.70-jdk11-corretto-al2 9.0.70은 톰캣의 버전이고, jdk11은 자바 11버전을 사용하겠다는 의미입니다. https://hub.docker.com/_/tomcat 에서 다양한 JDK용 톰켓 이미지를 확인하실 수 있습니다. tomcat - Official Image | Docker.. 더보기 프로그래머스 - 디펜스 게임(Java) [수정 알림] 파라메트릭 서치 및 우선순위 큐로 문제를 해결했는데, 테케 10번에서 시간초과가 발생하신다는 분이 계셨습니다. 저의 경우 제 방법이 아슬아슬하게 통과를 했던것 같고, 서버 상태에 따라 통과를 못할 수도 있다는 생각을 하게 되었습니다. 시간을 조금이라도 더 줄이고자 우선순큐가 아닌 단순 반복으로 문제를 해결했습니다. 우선순위 큐는 O(NlogN) 시간 복잡도가 소요되고, 힙 구조를 유지하는데도 시간에 소요 될 것입니다. 또한, 우선순위 큐 내부에 값을 집어넣는고 빼는 과정에서 박싱과 언박싱이 발생되기 때문에 시간 초과가 날 수 있다고 생각합니다. 아래는 수정한 방법으로 작성했습니다. 파라메트릭 서치(Parametric Search) 문제입니다. 파라메트릭 서치는 이분 탐색을 통해 주어진 범위.. 더보기 이전 1 ··· 13 14 15 16 17 18 19 ··· 48 다음