hailey-it
hailey-IT
hailey-it
전체 방문자
오늘
어제
  • 전체보기 (29)
    • MSA (4)
    • Redis (2)
    • CS (4)
      • Nerwork (3)
      • Security (1)
    • JPA (1)
    • 대규모 스트림처리 (3)
    • Git (2)
    • Mac M1 (9)
      • Mac (4)
      • App (4)
    • Programming (4)
      • Android (2)
      • IntelliJ (1)
      • React (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hailey-it

hailey-IT

대규모 시스템 - 데이터 일관성 유지
대규모 스트림처리

대규모 시스템 - 데이터 일관성 유지

2024. 8. 23. 10:00

 

대규모 시스템에서는 데이터 일관성을 유지하는 게 중요함

이를 위해 분산 트랜잭션, 이벤트 소싱, CQRS등의

기법을 사용할 수 있음

 

분산 트랜잭션(Distributed Transaction)

- 여러 개의 독립된 시스템이나 데이터베이스에서

동시에 일어나는 트랜잭션을 일관되게 관리하는 방법

 

- 단일 트랜잭션이 여러 시스템에 걸쳐 발생할 때,

모든 시스템이 해당 트랜잭션을 성공적으로 완료하거나,

모든 시스템이 트랜잭션을 실패로 처리하도록 보장

이를 통해 데이터의 일관성을 유지할 수 있음

 

- 분산 트랜잭션이 필요한 이유는 

마이크로서비스 아키텍처에서 여러 서비스가

독립적으로 운영되기 때문

 

트랜잭션(Transaction)

- 데이터베이스의 상태를 변환하는 작업의 단위로 ACID 속성을 보장

 

원자성(Atomicity)

: 트랜잭션은 전부 성공하거나 전부 실패하여, 

부분적인 작업 수행이 없는 것을 보장

 

일관성(Consistency)

: 트랜잭션이 완료된 후에도

데이터베이스는 모든 무결성 제약 조건을 유지

 

격리성(Isolation)

: 동시에 실행되는 트랜잭션이 서로 간섭하지 않도록 보장

 

지속성(Durability)

: 트랜잭션이 성공적으로 완료된 후의 결과는

시스템 장애가 발생해도 영구적으로 유지됨

 

2PC(Two-Phase Commit)

- 분산 트랜잭션을 관리하는 프로토콜로, 

준비(Prepare) 단계와 커밋(Commit) 단계로 나누어 

트랜잭션을 처리

 

- 준비 단계(Prepare Phase)

: 각 참여 노드는 트랜잭션 준비 상태를 확인하고,

준비 완료를 마스터 노드에 알림

 

- 커밋 단계(Commit Phase)

: 마스터 노드는 모든 참여 노드가 준비되었음을 확인하고,

트랜잭션을 커밋하도록 지시

만약 준비가 완료되지 않은 노드가 있다면 트랜잭션을 롤백

 

사가 패턴(Saga Pattern)

- 트랜잭션을 여러 단계로 나누어 처리하고, 각 단계가 독립적으로 커밋됨

 

주문 생성 단계: 사용자가 주문 생성

결제 처리 단계: 결제 서비스가 주문 결제를 처리

재고 감소 단계: 재고 서비스가 주문된 상품의 재고를 감소시킴

 

각 단계가 성공적으로 완료되면 다음 단계로 넘어가고,

실패하면 이전 단계에서 수행된 작업을 취소

 

이벤트 소싱(Event Sourcing)

- 상태 변화를 이벤트로 기록하고,

해당 이벤트를 재생하여 현재 상태를 유지함

이를 통해 분산 트랜잭션의 일관성을 유지할 수 있음

 

분산 트랜잭션의 장점

- 데이터 일관성 보장

- 확장성

- 신뢰성

- 복구 가능성

 

분산 트랜잭션의 단점

- 복잡성 증가

- 성능 저하

- 네트워크 오버헤드

- 복구의 어려움

 

 

 

저작자표시 (새창열림)

'대규모 스트림처리' 카테고리의 다른 글

대규모 시스템 - 데이터베이스 최적화  (0) 2024.08.22
대규모 시스템 - TPS(Transaction Per Second)  (0) 2024.08.16
    '대규모 스트림처리' 카테고리의 다른 글
    • 대규모 시스템 - 데이터베이스 최적화
    • 대규모 시스템 - TPS(Transaction Per Second)
    hailey-it
    hailey-it

    티스토리툴바