서버 구성 요소가 완전히 erlang으로 작성된 기존 (게임) 프로젝트에 들어갈 예정입니다. 때로는이 시스템에서 데이터 조각을 얻는 것이 너무나 어려울 수 있습니다 (플레이어 56가 얼마나 많은 위젯을 소유하고 있는지 관심이 있습니다). 데이터를 소유 한 프로세스를 찾을 수 있다고 가정하면 해당 프로세스에 메시지를 전달하고 메시지를 다시 전달할 때까지 기다릴 수 있지만 여러 대의 시스템으로 확장되지 않고 응답 시간이 지연됩니다.Erlang ETS 테이블 대 메시지 전달 : 최적화 관련 문제?
저는이 게임에 존재하는 많은 작업을 여러 프로세스에서 자주 액세스하는 정보가 보호 된 ets 테이블에 저장되는 시스템으로 대체하는 것을 고려해 왔습니다. 테이블의 소유자는 아무것도하지 않고 업데이트 메시지를받습니다 (플레이어는 방금 5 개의 위젯을 사용했습니다). 그에 따라 테이블을 업데이트합니다. 모든 예외를 catch하고 다음 업데이트 메시지로 넘어갑니다. 플레이어가 거짓말 쟁이를 구입할 수있는 충분한 위젯을 가지고 있는지 알고 싶었던 모든 프로세스는 테이블을 들여다보기 만하면됩니다. (예, 위젯의 수를 줄이는 메시지가 버퍼에있을 수 있음을 이해합니다. 그러나이 문제는 통제하에 있습니다.)
내 질문에 대한 질문이 적고 요청이 많지 않습니다. 댓글. 나는 도움이되고 충분히 설명되거나 언급 된 어떤 것도 upvote 할 것이다.
이러한 구현의 단점은 무엇입니까? 나는 한 작가 - 다중 독자를 가질 때 볼 수있는 잠금 경합의 세부 사항, 여러 대의 컴퓨터에 배포 할 때 어떤 문제가 있는지, 특히 다음과 같은 사항에 관심이 있습니다. 이 전에.
잠금 경합 질문은 erlang의 ets 테이블 구현과 관련됩니다. 테이블을 읽을 수있는 2500 개의 프로세스와이 프로세스에 쓸 수있는 프로세스가 있다면 결국 독자와 작성자가 동일한 데이터를 참조하려고 할 때가 있습니다. 그러면 그 문제를 해결해야합니다. 나는 분명히 수동으로 데이터 잠금과 잠금 해제를 시작하지 않을 것입니다. 가능한 경우 데이터의 불변성을 고려해 볼 때 확실하지 않습니다. – Sniggerfardimungus