분산시스템 3

Zookeeper Cli & java API 사용하기

Zookeeper Cli zookeeper 폴더 안 bin폴더를 찾아 아래 명령어로 우선 cli 실행한다. ./bin/zkCli.sh -server $host:$clientPort 우선 간단한 실습을 위해 로컬호스트로 띄웠다. Create Get Set ( Update) Delete Watch -m 로 level을 조정할 수 있다. persistent는 해당 노드 자신만, persistent_recursive는 해당 노드 + 자식 노드까지 알려준다. Java API Setting 우선 zookeeper 연결을 위해 build.gradle에 depedency를 추가한다. dependencies { implementation 'org.apache.zookeeper:zookeeper:3.7.2' } 클래스를 ..

Zookeeper 여러 기능 알아보기 및 설치

Zookeeper의 여러 기능들 Data model zookeeper는 파일 시스템처럼 '/'로 구분하여 경로를 표기하고 데이터를 저장한다. zookeeper는 중간 경로 예를들면 위의 이미지에서 app1이나 app2, root 도 데이터를 가질 수 있다. 그리고 자식 노드들의 데이터도 접근 가능하다. 그렇기에 수bytes ~ KB 이하로 유지하는 것이 좋다. 보통은 설정 정보나, 작은 메타데이터 정보 등의 빠른 동기화 용도 위주로 사용된다. Versioning Znode는 데이터나 ACL 변경할 때 versioning이 되며, version number를 갖고있다 client에게 응답할 때 이 버전 번호도 항상 같이 전달한다. ACL은 엑세스 제어 목록으로 read할 때는 연결된 모든 데이터를 가져오고..

분산 시스템 이해하기 - BASE 원칙, CAP, PACELC

분산 시스템 개요 데이터 엔지니어링하면 분산 시스템은 항상 나오는 주제이다. 그만큼 많은 소프트웨어에서 분산 시스템이 필요하다는 것인데, 그렇다면 분산 시스템이 필요한 이유는 무엇일까? 그것은 하드웨어 성능의 발전 속도로부터 나온다. '무어의 법칙'은 하드웨어 성능의 발전은 선형적이라는 것이다. 하지만 컴퓨터에서의 트래픽과 데이터는 기하 급수적으로 늘어났다. 이에 하드웨어를 scale-up이 아닌 scale-out 전략을 생각하게 된다. 상태를 공유하지 않으면 scale out이 쉽게 가능했지만 Database가 중요해지면서 대량의 데이터가 공유 가능해야했다. 따라서 Database를 중심으로 상태와 데이터가 공유 가능하면서 scale-out하여 많은 데이터와 트래픽이 처리 가능한 소프트웨어가 필요해졌다..