Cloud 71

Multi Node Kafka Cluster

멀티노드 카프카 클러스터분산 시스템으로서 카프카의 성능과 가용성을 함께 향상 시킬 수 있도록 구성스케일 아웃 기반으로 노드 증설을 통해 카프카의 메시지 전송과 읽기 성능을 거의 선형적으로 증가 시킬 수 있음데이터 복제를 통해서 분산 시스템 기반에서 카프카의 최적 가용성을 보장 멀티브로커 설치하기...broker.id=3...listeners=PLAINTEXT://:9094...# A comma separated list of directories under which to store log fileslog.dirs=/home/tony/kafka/data/kafka-logs-03server.properties를 총 3개 생성한다.새로운 zookeeper.properties를 만들고 아래처럼 변경해준다.# ..

Cloud/kafka-core 2024.07.02

Kafka File Producer App + File Consumer App

file에 텍스트가 추가될  때 마다 Producer 메시지를 전송하도록 구현한다.public class FileEventSource implements Runnable { public static final Logger logger = LoggerFactory.getLogger(FileEventSource.class.getName()); //주기적으로 file을 모니터할 기간. ms 단위. private long updateInterval; //모니터할 File 객체 private File file; //file에 변경사항이 발생했을 때 Producer를 이용하여 메시지를 전송하는 EventHandler private EventHandler eventHandler;..

Cloud/kafka-core 2024.06.30

Kafka Consumer - 03

Consumer의 subscribe, poll , commit 로직Consumer는 subscribe()를 호출하여 읽어 들이려는 토픽을 등록한다.Consumer는 poll 메소드를 이용하여 주기적으로 브로커의 토픽 파티션에서 메시지를 가져온다.메시지를 성공적으로 가져왔으면 commit을 통해서 __consumer_offsets에 다음에 읽을 offset을 기재한다.group meta data에 어떤 consumer가 어떤 partition을 consume하고 있다가 나와있지 __consumer_offsets에 나와있지 않다. 중복 읽기가 발생하는 상황consumer1이 poll만하고 아직 commit을 하지 않은 상황에서 고장이나서 종료되면conusmer2가 읽어야하는 부분은 5부터 읽어야된다. 읽기 ..

Cloud/kafka-core 2024.06.18

Kafka Consumer - 02

Group Coordinator + Consumer RebalanceConsumer는 rebalancing이 진행이되면 consumer는 소비하는것을 멈추고 rebalancing에만 집중한다.이때 producer는 계속 생산이 되므로 , rebalancing이 끝나면 안 읽었던것들을 다 읽어야한다. 이 과정에서 오래걸리나 문제가 발생하는 경우가 생긴다.Group Coordinator에서 Consumer가 새로 추가되거나 종료될때 , 새로운 partition이 추가될 때 , consumer heartbeat에서 응답이 오지 않을 경우 , rebalancing을 수행하라고 Consumer group의 leader consumer에게 명령을 내린다.consumer가 group에 추가및 삭제 될 때마다 stat..

Cloud/kafka-core 2024.06.04

Kafka Consumer - 01

Consumer 개요브로커의 Topic 메시지를 읽는 역할을 수행한다.모든 Consumer들은 고유한 그룹아이디 group.id를 가지는 Consumer Group에 소속되어야 한다.개별 Consumer Group내에서 여러 개의 Consumer들은 토픽 파티션 별로 분배된다.Consumer는 subscribe()를 호출하여 읽어 들이려는 토픽을 등록한다.Consumer는 poll 메소드를 이용하여 주기적으로 브로커의 토픽 파티션에서 메시지를 가져온다.메시지를 성공적으로 가져왔으면 commit을 통해서 _consumer_offsets 에 다음에 읽을 offset 위치를 기재한다. KafkaConsumer는 Fetcher, ConsumerClientNetwork등의 주요 내부 객체와 별도의 Heart Be..

Cloud/kafka-core 2024.05.16

Kafka Producer - 02

acks 값 에 따른 Producer의 전송 방식 차이 이해Producer는 Leader broke가 메시지 A를 정상적으로 받았는지에 대한 Ack 메시지를 받지 않고 다음 메시지인 메시지 B를 바로 전송메시지가 제대로 전송되었는지 브로커로 부터 확인을 받지 않기 때문에 메시지가 브로커에 기로되지 않더라도 재 전송하지 않음메시지 손실의 우려가 가장 크지만 가장 빠르게 전송할 수 있음IOT 센서 데이터 같이 손실에 민감하지 않을 때사용함Producer는 Leader broker 가 메시지 A를 정상적으로 받았는지에 대한 Ack 메시지를 받은 후 다음 메시지인 메시지B를 바로 전송. 만약 오류 메시지를 브로커로 부터 받으면 메시지 A 재전송메시지 A가 모든 Replicator에 완벽하게 복사되었는지의 여부는..

Cloud/kafka-core 2024.05.03

Kakfa Topic, Producer, Consumer

Topic , Parition , parallel processing a kafkatopic은 여러개의 parition로 이루어져 있고 producer가 보낸 message를 저장하게 된다.즉 topic은 partition으로 구성된 일련의 로그 파일이다.Rdbms 의 partitioned table과 유사하다.topic은 key value구조이고 value는 어떤 타입의 메시지도 가능하다 (Json, String, Object, ProtoBuf등)producer가 보낸 data는 topic에 offset이 순차적으로 증가하면서 저장이 된다. 계속 append 만되는것이다.중간에 껴서 update하고 그런것이 없다.개별 파티션은 정렬되고, immutable 일련의 레코드로 구성된 로그 메시지이다.개별 파..

Cloud/kafka-core 2024.04.11

인프라 자동화, 컴퓨팅 - 컨테이너 서비스 ,Severless , Elastic Beanstalk ,머신러닝 ,재해 복구

CloudFormation AWS 인프라 세트를 수동으로 프로비저닝하면 많은 노력이 소요됨 수동 작업말고 코드를 작성하여 자동화한다면? 코드를 통해 인프라를 프로비저닝, 관리하는 서비스가 CloudFormation (Infrastructure as Code) 코드를 통해 자동화 하여 AWS 인프라를 생성, 업데이트, 삭제 가능 구성요소 Template = 인스턴스 유형, AMI id ,VPC 등의 인프라를 구성하기 위한 설정 값이 있는 JSON 또는 YAML 형식의 텍스트 파일로 이루어진 템플릿 Stack = Template을 사용하여 생성된 리소스 Change Set = Stack 리소스 변경사항에 대한 세트 AWS 컨테이너 서비스 Elastic Contaienr Service (ECS) Docker ..

네트워크 - VPC

VPC 개요 CIDR(Classless Inter-Domain Routing) IP 주소 범위를 정의하는 방식 IP 주소를 작은 그룹으로 분할 하는것으로 서브네팅이라고함 예) 192.168.32.1/24 192.168.32.1 은 기준 IP, /24는 서브넷 마스크 192.168.32.1의 IP 대역을 24비트로 나눈것 256개의 IP를 사용가능 (192.168.32.0 ~ 192.168.32.255) VPC (Virtual Private Cloud) AWS의 가상네트워크 로 기본 VPC는 인터넷과 연결이 되어 있고 EC2 인스턴스를 생성하면 기본 VPC에 연결 s3 ,dynamodb 같은 것들은 public 에 위치해서 바깥의 인터넷과 연결되어 있다. private에 있는 EC2들은 바로 접속할 수 없..