전체 글

초보 개발자의 지식 공유의 장
프로듀서 주요 옵션 bootstrap.servers 카프카 클러스터에 연결하기 위한 호스트와 포트정보로 구성된 리스트 호스트 이름:포트, 호스트 이름: 포트 kafka01:9092,kafka02:9092 acks 프로듀서가 카프카 토픽의 리더에게 메시지를 보낸 후 요청을 완료하기 전 ack(승인) 수. 해당 옵션의 수가 작으면 성능이 좋지만, 메시지 손실 가능성이 있고, 반대로 수가 크면 성능이 좋지 않지만 메시지 손실 가능성도 줄어들거나 없어짐 acks=0 프로듀서는 서버로부터 어떠한 ack도 기다리지 않음. 전송 실패에 대한 결과, 재요청 설정이 적용되지 않음. 빠르게 메시지를 보낼 수 있어 높은 치리량을 얻을 수 있음 acks=1 리더는 데이터를 기록하지만, 모든 팔로워는 확인하지 않음. 이 경우 ..
PR을 올리고 approved가 끝나면 담당자는 merge를 하게 되는 merge 방식에는 3가지가 존재한다. 1. Create a mege commit 기본값으로 선택되어 있는 merge 방식 feature 브랜치가 root 브랜치로 합쳐지는 기본적인 머지 방식 2. Squash and merge feature 브랜치에 커밋 된 여러 개의 변경사항을 1개의 커밋으로 압축하여 root브랜치에 추가하는 방식 Squash and merge 를 사용하게 되면 위와 같은 커밋 이력들을 하나의 커밋 이력으로 압축할 수 있다. 3. Rebase and merge feautre 브랜치에 커밋된 여러 개의 변경사항을 root브랜치의 최상단에 끼워 넣는 방식 위와 같은 상황에서 Rebase and merge 를 하게되면..
방식을 사용하면, 화면이 전환되거나 새로운 창을 띄어야하는 문제점이 발생한다. 업로드 완료 후 callback 받는 방법도 고려해야하기 때문에 생각해야할게 이만저만이 아니다~ 내에 type=file이 있을 경우 enctype을 multipary/form-data로 지정해줘야 한다. 지정하지 않을 경우 application/x-www-form-urlencoded가 default로 설정된다. axios라고 썼는데 이미 jquery ajax를 활용한 예제도 많다.(구글링!) 나중에 검색해서 사용할 수 있도록 예제코드를 작성해놓겠다. upload: function(){ const formData = new FormData(); const file = document.getElementById("file"); f..
LocalDateTime 시간대(Zone Offset, Zone Region)에 대한 정보가 없는 API이다. (Local 이 접두어로 붙어있다.) 즉, 한국에서 2021-01-01T08:00:00 시간이라면 다른 지역으로 넘어가도(미국) 같은 2021-01-01T08:00:00를 나타낸다. LocalDateTime = LocalDate + LocalTime LocalDateTime birthDateTime = LocalDateTime.of(1990, 10, 16, 08, 00, 00); ZonedDateTime LocalDateTime + Time Zone(시간대) 가 합쳐진 방식이다. ZonedDateTime = LocalDate + LocalTime + ZoneOffset + ZoneRegion Z..
로컬 환경 zookeeper 3대(localhost:2181, localhost:2182, localhost:2183) kafka broker 3대(localhost:9092, localhost:9093, localhost:9094) 프로듀서란?? 메시지를 생산(produce)해서 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션, 서버 등을 모두 프로듀서라고 한다. 주요기능은 각각의 메시지를 토픽 파티션에 매핑하고 파티션의 리더에 요청을 보내는 것이다. 메시지를 보낼 때 키 값을 정해서 메시지를 보낼 수 있는데, 해당 키를 가진 모든 메시지를 동일한 파티션으로 전송할 수 있다. 키 값이 존재하지 않는다면, Round-Robin 방식으로 파티션에 균등 분배하게 된다. 1. 콘솔 프로듀서로 메시지..
2021.06.20 - [프로그래밍 노트/인프라] - [kafka] Docker 사용하여 카프카 실행하기 [kafka] Docker 사용하여 카프카 실행하기 실행에 앞서 PC에 docker가 설치되어 있어야 한다. 1. kafka-docker repository clone $ git clone https://github.com/wurstmeister/kafka-docker 2. docker-compose-single-borker.yml 수정 해당 compose 파일을.. cornswrold.tistory.com 기존포스팅에서는 zookeeper 1대, kafka 1대로 구성된 카프카 실행환경을 구성하였었다. kafka를 학습하다보니, 로컬에서 클러스터로 구성된 환경이 필요했는데 다행히 docker-com..
$ docker-compose -f kafka-cluster.yml up ${container_name}
2021.06.30 - [프로그래밍 노트/인프라] - [kafka] 주키퍼(zookeeper) 설치 및 실행 (환경설정) 카프카 설치하기 $ wget http://apache.mirror.cdnetworks.com/kafka/2.8.0/kafka_2.12-2.8.0.tgz $ tar xzvf kafka_2.12-2.8.0.tgz $ ln -s kafka_2.12-2.8.0 kafka 카프카 환경설정 환경설정 파일을 열어 필요한 정보들을 수정해야 한다. 서버별 브로커 아이디 카프카 저장 디렉터리 주키퍼 정보 1. 서버별 브로커 아이디 카프카도 주키퍼가 myid를 지정한것과 비슷하게 id를 매칭시켜야 한다. 3대의 서버가 있다고 가정해보자. 아래와 같이 broker.id를 매핑한다고 기억해두었다가 나중에 카..
주키퍼 설치하기 $ wget http://apache.mirror.cdnetworks.com/zookeeper/stable/apache-zookeeper-3.6.3-bin.tar.gz $ tar xzvf apache-zookeeper-3.6.3.tar.gz $ ln -s apache-zookeeper-3.6.3 zookeeper 주키퍼는 애플리케이션에서 별도의 데이터 디렉토리를 사용 이 디렉토리에는 지노드의 복사본인 스냅샷과 트랜잭션 로그들이 저장 지노드의 변경사항이 발생하면, 변경사항은 트랜잭션 로그에 추가 로그가 어느 정도 커지면, 현재 모든 지노드의 상태 스냅샷이 파일시스템에 저장 스냅샷은 모든 이전 로그들을 대체 중요한 디렉토리이기 때문에 설치 경로와는 다른 경로로 설정하는 것이 바람직하다. 보통..
실행에 앞서 PC에 docker가 설치되어 있어야 한다. 1. kafka-docker repository clone $ git clone https://github.com/wurstmeister/kafka-docker 2. docker-compose-single-borker.yml 수정 해당 compose 파일을 사용하면 zookeeper-1대, broker(kafka)-1대 를 실행시킬 수 있다. multi broker는 나중에 기회가 되면 셋팅 해보자. 로컬에서 실행하므로 KAFKA_ADVERTISED_HOST_NAME을 127.0.0.1로 수정한다. version: '2' services: zookeeper: image: wurstmeister/zookeeper ports: - "2181:2181"..
깡냉쓰
평범한 개발자 노트