각종 스토리지를 통해 알아 보는 분산 시스템 개념

1️⃣ Apache Cassandra - 파티션 기반의 Wide Column 저장소 모델을 활용 - multi-master data replication - 높은 가용성(availability)과 low latency를 제공함 - 단일 장애 지점(single point of failure)이 없음 - 궁극적 일관성(eventual consistent) 데이터베이스 - 모든 업데이트는 궁극적으로 레플리카 노드에 도달함 - 궁극적 일관성으로 인해 임시적으로 노드마다 데이터가 다를 수 있음 - Consistent Hashing으로 데이터를 여러 노드에 분산함 - Murmur3Partitioner을 기본 파티셔너로 사용함 - 모든 노드가 마스터기 때문에 모든 노드가 Read/Write 요청을 수용할 수 있음 - 가십 프로토콜(gossip protocol)을 이용해 노드끼리 정보 업데이트 가능 - 멀티 마스터의 세계에서 Concurrent Update를 해결하기 위해 Reconcile하는 메커니즘이 필요함 - 카산드라는 Reconciliation 방법으로 Last-Write-Wins 모델을 사용함 2️⃣ MongoDB - 도큐먼트 기반 데이터베이스 - 레플리카 집합의 구성원이 모든 요청을 처리함 - 자동 페일오버 중 샤드가 이용 불가능한 상태 - 따라서 Strongly Consistent 데이터베이스 - 샤드 키 선택이 데이터베이스 성능에 영향을 미침 - Hashed Sharding and Ranges Sharding 지원 - 데이터 인접성 개선을 위해 'Zone'개념 사용 - 프라이머리 노드와 세컨더리 노드 개념 존재 - 프라이머리 노드가 작동하지 않을 때 적격의 세컨데리가 프라이머리가 될 수 있음 - Write 요청을 처리할 때 Majority 인지 개념을 사용함 3️⃣ Redis - 데이터베이스, 캐시, 메시지 브로커로 사용할 수 있는 오픈소스 데이터 스토어 - 가용성(availability)와 성능을 Consistency보다 더 선호함 - 마스터-슬레이브(master-slave) 아키텍처 사용 - 마스터 노드가 클라이언트의 Write 요청을 처리함 - Hashed Sharding and Ranges Sharding뿐만 아니라 여러가지 샤딩 메커니즘 지원 - Redis 클러스터의 모든 노드는 TCP 버스로 연결됨 - 가십 프로토콜(gossip protocol)을 이용해 노드끼리 정보 업데이트 가능 4️⃣ Kafka - 이벤트 Publish/Subscribe 가능 - 이벤트 스트림을 견고하고(durably) 신뢰할 수 있게(reliably) 저장 - 가용성(availability)과 높은 일관성을 제공 - ZooKeeper를 사용하여 파티션 위치와 같은 메타데이터를 저장함 - 모든 동기화된 레플리카가 Write을 받기 전까지 Write이 커밋되지 않은 것으로 간주 - 동기화된 레플리카 내 리더 일렉션 가능 👉 핵심 개념: multi-master, consistent hashing, gossip protocol, eventual consistency, SPOF, reconciliation(Last-Write-Wins, CRDTs 등등), strong consistency, hashed sharing, ranges sharing, primary<->secondary/master<->slave, majority acknowledgement, zoning, leader-election, pub/sub 📌 추가로 공부하면 좋은 개념 개인적으로 분산 시스템을 공부할 때 함께 알아두면 좋은 개념 몇 가지 소개합니다. - Quorum - Consensus Algorithm - Checksum - Linearizability - Write/Read Repair - Split Brain Issue - Load Balancing - Hot Spots - CAP Theorem 🪴 함께 읽으면 좋은 글: 데이터베이스 속을 들여다보자! 관련 자료 구조는? https://careerly.co.kr/comments/76441 데이터베이스를 고를 때 고려해야 하는 요소 https://careerly.co.kr/comments/84381 꼭 알아야 할 분산 시스템의 개념 영어 단어 https://careerly.co.kr/comments/82560

Fundamentals of Distributed Systems | Baeldung on Computer Science

Baeldung

Fundamentals of Distributed Systems | Baeldung on Computer Science

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2023년 6월 27일 오전 4:01

 • 

저장 71조회 5,779

댓글 0