더북(TheBook)

다른 처리 방법도 있습니다. 일관성을 지키면서 다른 서버에 있는 데이터에 액세스하는 방식이지요. 이 또한 동기식 분산 처리 방식에 속하며, 이 과정에서는 분산 락 기법이 동반됩니다.

분산 락 기법을 이용하여 원격지에 있는 데이터를 액세스하는 방식은 다음과 같습니다.

Player_Attack(player, monster)
{
  lock(player)
  {
      player.bullet--;
      otherServer.RemoteLock(monster);          // ➊
      m = otherServer.RemoteGet(monster.id);    // ➋
      m.hitPoint -= damage;
      if (m.hitPoint < 0)
      {
          player.item.Add(gold, 30);
          otherServer.RemoteDelete(monster.id); // ➌
      }
      else
      {
          otherServer.RemoteSet(m);             // ➌
      }
      otherServer.RemoteUnlock(m);              // ➍
  }
}

몬스터 정보를 가진 서버 2에 “몬스터 정보를 액세스하기 위해서 분산 락을 걸겠다.”라고 요청하고 응답을 받습니다.

서버 2에서 몬스터 정보를 얻어 옵니다.

서버 2에 몬스터 정보를 업데이트합니다.

서버 2에 분산 락 해제를 요청하고 응답을 받습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.