본문 바로가기

728x90
반응형

분류 전체보기

(78)
[Kafka] Message, Topic, Partition Kafka Message 카프카 메시지는 Key와 Value로 구성됩니다. key는 해당 메시지가 카프카 브로커 내부에 저장될 때 저장되는 위치에 관련된 요소입니다. 프로듀서가 메시지를 브로커로 전달할 때, 프로듀서 내부의 파티셔너(Partitioner)가 저장 위치를 결정하는데, 이때 key의 값을 이용하여 연산하고 그 결과에 따라 저장되는 위치를 결정합니다. value는 메시지가 전달하고자 하는 내용입니다. 단순히 문자열이 될 수도 있고, JSON이나 특정 객체가 될 수도 있습니다. +) 다양한 타입의 값을 보낼 수 있는 것은 브로커를 통해 메시지가 발행되거나 소비될 때, 메시지 전체가 직렬화/역직렬화 되기 때문입니다. Topic Topic은 메시지를 구분하는 논리적인 단위로, 동일한 메시지들은 논리..
[Kafka] Consumer Group Consumer Group Consumer Group이란 말 그대로 Consumer 들의 묶음입니다. Consumer Group은 하나의 Topic에 대한 책임을 갖고 있습니다. Kafka Producer가 전송한 메시지는 Topic의 Partition에 나눠서 저장됩니다. Partition에 저장된 이 메시지들은 Consumer들에 의해 읽혀집니다. 하나 이상의 Consumer들은 Consumer Group을 형성합니다. Consumer가 특정 파티션의 데이터 소비를 위한 개념이라면 Consumer Group은 Topic 전체 데이터 소비 관리를 위해 사용됩니다. ('Consumer가 Partition을 소비한다', 'Consumer Group이 Topic을 소비한다' 라고 생각하면 됩니다) 왜 하나의..
[JAVA] CountDownLatch란? CountDownLatch는 어떤 쓰레드가 다른 쓰레드에서 작업이 완료될 때까지 기다릴 수 있도록 해주는 클래스입니다. 예를 들어, Main thread에서 5개의 쓰레드를 생성하여 어떤 작업을 병렬로 처리되도록 할 수 있습니다. 이때, Main thread는 다른 쓰레드가 종료되는 것을 기다리지 않고 다음 코드를 수행합니다. 여기서 CountDownLatch를 사용하면 다음 코드를 실행하지 않고 기다리도록 만들 수 있습니다. CountDownLatch 사용하기 CountDownLatch를 초기화 할 때 정수값 count를 넣어줍니다. 쓰레드 마지막에서 countDown() 메서드를 호출하면 초기화할 때 넣어준 정수값이 하나 내려갑니다. 즉, 각 쓰레드는 마지막에서 자신이 실행 완료했음을 countDow..
[Kafka] Spring Boot에 Kafka 연동하기 #2 저번 시간에는 하나의 Topic에 대한 message 생산/소비 예제를 만들어보았습니다. 이번에는 여러 Topic을 Bean으로 등록 후 message 생산/소비 예제를 살펴보도록 하겠습니다. 우선 이번에도 마찬가지로 Springboot Initializer 또는 IDE를 사용하여 Spring Boot Project를 만들어줍니다. 저는 gradle 빌드 도구를 사용하겠습니다. 기본적으로 kafka 서버가 동작하고 있다는 가정 하에 진행하도록 하겠습니다. kafka 서버 설치 및 동작 방법이 궁금하시다면 이 글을 참고 하시길 바랍니다. 1. 프로젝트 설정하기 build.gradle dependencies { implementation 'org.springframework.boot:spring-boot-s..
[Kafka] Spring Boot에 Kafka 연동하기 #1 오늘은 Spring Boot 프로젝트에 Kafka를 연동하여 사용하는 방법에 대해 간단한 예제를 통해 살펴보겠습니다. Kafka가 설치되어 있지 않다면 이 글을 참고해주시길 바랍니다. 1. 기본 환경 세팅하기 우선 Spring Boot 프로젝트를 하나 만들어줍니다. Spring Boot 프로젝트가 준비 되었다면 build.gradle을 아래와 같이 수정하여 spring-kafka에 대한 의존성을 추가해줍니다. dependencies { implementation 'org.springframework.boot:spring-boot-starter' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org..
[Kafka] Kafka 환경 구축 및 간단한 예제 (with Docker) 오늘은 Docker를 이용하여 Kafka 서버를 구축하는 방법에 대해 알아보겠습니다. 이 글은 CentOS 7 환경에서의 실행 과정에 대한 설명이니 참고 바랍니다. 1. docker 이미지 선택 docker search kafka docker search 명령어를 통해 docker 이미지 파일을 검색합니다. 가장 star이 많은 이미지를 선택하겠습니다. 2. docker-compose.yml 파일 작성 어떤 docker image 사용할 지 정했으니 이제 docker-compose로 kafka 환경을 구축하겠습니다. kafka는 항상 zookeeper와 함께 동작해야 하기 때문에 여러 docker container를 실행하기 편리한 docker-compose를 사용합시다. 우선 docker-compose..
[Kafka] Kafka의 구성 요소 Kafka (카프카) 대표적인 메시지 큐 시스템으로 Kafka, RabbitMQ, Active MQ가 있는데 그 중 Kafka에 대해 알아보겠습니다. Kafka는 Pub-Sub 모델의 메시지 큐이고, 분산 환경에 특화되어 설계되어 있다는 특징을 가집니다. 각각의 메시지 큐에 장단점이 있겠지만, Kafka는 대용량 처리에 특화되어 설계되어 있기 때문에 여러 요청이 들어오는 대규모 서비스에 적용 시 다른 메시지 큐에 비해 좋은 성능을 보여줍니다. 그 외에도 클러스터 구성, fail-over, replication과 같은 여러 가지 특징들을 가지고 있습니다. 오늘은 Kafka의 구성 요소에 대해 알아보고 다음에 이어 kafka 구성을 해보도록 하겠습니다. 물리적 구성요소 Broker 메시지 수신 및 전달을 처..
[JAVA] 변수란? 해당 글은 남궁성님의 자바의 정석을 학습 후에 작성되었습니다. 변수(variable)란? 하나의 값을 저장할 수 있는 메모리 공간이다. (특정 메모리 공간에 이름을 지정하고, 주소 대신 이름을 통해 메모리에 값을 저장하고 읽을 수 있게 한 것이다) 변수의 선언 변수 선언 이유 값을 저장할 공간을 마련하기 위해서 변수 선언 방법 // 변수타입 변수이름; int age; // 정수(int) 타입의 변수 age를 선언​ 변수에 값 저장 변수에 값 저장하기 int age; age = 25; // 변수 age에 25 저장 ------ int age = 25;​ 변수의 초기화 변수에 처음으로 값을 저장하는 것 변수의 종류는 클래스 변수, 인스턴스 변수, 지역 변수가 있다. 지역 변수는 읽기 전에 꼭!!!초기화를 해..

728x90
반응형