Programming 131

[kafka] JVM Heap size

카프카는 자바 기반의 JVM을 사용하는 애플리케이션이므로 메모리가 할당되는 영역인 힙(heap)이 만들어진다. # 카프카 메모리 하지만 카프카는 힙 공간을 주의해서 사용하기 때문에 힙 크기를 6GB이상으로 설정하지 않아도 된다. 적은 힙 공간으로도 구동이 가능한 이유는 메세지를 저장하고 캐싱할때, 파일 시스템에 크게 의존하기 때문이다. 모든 데이터는 disk에 flush 할 필요 없이 파일 시스템에 영구적인 로그로 즉시 기록된다. 사실 이것은 커널의 페이지 캐시로 전송된다는 것을 의미한다. 최신 OS는 메모리를 회수할 때 사용가능한 모든 메모리를 디스크 캐싱으로 전환하기 때문에 성능저하가 거의없다. 그렇기 때문에 카프카의 힙 크기는 6GB이상으로 설정하지 않아도 된다. 이 결과 32GB 머신에서 28-3..

Programming/Kafka 2020.05.13

[git] Your branch is up to date with 'origin/master'

git init으로 저장소를 정상적으로 만들고, yml 파일을 github에 push 실행 시 발생했던 내용이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 PS D:\docker-compose\cassandra> git commit -m "upload docker-compose.yml file" On branch master Your branch is up to date with 'origin/master'. Untracked files: docker-compose.yml nothing added to commit but untracked files present PS D:\docke-compose\cassandra> git status On branch maste..

[kafka] default partition replication-factor option

카프카 운용시 브로커내에 생성되지 않는 토픽 이름으로 메시지를 보낼때, 카프카에서는 자동으로 토픽을 생성하게 해줄수 있다. 아래 옵션은 존재하지 않는 토픽에 메타데이터를 패치하거나 메세지를 생성하면 자동으로 토픽을 생성한다. 운영에서는 false로 설정하기를 가이드 하고 있다. # 기본값은 true로 설정. auto.create.topics.enable = true 토픽을 자동으로 생성하는 과정에서 partition 수와 replication-factor 값도 기본값을 설정할 수있다. # 기본 partition수 설정. # 기본값은 3이다. num.partitions # 기본 replication-factor 수 설정. # kafka version 2.12.x버전에는 해당 옵션이 없긴하지만, 항목을 그대..

Programming/Kafka 2020.05.12

[Youtube][이팩티브 자바] #3 싱글톤을 만드는 여러가지 방법 그중에 최선은?

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 3: private 생성자 또는 enum 타입을 사용해서 싱글톤으로 만들 것. 오직 한 인스턴스만 만드는 클래스를 싱글톤이라 부른다. 보통 함수 같은 Stateless 객체 또는 본질적으로 유일한 시스템 컴포넌트를 그렇게 만든다. 싱글톤은 패턴의 이름. 애플리케이션을 통틀어서 패턴에 인스턴스가 하나만 사용되는 것. 싱글톤을 사용하는 클라이언트 코드를 테스트 하는게 어렵다. 싱글톤이 인터페이스를 구현한게 아니라면 mock으로 교체하는게 어렵기 때문이다. 싱글톤으로 만드는 두가지 방법이 있는데, 두 방법 모두 생성자를 prirvate으로 만들고 public static 멤버를 사용해서 유일..

Programming/Java 2020.05.06

[Youtube][이팩티브 자바] #2 생성자 매개변수가 너무 많아? 빌더 패턴을 써 봐

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 주제 2: 생성자 매개 변수가 많은 경우에 빌더 패턴 사용을 권장 static 팩토리 메소드와 public 생성자 모두 매개변수가 많이 필요한 경우에 불편해진다. NutritiaonFatc 라는 클래스를 예를 들고있다. 해당 클래스는 몇몇 반드시 필요한 빌드(반드시 셋팅이 되어야하는..)와 부가적인 필드(셋팅이 되지 않아도 되는..)를 가질 수 있는데, 그런 경우에 필수적인 매개변수를 생성자에 부가적인 필드를 하나씩 추가하여 여러 생성자를 만들 수 있다. 해결책 1: 생성자 public class NutritionFacts { private int servingSize; private int..

Programming/Java 2020.05.06

[Youtube][이팩티브 자바] #1 생성자 대신 static 팩토리 메소드를 고려해 볼 것

백기선님의 유투브 강의 내용을 정리하였습니다. 백기선님 Github 바로가기 Youtube 바로가기 강의내용 필기 Item 1. 생성자 대신 static 팩토리 메소드를 고려해 볼 것. public 생성자를 사용해서 객체를 생성하는 전통적인 방법 말고, 아래와 같이 public static 팩토리 메소드를 사용해서 해당 클래스의 인스턴스를 만드는 방법도 있다. public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : Boolean.FALSE; } 이런 방법에는 각각 장단점이 있는데 아래 장점 5가지, 단점 2가지로 정리하였다. 장점 1. 이름을 가질 수 있다. 생성자는 만들면 보통 클래스 이름과 동일하게 만들어야 한다. # public 생..

Programming/Java 2020.05.06

[kafka] spring kafka vs kafka clients

Java 기반 어플리케이션으로 kafka를 적용할때 사용하는 라이브러리는 spring kafka vs kafka clients 2가지가 있다. spring-kafka는 kafka-clients보다 레퍼런스가 풍부하며, 고수준의 라이브러리로 사용자가 사용하기 편리한 장점이 있다. kafka clients는 저수준의 라이브러리로 사용자가 직접 Configuration을 해줘야하며, spring-kafka : springboot 기반으로 편리하게 사용가능 spring-kafka가 Spring 기반으로 미리 등록된 빈으로 활용하여 환경설정이나 Consumer, Producer 기능을 비교적 쉽게 구현할 수 있다. 아래는 Consumer, Producer 환경 설정의 예시 코드 이다. ① pom.xml에 spri..

Programming/Kafka 2020.05.06

[zookeeper] zookeeper 실행시 session request 무한 루프

zookeeper 실행시 session request가 무한 루프 돌고 있다.. 아무리 다시 연결하려고 해도 아래와 같이 무한루프라면 zookeeper 중단시 강제종료(ctrl + c)를 실행하여 이전에 띄었던 zookeeper와 충돌할 경우 발생한 것으로 판단된다. ................ [2020-05-06 15:09:51,701] INFO Server environment:java.io.tmpdir=C:\Users\log\AppData\Local\Temp\ (org.apache.zookeeper.server.ZooKeeperServer) [2020-05-06 15:09:51,703] INFO Server environment:java.compiler= (org.apache.zookeeper...

Programming/Kafka 2020.05.06

[Docker] 용어정리 Docker-Registry

도커 레지스트리(Docker-Registry) 도커 공식 다큐먼트 정의 도커 레지스트리는 도커 이미지를 저장한다. 도커 허브는 누구나 사용할 수 있는 공적인 레지스트리이고, 기본적으로 도커 허브에 있는 이미지를 찾을 수 있도록 구성되어 있다. 당신은 당신 고유의 priavte한 레지스트리를 운영할 수 있다. 너가 도커 데이터센터(Docker Datacenter-DDC)를 사용한다면, 그것은 DTR(Docker Trusted Registry)에 포함된다. docker registry의 기본적인 데이터 디렉토리 위치는 /var/lib/registry 해당 경로는 registry config 파일을 수정하여 변경 가능. 최초 registry를 구동한 시점에서는 해당 경로에 기본적으로 생성되는 파일이나 디렉토리..

Programming/Server 2020.05.06