멀티 플레이어 게임을 개발 중이며 asp.net
에 쓰여진 서버가 있습니다. 게임 사용자는 서버에 요청을 보내 oponent를 찾고 전투에 참여합니다. 전투 요청에는 매개 변수가있을 수 있지만 아무 것도 가질 수 없으므로 (가장 많이 사용되는 시나리오로 추정 됨) 발신자는 이미 요청을 보낸 사용자 중 누구에게 연결되어 있어야 연결이 이루어질 수 있습니다.여러 사용자가 동시에 액세스 할 수있는 스레드로부터 안전한 컬렉션
대기중인 모든 요청을 스레드로부터 안전한 컬렉션에 저장하는 것이 좋습니다. 전투에 대한 일치가 매우 빨리 발견되므로 항상 많은 요소가 포함되지만 많은 스레드가 한 번에이 컬렉션에 액세스하려고합니다. N
요청마다 다른 컬렉션을 만드는 것이 좋습니다. N
의 최적 크기는 무엇입니까? 아니면 다른 아이디어일까요? 필자의 주요 쟁점은 현재 연결 수가 매우 큰 경우에도 서버 성능을 손상시키지 않고 신속하게 일치 항목을 찾는 것입니다.
UPD는
내가하지 매우 명확하게 내 문제를 설명한 것으로 보인다. 모든 전투 정보 - 참여하는 사용자, 전투 도중의 행동, 승자 등은 데이터베이스에 저장됩니다. 필요한 것은 전투 요청에 대한 처리입니다 (요청에는 보낸 사람 ID와 전투 필터 만 가능). 일반적으로 상대방은 거의 즉시 발견되므로 요청 데이터를 저장할 필요가 없습니다 (일치가 발견되면 제거해야하며 모든 전투 데이터는 데이터베이스에 저장됩니다). 그러나 많은 양의 데이터를 처리 할 준비가되어 있어야합니다. 동시에 요청.
데이터베이스를 사용해야합니다. – SLaks
@SLaks 일치하는 항목이 발견되면 몇 밀리 초 만에 요청을 데이터베이스에 저장해야합니까? 나는 단지 요청 - 발신자 ID와 전투 필터를 저장한다. 모든 batlle 정보는 물론 데이터베이스에 저장됩니다. –