본문 바로가기
반응형

All Posts229

[ZooKeeper] 주키퍼 기반 리더 선출 알고리즘 구현 Zookeeper 기반 리더 선출 알고리즘 구현이번 글에서는 Zookeeper를 활용한 리더 선출 알고리즘 구현, Jar 패키징 후 실행 할 예정이고,다음 실습에서  장애 감지 및 군집 효과(Herd Effect) 대응 전략과 재선출 알고리즘을 설명하겠습니다.리더 선출 알고리즘 구현Zookeeper는 분산 시스템의 코디네이터 역할을 수행할 수 있도록 강력한 API를 제공합니다. 그 중 하나가 리더 선출 메커니즘입니다. 핵심은 다음과 같습니다:각 클러스터 노드는 Zookeeper에 /election이라는 부모 노드 아래에 EPHEMERAL_SEQUENTIAL 모드의 자식 노드를 등록합니다.Zookeeper는 이 자식 노드들에 대해 고유한 순번을 부여합니다.노드 중 가장 작은 번호를 가진 노드가 리더가 됩니.. 2025. 4. 12.
[ZooKeeper] 주키퍼 클라이언트 스레딩 모델과 Java API 연결하기 이번 글에서는 Zookeeper의 클라이언트 스레딩 모델에 대해 자세히 알아보고, Java API를 활용하여 Zookeeper와 연결하는 방법까지 단계별로 소개하겠습니다. 이 글을 읽는 독자는 Gradle 기반 프로젝트를 기준으로 따라 할 수 있습니다.Zookeeper 클라이언트 스레딩 모델Zookeeper 클라이언트를 생성하면 내부적으로 2개의 추가 스레드가 자동 생성됩니다.1. IO 스레드네트워크 통신 처리 담당Zookeeper 서버와의 세션 유지, 요청 및 응답 처리, 세션 타임아웃 관리 등 수행사용자 코드와 직접 상호작용하지 않음2. 이벤트 스레드서버와의 연결 및 해제 등 상태 변화 이벤트 처리사용자가 등록한 Watcher 트리거 관리이벤트는 발생 순서대로 하나씩 처리됨즉, Zookeeper는 이.. 2025. 4. 12.
[ZooKeeper] 주키퍼 설치 및 설정 가이드 (Mac OS, Windows, Linux) ZooKeeper 설치 및 설정 가이드 분산 시스템을 설계하고 실습하기 위해 Apache ZooKeeper를 로컬에 설치하는 방법을 운영체제별로 정리했습니다.ZooKeeper는 리더 선출 알고리즘을 포함한 다양한 분산 알고리즘을 실습하는 데 핵심적인 도구입니다. 필자는 Mac OS 환경에서 설치했습니다.  ZooKeeper란? ZooKeeper는 분산 시스템에서 노드 간의 일관성과 조율을 담당하는 오픈소스 분산 코디네이터이다. Apache Kafka, Hadoop, HBase 등의 프로젝트에서 기본적으로 사용된다. ZooKeeper는 다음과 같은 기능을 제공한다: 리더 선출서비스 레지스트리 및 디스커버리상태 감시 및 고장 감지분산 락(Distributed Lock)파일 시스템처럼 동작하는 트리형 데이터 .. 2025. 4. 12.
[ZooKeeper] 코디네이터(Coordinator)개념과 주키퍼 소개 분산 시스템의 조율자, 코디네이터와 주키퍼(ZooKeeper) 대규모 데이터를 처리하거나 복잡한 연산을 요구하는 시스템에서는 하나의 서버로 모든 작업을 처리하는 것이 비효율적이다. 이를 해결하기 위해 분산 시스템이 사용된다. 여러 대의 서버가 협업해 작업을 처리하며, 그 안에서 역할을 배분하고 상태를 감지하며, 실패가 발생했을 때 적절히 대응하는 기능이 중요해진다. 이 모든 작업을 조율하는 역할을 맡는 것이 바로 코디네이터(Coordinator)이다.  코디네이터란? 코디네이터는 분산된 여러 노드 간의 상태를 관리하고, 특정 노드를 리더로 선출하거나, 노드 간 통신을 중재하는 핵심적인 역할을 담당한다. 이를 통해 노드들이 충돌 없이 하나의 시스템처럼 동작할 수 있게 만든다. 하지만 직접 이러한 코디네이터.. 2025. 4. 12.
[분산시스템] 장애허용성과 TMR, 프로세스 그룹의 개념 설명 (Fault Tolerance, Process Group) Issue of Fault ToleranceFault Tolerance는 distributed system(분산 시스템)의 핵심 특성 중 하나로, single-machine system(단일 시스템)과의 중요한 차별점을 이룬다.특히, 분산 시스템에서는 partial failure(부분 실패)의 개념이 존재하며, 이는 시스템의 일부만 고장나는 상황을 의미한다.따라서 분산 시스템 설계의 중요한 목표 중 하나는, 시스템이 이러한 부분 실패로부터 자동으로 회복할 수 있도록 구성하는 것이다.이러한 회복 과정은 전체 성능에 심각한 영향을 주지 않아야 한다.Stability Quality of Software SystemsAvailabilityAvailability는 시스템이 즉시 사용 가능한 상태에 있는 특성을 의.. 2025. 4. 12.
[데이터베이스] 정규화(Normalization)와 함수 종속성, BCNF분해, 3NF분해, 종속성 규칙과 공리 정규화(Normalization)란?정규화는 데이터베이스 설계 시 데이터의 중복을 최소화하고, 데이터의 무결성을 유지하기 위해 테이블을 구조적으로 분해하는 과정이다. 정규화를 통해 데이터 저장 공간의 낭비를 줄이고, 삽입/삭제/갱신 이상(Anomaly)을 방지할 수 있다.정규화의 목적중복 데이터 제거데이터 무결성 유지삽입/삭제/갱신 이상(Anomalies) 방지테이블 간의 명확한 관계 설정정규화 과정 (Normal Forms)정규화는 여러 단계로 구성되며, 각 단계는 이전 단계보다 더 높은 수준의 정규성을 보장한다:제1정규형(1NF): 모든 속성 값이 원자값(Atomic Value)으로 되어 있어야 함제2정규형(2NF): 1NF를 만족하고, 부분 함수 종속 제거제3정규형(3NF): 2NF를 만족하고, 이.. 2025. 4. 10.
[네트워크] 비디오 스트리밍 원리와 DASH, P2P, CDN 소개 Peer-to-Peer (P2P) 네트워크P2P 네트워크에서는 중앙 서버 없이 각 피어가 직접 서로 통신한다. 피어는 다른 피어에게 서비스를 제공하고, 그 대가로 서비스를 받는다("give and take"). 피어 간 서비스는 주로 파일 공유나 스트리밍 형태로 이루어지며, 대표적 서비스는 BitTorrent, KanKan 등이 있다.P2P의 특징과 장점확장성(Scalability)새로운 피어의 참여로 인해 서비스 용량과 수요가 동시에 증가한다.피어는 간헐적으로(intermittently) 네트워크에 접속하며, 위치 및 IP가 변할 수 있다. P2P 아키텍처항상 켜져 있는 서버가 없음 (no always-on server)임의의 종단 시스템(end system)끼리 직접 통신함각 peer는 다른 peer.. 2025. 4. 10.