Hazelcast 잠금 (예 : http://www.hazelcast.com/docs/1.9.4/manual/multi_html/ch02s07.html)은 Java 동시성 프리미티브와 동일한 방식으로 동작하지만 클러스터 전체에서 작동합니다. 이를 통해 로컬 프로세스의 스레드와 클러스터의 스레드를 동기화 할 수 있습니다. 그러나이 동작을 거부 할 수있는 방법
는 예상/허용 가능한 키 오브젝트 무엇인가? 예를 들어, 문자열을 사용하여 클러스터의 다른 노드에서이 잠금을 참조 할 수 있습니까? 아니면 어떤 종류의 분산 객체 여야합니까? 두 개의 다른 클러스터 멤버에서 호출 할 때 Hazelcast.getLock ("myLock") 호출은 동일한 분산 잠금을 참조합니까?
작업 부하가 여러 노드에 분산되는 분산 시스템에서 동일한 데이터에 대해 동시에 여러 요청을 처리하는 경합 조건을 처리하는 두 가지 방법은 일관된 해시 및 분산 잠금. 일관된 해싱은 한 세트의 데이터에 대해 작동하는 모든 요청이 동일한 작업자에게 보내지고 분산 된 잠금이 한 번에 한 세트의 데이터 세트에서 작동 할 수 있도록합니다. 내 질문은 어떤 접근 방식
여러 컴퓨터에서 작동하는 잠금 메커니즘에 대한 권장 사항을 찾고 있습니다. 제 경우에는 기본적으로 2 대의 기계에서 서비스를 시작하고 서비스 기계가 고장 나더라도 이중화를 보장하는 간단한 방법으로 다른 블록이 완료 될 때까지 한 블록을 갖기를 원합니다. Distributed Lock Service과 같은 줄을 정렬하지만 사람들이 .NET과 성공적으로 통합
내 응용 프로그램에서 사용자 지정 키 - 값 저장소를 데이터 지속성 계층으로 사용합니다. 이 키 - 값 저장소는 사내에서 개발되고 작동 할 몇 가지 API가 있지만 트랜잭션 관리 또는 잠금 (특히 분산 잠금)에 대해서는 제공하지 않습니다. 이제이 키 - 값 저장소의 사용자는 이러한 잠금/트랜잭션 관리 시스템을 개발해야합니다. 분산 된 잠금을 구현하는 방법을
각 스레드가 키 세트를 잠그고 자하는 클러스터 된 프로그램이 있습니다. 내가 가장 간단한 솔루션을 사용하여 hazelcast을 알 수있는 바와 같이 : private void lock(SortedSet<String> objects) {
try {
IMap<String, String> lockMap = getLockMap();
다음 상황을 고려하십시오. 하위 엔터티 A.B를 만들려면 엔터티 A에 대한 업데이트 요청이 있습니다. A에 많은 B가있을 수 있습니다. 각 B에는 고유 한 이메일 주소가 있습니다. 엔티티 A는 공유 엔티티이며 동일한 요청이 여러 서버에서 병렬로 발생할 수 있습니다 (확장 가능 마이크로 서비스). A.B를 만들려면 B가 A의 하위 엔티티로 존재하지 않는지 확