카프카 7

[kafka] consumer producer key value 확인

카프카는 토픽을 기본으로 파티셔닝을 한다. 하지만 하나의 파티션 안에서 또다른 기준 값이 필요하다면 key를 따로설정해줄수 있다. key 에대한 설정은 기본이 null값이기 때문에, 따로 지정하지 않으면 null로 들어감을 확인할 수 있다. 아래 옵션을 컨슈머, 프로듀서의 콘솔창 실행 옵션에 추가하여 key, value를 확인해 보자. key, value 설정 옵션 parsing.key : key와 value 파싱 활성화 여부 key.separator : key와 value 파싱 구분자 print.key : console 창 출력 여부 컨슈머, 프로듀서의 콘솔창 실행 옵션에 추가 1) producer PS C:\kafka\kafka_2.12-2.5.0\bin\windows> .\kafka-console-..

Programming/Kafka 2020.05.25

[kafka] 자주 사용하는카프카 명령어

카프카 사용시 자주 사용하는 명령어이다. 명령어 확인 경로: /usr/local/kafka/bin 토픽 생성 > bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic 토픽 리스트 확인 > bin/kafka-topics.sh --list --bootstrap-server localhost:9092 토픽 상세 보기 > bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test-topic 토픽 설정 변경 디스크 공간 확보시 필요. 운영 중 디스크 공간을 확보하는 가장 좋은..

Programming/Kafka 2020.04.23

[kafka] 메시지 전송 케이스 별 프로듀서 옵션 설정

메시지 전송 케이스 별 프로듀서 옵션 설정 1. 메세지 손실 가능성이 높지만 빠른 전송이 필요한 경우 프로듀서의 acks=0 설정 일부 메시지 손실을 감안하더라도 매우 빠르게 전송이 필요한 경우. 메시지 손실이 발생한다고 해서 프로듀서가 보내는 메시지 90% 이상 손실된다는 의미는 아님 일반적인 운영 환경의 경우 메시지 손실 없이 빠르게 보내지만, 브로커가 다운되는 장애 등의 경우에 메시지 손실 가능성이 높은 편. 2. 메시지 손실 가능성이 적고 적당한 속도의 전송이 필요한 경우 1번 케이스와는 달리 프로듀서가 카프카로 메시지를 보낸 후 보낸 메시지에 대해 카프카가 잘 받았는지 확인(acks) 함. acks 받는 시간이 추가되어 시간이 속도는 떨어짐.(시간: 보내는 행동 + 응답을 받는 행동) 리더에 장..

Programming/Kafka 2020.04.20

[kafka] 카프카 디자인

카프카는 높은 처리량과 빠른 메세지 전송 운영 효율화를 위해 분산 시스템, 페이지 캐시, 배치 전송처리 기능으로 구현되어 있다. 각각의 기능의 특징을 알아보자. 1. 분산시스템 네트워크의 그룹으로 이루어진 컴퓨터들의 그룹을 의미하는 분산 시스템은 단일시스템보다 더 높은 성능을 얻을 수 있음. 하나의 서버에 장애가 발생하여도 다른노드가 대신 처리하면 됨 시스템 확장에 용이함. 2. 페이지 캐시 카산드라의 처리량을 높이기 위해 도입. o/s 의 잔여 메모리를 이용해 디스크가 아닌 페이지 캐시를 활용하여 읽고 쓰는 활동함. 이러한 특징은 디스크 SATA에서도 카프카 구동이 가능 하지만 페이지를 서로 공유 해야하기 때문에 하나의 시스템에 카프카를 다른 어프리케이션과 함께 실행하는 것을 권장하지 않음. 카프카는 ..

Programming/Kafka 2020.04.13

[kafka] 카프카 주키퍼

1. 주키퍼 (Zookeeper) 주키퍼란? 주키퍼는 분산 애플리케이션을 위한 코디네이션 시스템 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 각 애플리케이션의 정보를 중앙에 집중하고 구성관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공. 프로그램하기 쉽고 파일 시스템의 친숙한 디렉토리 트리 구조에 따라 스타일이 지정된 데이터 모델을 사용하도록 설계 주키퍼 구현은 고성능, 고 가용성을 보장 서비스를 구성하는 모든 서버는 서로를 모두 알고 있어야 하며, 영구 저장소의 트랜잭션 로그 및 스냅 샵과 함께 메모리 내 상태 이미지를 유지 관리. 지노드(znode) 서로 연결되어 있는 서버들은 상태 정보등을 주고 받음. 상태 정보들은 주키퍼의 지노드(znode)라 불리는 곳에 키-값(key-val..

Programming/Kafka 2020.04.12

[kafka] 카프카 특징

1. 카프카 특징 # 대표적인 특징 프로듀서와 컨슈머의 분리 멀티 프로듀서, 멀티 컨슈머 디스크에 메시지 저장 확장성 높은 성능 1. 프로듀서와 컨슈머의 분리 카프카는 메시징 전송방식 중 메시지를 보내는 역할과 받는 역할이 완벽하게 분리된 펍/섭 방식 적용. 이런 느슨한 결합을 통해 어느 한쪽 시스템에서 문제가 발생하더라도 서로 의존성이 없으므로 연쇄작용이 발생할 확률은 매우 낮음 장점 : 컨슈머의 서버가 하나더 추가 되더라도 카프카로만 보내면 되기 때문에 서버 추가에 대한 부담도 줄일 수 있음 2. 멀티 프로듀서, 멀티 컨슈머 카프카는 하나의 토픽에 여러 프로듀서 또는 컨슈머들이 접근 가능한 구조로 되어 있음. 하나의 프로듀서가 하나의 토픽에만 메시지를 보내는 것이 아니라, 하나 또는 하나이상의 토픽으..

Programming/Kafka 2020.04.10

[kafka] 링크드인과 카프카 탄생배경

카프카 탄생 배경 미국의 대표적인 비즈니스 인맥 소셜네트워크 서비스인 링크드인 에서 처음 출발한 기술로서, 링크드인 사이트가 급속도로 성장하면서 발생하는 내부 여러 이슈들을 해결하기 위해 탄생하였다. 과거 링크드인 시스템 구성도 위의 아키텍쳐 처럼 엔드투엔드(End to End)연결 방식의 아키텍처는 많은 문제점이 있다. 첫번째로는 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이뤄지지만 통합된 전송 영역이 없으니 복잡도는 증가할 수 밖에 없다. 또한 문제가 발생했을때, 조치를 취하려면 여러 시스템에서 확인해야한다. 두번째로는 데이터 파이프라인 관리의 어려움이다. 실시간 트랜잭션 데이터 베이스, 아파치 하둡, 모니터링 시스템, 키-값 저장소 등 많은 데이터 시스템들이 있는데, 이 시스템에 저장된..

Programming/Kafka 2020.04.08