Programming/Kafka 32

[kafka] 데이터 모델 토픽 파티션 오프셋

카프카가 고성능, 고가용성 메시징 어플리케이션으로 발전한 데는 토픽과 파티션의 역할이 컸다. 토픽은 메세지를 받을수 있도록 논리적으로 묶은 개념이고, 파티션은 토픽을 구성한는 데이터 저장소를 의미한다. 이에 대해 자세히 알아보자 1. 토픽 카프카 클러스터가 데이터를 저장할 때 토픽이라 불리는 곳에 저장함 메일시스템의 메일주소값과 같은 의미 영문, 숫자, '.', '_', '-'의 자유로운 조합으로 249자 미만으로 네이밍 접두어로 서비스명을 추가하여 구분 2. 파티션 토픽을 구성하는 데이터 저장소로 수평 확장 가능 큐시스템의 제약 조건으로 메시지 순서 보장 (이전 메시지가 처리 완료되어야 다음메시지 처리) 효율적 사용을 위해선 토픽의 파티션수가 많으면 좋지만, 무조건 늘리는 것은 아님. 파티션은 각 브로..

Programming/Kafka 2020.04.14

[kafka] 카프카 디자인

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

Programming/Kafka 2020.04.13

[kafka] 카프카 주키퍼

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

Programming/Kafka 2020.04.12

[kafka] 기본 용어 정리

카프카 용어 정리 카프카(kafka) 아파치 프로젝트 애플리케이션 이름, 클러스터 구성이 가능하며 카프카 클러스터라고 부른다. 카프카 클러스터는 브로커, 주키퍼, 토픽, 파티션, 리더, 팔로워로 이루어져 있다. 주키퍼(Zookeeper) 주키퍼는 분산 코디네이션 시스템이다. 카프카 브로커를 하나의 클러스터로 코티네이팅 하는 역할을 하며 나중에 이야기할 카프카 클러스터의리더(Leader)를 발탁하는 방식도 주키퍼가 제공하는 기능이다. 브로커(Broker) 카프카 애플리케이션이 설치되어 있는 서버 또는 노드 토픽(Topic) 프로듀서와 컨슈머들이 카프카로 보낸 자신들의 메시지를 구분하기 위한 네임으로 사용한다. 토픽은 카프카 클러스터에서 여러개 만들 수 있으며 하나의 토픽은 1개 이상의 (Parition)으..

Programming/Kafka 2020.04.11

[kafka] 카프카 특징

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

Programming/Kafka 2020.04.10

[kafka] 카프카의 동작 방식과 원리

1. 메세징 시스템과 PUB/SUB 모델 카프카는 기본적으로 메시징 서버로 동작한다. 따라서 카프카의 동작 방식을 설명하기에 앞서 먼저 메시징 시스템에대해 알아보자. 메세지라고불리는 데이터 단위를 보내는 측(Publisher 또는 Producer)에서 카프카에 토픽이라는 각각의 메시지 장소에 데이터를 저장하면, 가져가는 측(Subscriber 또는 Consumer)이 원하는 토픽에서 데이터를 가져가에 되어 있다. 중앙에 메시지 시스템 서버를 두고 이렇게 메세지를 보내고(Publish) 받는(Consumer) 형태의 통신을 Pub/Sub 모델이라고 한다. Pub/Sub 모델이 아닌 일반적인 형태의 네트워크 통신은 아래와 같이 구성된다. 전송 속도와 전송 결과를 신속하게 알 수 있는 장점이 있는 반면 특정 ..

Programming/Kafka 2020.04.09

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

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

Programming/Kafka 2020.04.08

[kafka] window에서 사용시 java.nio.file.FileSystemException

현상 window에서 kafka 정상 시작은 되었지만, 몇일 뒤 아래와 같은 오류로 kafka 강제 종료되었다. [2020-03-25 09:34:24,966] INFO Starting server (org.apache.zookeeper.server.ZooKeeperServerMain) ................. [2020-04-01 10:52:09,979] ERROR Error while deleting segments for test-0 in dir D:\tmp\kafka-logs (kafka.server.LogDirFailureChannel) java.nio.file.FileSystemException: D:\tmp\kafka-logs\test-0\00000000000000000000.timei..

Programming/Kafka 2020.04.03

[kafka] 카프카란 ? 비동기 처리 메세지 큐의 한 종류

카프카 기본 개념 1. 정의 - 비동기 처리를 위한 메시킹 큐의 한 종류 - 프로듀서와 컨슈머로 구성 - 대표적인 비동기 메시징 시스템임 메일과 비슷한 개념 Mail System | Kafka System 보내는 사람 | Producer Mail Server | Kafka Server 받는사람 | Consumer 즉, 보내는 사람은 받는 사람과 상관없이 메일 서버로 메세지를 전송한다. 보낸 메세지는 메일서버에 저장되어 있고, 받는 사람은 언제든지 자기가 원하는 시간에 메일을 받아볼 수 있다. Quickstart 참고사항 아파치 카프카 공식홈페이지의 QuickStart를 따라해볼때 주의사항입니다. 1. 서버는 최소 3대 구성하기 주키퍼 - 3EA 카프카 - 3EA 주키퍼는 카프카의 노드를 관리해주고, 토픽..

Programming/Kafka 2020.04.02

[kafka] quick start Single-broker cluster window/linux

참고 사이트 : kafka quickstart step 1. kafka 다운로드 공식홈페이지에서 kafka 다운로드 압축 해제 - 아래는 리눅스 압축해제 후 폴더 경로로 들어가기 tar -xzf kafka_2.12-2.4.1.tgz cd kafka_2.12-2.4.1 - OS가 윈도우인 경우는 압축해체 후 Powershell이나 cmd에서 실행하면 된다. step 2. 서버 시작 - 주의 : 유닉스 기반 OS에서는 ..bin/.....sh 파일에서 실행, Window에서는 ..\bin\windows\....bat 파일 실행 - Zookeeper 서버 시작 (kafka는 zookeeper 위에서 구동되기 때문에 Zookeeper 먼저 실행해줘야한다. ) kafka_2.12-2.2.0\bin\windows>..

Programming/Kafka 2020.03.26