KafkaConsumer 파라미터 Topic 이름을 KafkaConsumer의 첫번째 인자로 지정 혹은 나중에 별도로 subscribe를 호출해서 지정 파라미터 의미 기본 값 설명 bootstrap_servers 메세지를 보낼 때 사용할 브로커 리스트 (host:port) localhost:9092 client_id Kafka Consumer 이름 'kafka-python-{version}' 지정 안 하면, 알아서 지정됨 group_id Kafka Consumer Group 이름 consumer 수 상관없이 꼭 설정해줘야 함 key_deserializer, value_deserializer 메세지의 키와 값의 deserialize 방법 지정 (함수) serialize 했더 것을 다시 deserialize..
Kafka란? 실시간 데이터를 처리하기 위해 설계된 오픈소스 분산 스트리밍 플랫폼 데이터 재생이 가능한 분산 커밋 로그 (Distributed Commit Log) 한번 기록되면 영구적임 Scalability와 Fault Tolerance를 제공하는 Publish-Subscription 메시징 시스템 Producer-Consumer (Publish-Subscription) High Throughput과 Low Latency 실시간 데이터 처리에 맞게 구현됨 분산 아키텍처를 따르기 때문에 Scale out 이란 형태로 스케일 가능 서버 추가를 통해 Scalability 작성 (서버=Broker) 정해진 보유기한 (default=일주일) 동안만 메시지를 저장 Eventual Consistency 100대 서..
데이터 처리의 일반적인 단계 데이터 수집 (Data Collection) 데이터 저장 (Data Storage) 데이터 처리 (Data Processing) 이 과정에서 서비스 효율을 높이거나 의사결정을 더 과학적으로 하게 됨 데이터 처리의 고도화 처음에는 배치로 시작 처리할 수 있는 데이터의 양이 중요 (얼마나 큰 데이터를 한꺼번에 처리할 수 있는가) 서비스가 고도화되면서 실시간 처리 요구가 생기기 시작 Realtime 처리 vs Semi Realtime 처리 동일 데이터 소비가 필요한 케이스 증가: 다수의 데이터 소비자 등장 처리량(Throughput) vs 지연시간(Latency) 처리량(Throughput): 주어진 단위 시간 동안 처리할 수 있는 데이터의 양 클수록 처리할 수 있는 데이터의 양이..
Zookeeper Apache에서 개발한 오픈 소스 분산 형상 관리 시스템으로, 분산 어플리케이션을 위한 분산 코디네이터라고 할 수 있다. 한 노드 안에서 프로그램이 수행될 때는 걱정하지 않아도 될 요소인 네트워크를 통해서 메세지가 전송되는 부분이 종종 문제가 된다. 특히 메세지를 전송하고 네트워크가 끊겼을 때 송신자는 수신자가 메세지를 성공적으로 수신 했는지 조차 알 수 없게 된다. 메세지를 받고 처리까지 했는데 응답을 못 준 걸 수도 있고, 메세지 전송 자체가 실패한 걸 수도 있다. 작업이 성공했는지 실패했는지 여부 조차 알 수가 없는 것이다. zookeeper는 이러한 부분 실패(Partial Failure)를 처리하기 위한 분산 처리 도구를 제공한다. zookeeper는 분산 어플리케이션을 만들기..