• Facebook
  • 트위터
  • 유튜브
  • 라인드인
  • RSS
  • 기술 문서
  • 비교
  • 블로그
  • 다운로드
  • 문의하기
다운로드
목차 표시/숨기기

캐시의 낙관적 잠금과 비관적 잠금

NCache 이 시스템은 낙관적 잠금과 비관적 잠금을 모두 포함하는 효율적인 분산 잠금 메커니즘을 제공하여 여러 클라이언트가 동시에 캐시 데이터에 접근하고 업데이트하는 환경에서 데이터 동기화 및 무결성을 보장합니다. 캐시 수준의 동시성 제어를 통해, NCache 캐시 클러스터 전체에서 읽기 및 쓰기 작업에 대한 원자성, 일관성 및 격리성을 유지하는 데 도움이 됩니다.

공유 캐시 리소스에 동시에 접근할 때는 잠금이 필수적입니다. 그렇지 않으면 병렬 작업으로 인해 경쟁 조건과 데이터 불일치가 발생할 수 있기 때문입니다. NCache 이 요구 사항은 애플리케이션이 배타적 잠금(비관적 잠금)을 획득하거나 버전 기반(낙관적 잠금) 충돌 감지에 의존할 수 있도록 함으로써 해결되며, 동일한 데이터에 대한 모든 업데이트에 대해 전체 캐시 클러스터에서 일관성을 보장합니다. 또한, NCache 이 API는 특정 캐시 데이터를 잠가서 단일 스레드 또는 애플리케이션만 업데이트하거나 읽을 수 있도록 합니다.

분산 잠금은 언제 사용해야 할까요?

문제 정책

두 명의 계좌 소유자가 하나의 은행 계좌를 사용한다고 가정해 보겠습니다. 계좌 잔액은 5000달러입니다. 첫 번째 사용자(User 1)는 계좌에서 2000달러를 인출하고, 두 번째 사용자(User 2)는 1000달러를 입금하려고 합니다. 이러한 조건 하에서, 인출 및 입금 후 계좌 잔액은 4000달러가 되어야 합니다(5000-2000=3000, 3000+1000=4000).

이제 두 사용자가 동시에 작업을 수행하고 애플리케이션이 동시 업데이트를 제대로 처리하지 못한다고 가정해 보겠습니다. 다음과 같은 상황이 발생할 수 있습니다.

  • 사용자 1이 계정 잔액을 확인했는데 $5000가 표시되었습니다. 그는 $2000를 인출하고 총 잔액은 $3000가 됩니다.

  • 사용자 2가 계정 잔액을 확인하면 $5000가 표시됩니다. 그는 $1000를 입금하고 총 잔액은 $6000가 됩니다.

다음 다이어그램은 시나리오를 시각적으로 보여줍니다.

공유 은행 계좌 시나리오에서 낙관적 잠금과 비관적 잠금이 불일치 업데이트를 방지하는 방법을 보여주는 그림입니다.

해법

이러한 공유 리소스 문제를 해결하기 위해, NCache 이 플랫폼은 동시성 요구 사항에 따라 적용할 수 있는 두 가지 잠금 방식을 제공합니다.

  • 첫 번째 접근 방식은 한 사용자가 계좌에서 작업을 수행하는 동안 해당 계좌를 독점적으로 잠급니다. 이 독점적 잠금이 유지되는 동안 다른 사용자는 동일한 계좌를 읽거나 업데이트할 수 없습니다. 사용자가 출금을 완료하고 잠금을 해제하면 다른 사용자가 안전하게 입금할 수 있습니다. 이 접근 방식은 동시 접근을 방지하고 엄격한 일관성을 보장합니다.

  • 두 번째 접근 방식은 여러 사용자가 동시에 은행 계좌에 접근할 수 있도록 합니다. 각 사용자는 계좌 정보를 읽고 조회할 수 있지만, 업데이트가 성공적으로 완료될 때마다 계좌 버전이 업데이트됩니다. 사용자가 잔액을 업데이트하려고 하면, 그 사이에 다른 업데이트가 발생하지 않았는지 확인하기 위해 버전이 검사됩니다. 버전이 변경된 경우, 업데이트 작업은 실패하고 사용자는 최신 잔액을 다시 가져온 후 재시도해야 합니다. 이 접근 방식은 데이터 일관성을 유지하면서 더 높은 동시 접속률을 허용합니다.

NCache 이 시스템은 비관적 잠금과 낙관적 잠금이라는 두 가지 잠금 메커니즘을 모두 제공합니다. 이에 대한 자세한 설명은 이후 섹션에서 확인할 수 있습니다.

낙관적 잠금 전략과 비관적 잠금 전략 비교

사용 가능한 잠금 장치에는 두 가지 유형이 있습니다. NCache:

  • 비관적 잠금(배타적 잠금)
    비관적 잠금은 다음을 사용합니다. LockHandle 잠금이 유지되는 동안 다른 클라이언트가 캐시 항목에 접근할 수 없도록 합니다.

  • 낙관적 잠금(캐시 항목 버전 관리)
    낙관적 잠금은 항목 버전 관리를 통해 동시성을 제어하는 ​​메커니즘입니다. 이 메커니즘을 사용하면 항목이 다른 사용자에 의해 사용 가능하게 유지되지만, 항목에 대한 업데이트가 성공적으로 완료될 때마다 해당 항목이 버전 번호가 증가합니다.

도 참조

.그물: Alachisoft.NCache.런타임.캐싱 네임 스페이스.
자바 : com.alachisoft.ncache.런타임.캐싱 네임 스페이스.
Node.js : 캐시 클래스입니다.
파이썬 : ncache.런타임.캐싱 기준 치수.

문의하기

전화

+1 214-619-2601   (미국)

+44 20 7993 8327   (UK)

 
이메일

sales@alachisoft.com

support@alachisoft.com

NCache
  • 판 비교
  • NCache 아키텍처
  • 벤치 마크
다운로드
가격
놀이터를 사용해보십시오

배포
  • 클라우드(SaaS 및 소프트웨어)
  • 온 프레미스
  • Kubernetes
  • 도커
기술 사용 사례
  • ASP.NET 세션
  • ASP.NET 코어 세션
  • 게시/구독 메시징
  • 실시간 ASP.NET SignalR
  • 사물의 인터넷 IOT ()
  • NoSQL 데이터베이스
  • 스트림 처리
  • 마이크로 서비스
리소스
  • 잡지 기사
  • 제XNUMX자 기사
  • 기사
  • 비디오
  • 백서
  • 쇼
  • 회담
  • 블로그
  • 기술 문서
고객 사례 연구
  • 환자 후기
  • 고객
고객 지원
  • 데모 예약
  • 포럼(Google 그룹스)
  • Tips
회사
  • Leadership
  • 파트너
  • ​뉴스
  • 이벤트
  • 채용 정보
문의하기

  • 영어중국어 (간체)프랑스어독일 사람이탈리아 사람일본제한국어포르투갈어스페인어

  • 문의하기
  •  
  • 사이트 맵
  •  
  • 이용 약관
  •  
  • 개인정보 처리방침
© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.
맨 위로