전체 글 (60) 썸네일형 리스트형 효율적인 데이터 분산 저장 전략: 샤딩과 리밸런싱의 이해 해당 내용은 샤딩에 대한 내용으로 비유적인 설명이 많습니다.이해를 위해서만 봐주시고, 더 궁금하신 내용은 댓글을 남겨주세요. 위에처럼 노트북을 보관해 주는 회사가 있고, 노트북을 1000대 보관할 수 있는 창고가 있습니다. 1. 데이터 분산 저장을 위한 새로운 창고의 추가 (샤딩)보관해야 할 1000대의 노트북이 추가로 들어와서 창고 B를 만들었습니다.창고 A와 B는 모두 노트북이 들어온 순서대로 보관을 하고 있습니다. 만약 고객이 창고에 들어와 노트북을 찾으려면 2000대의 노트북을 하나씩 확인해야만 합니다. 2. 최적화 전략 개발 (샤딩 키 구성)노트북을 찾는 시간이 너무 오래걸려, 시리얼 번호를 기준으로 분류합니다. 시리얼 번호는 한번 정해지면 변경되지 않는 값이므로시리얼 번호가 홀수로 끝나.. Kafka의 고가용성: 장애 대응 및 데이터 손실 방지 Kafka의 안전성과 복구 전략Apache Kafka는 대용량의 실시간 데이터 스트림 처리를 위한 분산 메시징 시스템입니다. Kafka의 안정성과 높은 가용성을 위해 여러 가지 전략과 구성 요소가 사용됩니다. 본 글에서는 Kafka의 주요 안전성 및 복구 전략에 대해 알아보겠습니다. 1. 데이터 복제Kafka는 데이터의 내구성을 보장하기 위해 각 Topic의 파티션을 여러 개의 복제본으로 구성합니다. 각 파티션은 주 브로커(리더)와 여러 팔로워 브로커(복제본)으로 구성됩니다.Producer가 데이터를 전송하면, 해당 데이터는 주 브로커에 저장되고, 주 브로커는 복제본 브로커들에게 데이터를 복제하여 저장합니다. 이렇게 복제된 데이터는 클러스터 내에 여러 브로커에 분산 저장되므로, 하나의 브로커가 장애가 발.. Kafka의 EOS 보장 및 성능 최적화 전략: Producer, Consumer, Broker 설정 1. EOS의 개념과 중요성EOS (Exactly Once Semantics)는 메시지 전송에서 메시지가 한 번만 전송되고 처리되는 것을 보장하는 전송 보증입니다. 다시 말해, 송신자와 수신자 사이에 데이터의 중복 또는 손실 없이 데이터가 한 번만 전송되는 것을 의미합니다. EOS의 중요성:데이터 중복성 제거: 중복된 메시지는 데이터의 무결성을 해칠 수 있습니다. EOS는 이를 방지하여 데이터의 정확성을 보장합니다.데이터 손실 방지: 손실된 메시지는 시스템의 안정성을 위협합니다. EOS는 모든 메시지가 제대로 전달되도록 보장합니다.자원 효율성: 중복 메시지를 처리하는 데 필요한 자원을 절약하여 시스템의 효율성을 높입니다. 2. Kafka에서 EOS를 어떻게 구현하는지Apache Kafka는 0.11.0.. Kafka Streams로 실시간 데이터 분석, Kafka Connect로 데이터 통합 Kafka Streams의 개념 및 특징Kafka Streams은 Kafka 기능 위에 구축된 라이브러리로, 실시간 데이터 스트림을 처리하고 분석하기 위한 간단한 방법을 제공합니다. 그 중 주요 특징은 다음과 같다고 합니다. 분산 처리: Kafka Streams 어플리케이션은 분산시스템으로 쉽게 확장될 수 있습니다.상태 저장: 내부적으로 RocksDB와 같은 내장 상태 저장소를 활용하여 처리 중인 데이터를 유지합니다.탄력성과 내결함성: 어플리케이션 장애나 Kafka 클러스터의 변화에 강하게 설계되어 있습니다. 사실 위에 내용을 읽어봐도 크게 와닿지가 않아서 Kafka와의 차이점을 적어보겠습니다.처리 유형Kafka: 기본적인 메시지 전송과 저장에 초점을 맞춥니다. 메시지를 생성하고, 저장하며, 다른 시스템.. Kafka 아키텍처와 ZooKeeper의 역할: 고가용성 분산 시스템의 설계와 관리 Kafka 아키텍처Apache Kafka는 분산 스트리밍 플랫폼으로, 대용량의 데이터를 처리하고 실시간 데이터 스트리밍을 지원하는데 특화되어 있습니다. Kafka의 아키텍처는 다음과 같은 주요 요소로 구성됩니다. 1. 브로커 (Broker) : 데이터를 저장하고 관리하는 주체데이터를 저장하고 관리하는 주체로서 Kafka 클러스터의 핵심 구성 요소입니다. 브로커는 Topic에 쌓인 데이터를 Partition 단위로 관리하며, 여러 개의 브로커가 클러스터를 형성하여 데이터를 분산하여 처리합니다. 각 브로커는 자신이 관리하는 Topic의 데이터를 저장하고, Consumer에게 데이터를 전달합니다.2. 토픽 (Topic) : 여러 파티션의 집합 (데이터가 보관되는 장소)여러 파티션의 집합으로 데이터가 보관되는 .. Apache Kafka: 실시간 데이터 스트리밍을 위한 기본 개념과 Producer-Consumer 구조 Apache Kafka는 고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 오픈 소스 분산 이벤트 스트리밍 플랫폼(distributed event streaming platform)입니다.Kafka를 사용 목적대용량 데이터 처리 : Kafka는 대용량 데이터를 효율적으로 처리할 수 있으며 높은 처리량과 확장성을 제공합니다.실시간 스트리밍 : 실시간 데이터 스트리밍을 지원하여 실시간 애플리케이션 개발에 용이합니다.데이터 파이프라인 : 다양한 시스템 간에 데이터를 안정적으로 전송하고 연결하는 데 Kafka를 사용할 수 있습니다.내구성과 보존 : 데이터를 안전하게 보존하고 장애가 발생해도 데이터의 유실을 방지합니다.다양한 애플리케이션과 통합 : Kafka는 다양한 형.. 유연한 코드 설계: 의존성 주입(DI)과 그 장점 의존관계(Dependency)가 무엇인지부터 알아보겠습니다. 셰프와 재료 공급업체를 예로 들겠습니다. 셰프 (클래스 A): 셰프는 요리를 만들기 위해 식재료가 필요합니다. 셰프가 재료 없이는 요리를 만들 수 없으므로, 재료에 의존하고 있습니다.쿠팡 재료 공급업체 (클래스 B): 재료 공급업체는 셰프가 필요로 하는 재료를 제공합니다.이처럼 셰프 -> 재료 공급업체 의 의존 관계가 형성되었습니다. 이를 코드로 나타내면 다음과 같습니다. public class Chef { private CoupangIngredientSupplier coupangIngredientSupplier; public Chef() { this.coupangIngredientSupplier = new Coupang.. Redis 트랜잭션: MULTI부터 EXEC까지 트랜잭션 처리 과정 Redis 트랜잭션 에 대하여 알아보겠습니다. 우선 트랜잭션이 이루어지는 순서는 다음과 같습니다.MULTI : 트랜잭션을 시작합니다. 이후에 실행되는 명령어는 모두 이 트랜잭션에 속합니다.명령어 저장 : MULTI 이후에 실행되는 멸영어들은 순차적으로 기록되어 트랜잭션 로그(명령어 큐)에 저장됩니다. 여기에 저장된 명령어들은 실행되지 않습니다.EXEC : 트랜잭션을 실행합니다. EXEC 명령어를 호출하면 트랜잭션 로그(명령어 큐)에 저장된 순서대로 명령어들을 실제로 실행합니다.트랜잭션 결과 : 만약 중간에 오류가 발생하거나, WATCH로 감시한 키가 변경되었다면, EXEC가 호출되기 전까지의 트랜잭션의 모든 명령어들은 취소되어 실행되지 않은 것처럼 처리됩니다. 트랜잭션의 주의사항Redis는 단일 스레드로.. 이전 1 2 3 4 5 6 7 8 다음