Programming 131

[kafka] Multi-broker cluster 설치 및 실행

이전에 카프카 공식홈페이지의 Quick Start 가이드를 참고하여 하나의 주키퍼에 하나의 카프카를 연동하여 실행시키는 것은 진행해 보았다. 이번 글에서는 하나의 주키퍼에 멀티 카프카를 연동하는 방법에 대해서 알아보자. 윈도우 환경에서 Powershell이나 cmd 창에서 kafka_2.12-2.5.0\bin\windows 경로에서 명령어를 실행한다. 리눅스 환경이라면 terminal 창에서 kafka_2.12-2.5.0\bin 경로에서 명렁어를 실행한다. 필자는 윈도우 환경이므로, 윈도우 기반으로 설명을 진행하겠다. 1. 주키퍼 실행 주키퍼의 환경설정은 ..\..\..\config\zookeeper.properties 파일을 참고하면 된다. 만약 멀티 노드 환경의 주키퍼를 실행한다면, 해당파일의 수정이..

Programming/Kafka 2020.05.23

[Youtube][이팩티브 자바] #6 불필요한 객체를 만들지 말자

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 6 : 불필요한 객체를 만들지 말자. 기능적으로 동일한 객체를 새로 만드는 대신 객체 하나를 재사용하는 것이 대부분 적절하다. 재사용하면 더 빠르고 있어보인다(new라는 코드를 안써서..?). 불변객체는 항상 재사용할 수 있다. 문자열 객체 생성 자바의 문자열 String을 new로 생상하면 항상 새로운 객체를 만들게 된다. 다음가 같이 String 객체를 생성하는 것이 올바르다. public class StringTest { public static void main(String[] args) { String s1 = new String("log"); String s2 = "log";..

Programming/Java 2020.05.23

[Youtube][이팩티브 자바] #5 의존성 주입

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 5 : 리소스를 엮을 때는 의존성 주입을 선호하라 대부분의 클래스는 여러 리소스에 의존한다. 이책에서는 SpellChecker와 Dictionary를 예로 들고 있다. 즉, SpellChecker가 Dictionary를 사용하고 이를 의존하는 리소스 또는 의존성이라고 부른다. 이때 SpellChecker를 다음과 같이 구현하는 경우가 있다. 부적절한 구현 static 유틸 클래스 유틸클래스 -> 인스턴스로 만들지 않기 때문에 pivate한 생성자로 만들어준다. (지난 강의 #4 참고) package me.whiteship.effectivejava3rd.item05.usecase1; im..

Programming/Java 2020.05.21

[Youtube][이팩티브 자바] #4 인스턴스를 못만들게 하고 싶다면?

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 4. private 생성자로 noninstantiability를 강제할 것 static 메서드와 static 필드를 모아둔 클래스를 만든 경우 해당 클래스를 abstract로 만들어도 인스턴스를 만드는 걸 막을 순 없다. 상속 받아서 인스턴스를 만들 수 있기 때문이다. static 메서드와 static 필드를 모아둔 클래스를 만든 경우 utility 클래스를 이렇게 많이 만든다. utility 클래스는 인스턴스를 만들 필요가 없기 때문에, abstact로 만들어서 강제할 수 있다. static클래스는 너무 많이 쓰면 안좋은 평판이 있다. (하지만 유효한 경우도 있다. Math, Arra..

Programming/Java 2020.05.20

[kafka] Confluent Platform Versions

카프카 구축 프로젝트를 진행하다보면, Confluent 에서 제공하는 플랫폼 버전과 카프카 버전을 확인해야할 때가 있다. 2020년 5월 18일 기준 버전은 아래와 같다 컨플루언트 플랫폼 릴리즈 버전 지원 종료 날짜는 부 버전 (예 : 5.5.x)에만 적용됩니다. 유지 관리 버전은 동일한 2 년 수명주기를 따릅니다. 2 년 지원 정책이 표준입니다. 프리미엄 지원 플랜에는 연장 지원 정책이 적용될 수 있습니다. 각 버전의 Confluent Platform에는 특정 Confluent Platform 버전에서만 호환되는 여러 구성 요소 서비스가 포함되어 있습니다. 여러 버전에서 사용할 수있는 클라이언트 및 Confluent Control Center를 포함한 예외가 있습니다. Apache Kafka® 및 그 ..

Programming/Kafka 2020.05.20

[kafka] multi-node zookeeper & kafka docker-compose.yml file

주키퍼와 카프카를 도커에 구축하기 위해서는 도커로 하나씩 실행하는 것보단 도커 컴포즈나 도커 스왐으로 실행하는 것을 추천한다. 주키퍼, 카프카 모두 분산 처리 시스템이기 때문에 여러개의 어플리케이션을 한꺼번에 띄우고 관리하는 것은 도커 컴포즈가 편하기 때문이다. 도커 컴포즈를 사용하다보면 도커 스왐이나 쿠버네티스가 더 편할것 같고, 옮길까 고민도 했지만 우선 도커 컴포즈 기준으로 분산 처리 시스템을 구축해본다. Sample docker-compose.yml 주키퍼 1개와 카프카 3개를 셋팅한 도커 컴포즈 파일은 아래와 같다. version: "3.8" services: zoo1: image: zookeeper:3.4.9 restart: always hostname: zoo1 networks: broker..

Programming/Kafka 2020.05.19

[DockerCompose] confluentinc/cp-kafka server.properties 설정

docker compose로 주키퍼 카프카 구축시, 로컬에서 구축하는 것처럼 server.properties 파일을 도커 외부에서도 확인하고 싶을때가 있다. 이를 설정하기 위해선, 외부에 server.properties파일을 미리 생성해주고, volum 환경 변수를 아래와 같이 설정해 주면된다. ... volumes: /home/config/server.properties:/etc/kafka/server.properties ... /home/config/server.properties : docker-compose 외부에 설정할 파일 경로 /etc/kafka/server.properties : docker-compose 내부에 설정된 properites 경로 docker-compose.yml git 바로..

Programming/Server 2020.05.16

[kafka] 보관 주기 설정

카프카의 데이터 보관 주기는 기본적으로 7일로 설정되어 있다. 보관 주기를 수정하는 방법 2가지가 있으며, 수정할때도 용량단위, 시간단위, 일단위, 초단위로 구체적인 단위로 설정 가능하다. 방법1. server.properties 파일 수정 보관주기 옵션 항목 log.retention.bytes : byte 단위 기준으로 데이터 보관 log.retention.ms : 초 단위 기준으로 데이터 보관 log.retention.minutes : 분 단위 기준으로 데이터 보관 log.retention.hours : 시간 단위 기준으로 데이터 보관, 해당 옵션이 168으로 기본으로 적용되어 있음 server.properties 파일 확인 ############################# Log Retentio..

Programming/Kafka 2020.05.15

[Linux] sftp 사용법

원격으로 리눅스 서버에 접속하여 파일을 전송하고 싶을때, sftp 서비스를 사용하면 간편하게 파일 및 폴더를 전송가능하다. sftp 서비스 사용 방법 1. sftp 접속 : sftp {원격 주소} 로컬에서 sft 원격IP로 접속시, 파일을 전송하고 싶은 로컬의 경로에서 sftp 접속을 시도한다. PS D:\log> sftp log@192.168.0.2 log@192.168.0.2's password: Connected to log@192.168.0.2. 2. put 명령어로 파일을 전송 : put {filename} put 명령어로 전송하고 싶은 파일명으로 입력하여 전송한다. sftp> put test-copy.txt Uploading test-copy.txt to /home/log/test-copy.t..

Programming/Server 2020.05.14

[kafka][용어정리] ISR : In Sync Replica

카프카를 사용하기 위해선 필수적으로 알아야할 개념 중 하나가 ISR 이다. 카프카에서 리더와 팔로워는 각자 역할이 나뉘는데 가장 중요한 것은 리더는 Read/Write를 하고, 팔로워는 주기적으로 리더의 데이터를 보며 복제만 한다는 것이다. 만약 리더가 있는 브로커가 장애가 난다면 팔로워는 새로운 리더가 될 수 있다. 이때 데이터의 정합성을 유지하기 위해 등장한 개념이 카프카의 ISR이다. ISR은 In Sync Replica의 약어로 현재 리플리케이션이 되고 있는 리플리케이션 그룹(replication group)을 의미한다. # 1 ISR이 가지고 있는 중요한 규칙 중 하나가 ISR에 속해 있는 구성원만이 리더의 자격을 가질 수 있는 것이다. Replica 그룹으로 관리하며 ISR 그룹안에 구성원이 ..

Programming/Kafka 2020.05.14