다른 처리 방법도 있습니다. 일관성을 지키면서 다른 서버에 있는 데이터에 액세스하는 방식이지요. 이 또한 동기식 분산 처리 방식에 속하며, 이 과정에서는 분산 락 기법이 동반됩니다.
분산 락 기법을 이용하여 원격지에 있는 데이터를 액세스하는 방식은 다음과 같습니다.
Player_Attack(player, monster) { lock(player) { player. --; otherServer.RemoteLock(monster); // ➊ m = otherServer.RemoteGet(monster. ); // ➋ m. -= damage; if (m. < 0) { player. .Add(gold, 30); otherServer.RemoteDelete(monster. ); // ➌ } else { otherServer.RemoteSet(m); // ➌ } otherServer.RemoteUnlock(m); // ➍ } }
➊ 몬스터 정보를 가진 서버 2에 “몬스터 정보를 액세스하기 위해서 분산 락을 걸겠다.”라고 요청하고 응답을 받습니다.
➋ 서버 2에서 몬스터 정보를 얻어 옵니다.
➌ 서버 2에 몬스터 정보를 업데이트합니다.
➍ 서버 2에 분산 락 해제를 요청하고 응답을 받습니다.