반응형

Kafka 16

Kafka Schema Registry

개요 - Schema Registry는 Kafka와 별도로 동작하는 프로세스이며, Kafka에서 발생하는 Message에 대한 Schema를 관리하는 역할을 가진다. - RESTful 인터페이스로 동작한다. - Confluent에서 공개한 오픈소스 (Hortonworks, Spring Cloud Stream 도 있음) Confluent Schema Registry 목적 데이터 호환성을 유지 및 관리하기 위해서 개발되었다. producer, consumer가 많을 수 있는 분산 시스템 환경에서, 데이터에 대한 호환성을 유지하기 위함 또한 schema에 대한 관리를 하기 위함. (data governance, 정확성, 신뢰성) 장단점 장점 단점 스키마 변경 시 발생하는 오류 방지: 메시지에 대한 변경이 일어..

개발 일지 2023.05.23

Apache Avro 란

Avro Avro 란 Avro란 Apache에서 만든 프레임워크로 데이터 직렬화 기능을 제공한다. JSON과 비슷한 형식이지만, 스키마가 존재한다. Avro = schema + binary(json value) 장단점 장점 단점 스키마를 통해 데이터 구조 및 타입을 알 수 있다. 데이터 압축 스키마 변경에 유연하게 대응 가능 binary로 serialize 되어서, 디버깅 등 상황에서 데이터 확인에 어려움이 있다. 스키마에 대한 관리가 필요하다 (관리 포인트 증가) DataType Primitive null boolean int long float double bytes string Complex record name (M): name of record, String namespace (O): 패키지, ..

개발 일지 2023.05.22

Kafka 압축 방식 성능 평가

개요 Kafka는 대용량 메시지 처리를 상정하고 개발 된 시스템이다. Kafka는 토픽으로 전송 받은 메시지를 로그 형식으로 저장하고 있으며, 이를 압축하는 기능을 제공한다. 3가지 압축방식을 지원하는데 압축에 따라서 메시징 성능에 영향을 끼친다. 압축 방식 Snappy Google에서 C++을 사용해 개발한 압축 라이브러리 적정 수준의 압축률에 빠른 압축 및 해제를 목표로 개발됨 일반적으로 초당 250MB 압축 CPU 사용률이 상대적으로 적고 빠름 압축률은 상대적으로 낮음 Gzip UNIX 시스템에서 쓰이던 압축 프로그램을 대체하기 위해 개발됨 무손실 압축 지원 ZIP과 같은 DEFLATE 알고리즘 사용 여러 파일 압축을 지원 안해서 tar와 같이 사용됨 Lz4 빠른 무손실 압축 및 해제 속도를 목표로..

개발 일지 2023.04.13

#5 와우 경매장 데이터 적재

개요 와우 경매장 데이터를 한 시간마다 데이터를 GET해서 kafka로 publish 하며, publish 된 데이터를 sink connector를 통해 MongoDB에 raw data를 적재하는 프로세스에 대한 설계 및 구현 project 소스: https://github.com/p-bear/data-collect-server 프로젝트 - spring boot project - spring-kafka를 통한 producer 구현 - Logback을 통한 로깅 - Java HttpClient를 통한 REST 통신 CI / CD - Jenkinsfile을 통한 빌드 관리 - Dockerfile을 통한 이미지 빌드 Connector - Kafka-connect를 통한 connector 추가 및 관리 - Mo..

#3 Confluent Platform 설치

개요 Confluent Platform은 kafka 기반의 관리 플랫폼이며, 데이터 파이프라인 구성, 스트리밍 애플리케이션을 쉽게 구축 및 관리할 수 있게 해 준다. 아파치 카프카의 최초 개발자들이 만든 회사이며, 카프카를 활용한 시스템을 구축할 때 최고로 평가받고 있다. 이를 활용해서 event 기반 아키텍처를 구성해보려 한다. Confluent Platform 설치 Confluent Hub 설치 curl http://client.hub.confluent.io/confluent-hub-client-latest.tar.gz --output confluent-hub-client-latest.tar.gz tar xzfv confluent-hub-client-latest.tar.gz sudo vi ~/.bas..

#1 데이터 스트리밍 시스템 구축 기획

개요 데이터 스트리밍에 대한 공부를 어느정도 진행했습니다. 배운걸 써서 재밌는걸 만들어보고 싶어서, 홈 서버에 해당 서비스를 구축해보려합니다. 계획은 Confluent Platform을 통해서 kafka의 메시지 큐를 활용해서 데이터를 스트리밍 하고, 해당 정보를 db 같은 저장소에 쌓은 뒤 API 서비스를 제공해서 client에 제공합니다. 컨텐츠로는 지인의 요청으로 선택된 블리자드 developer API를 활용해서 특정 게임의 경매장 정보를 client에게 제공하는 것입니다. reference가 되는 사이트도 참조해 보려합니다. 기본적으로 서버에 개발환경 세팅부터 구축하는 경험을 포스팅에 담을 예정입니다. Plan 간단하게 설계해본 구성입니다. 구축하면서 변할 가능성이 높습니다. 기본 구현 사항 b..

반응형