2010-04-03 9 views
0

원격 스크립트를 실행하는 응용 프로그램을 만들고 싶습니다. 사용자는 스크립트 (probablely LUA 스크립트)를 작성한 다음 서버에 저장합니다. 그런 다음 스크립트를 실행하기 위해 API를 사용할 수 있습니다. 나는 API가 웹 서비스 일 수 있다고 생각했다. 그래서 제 질문은 다음과 같습니다원격 스크립트 실행 - 아키텍처

  • 내가 스크립트를 실행하는 고성능을 필요로한다. 그래서 제 첫 번째 선택은 LUA 스크립트였습니다. 누군가 다른 감정이 있습니까?

  • 왜냐하면 나는 webservice가 최선의 해결책이라고 생각했는데 높은 성능이 필요합니다. 어쩌면 사용자 요청을 보관하는 TCP/IP Windows 서비스를 만들 수 있습니다. 많은 사용자가 동시에 스크립트를 실행하게 될 것입니다. 그래서 동시성 문제가 생길 것입니다.

  • 내 스크립트는 데이터베이스에서 쿼리합니다. 나는 도쿄 내각 또는 도쿄 폭군을 사용할 것입니다. 나는 Tokio Tyrant가 내가 많은 요청을 할 수있는 유일한 해결책이라고 생각한다. 성능을 위해 연결 풀링을해야합니까? 어쨌든 webservices 요청간에 변수를 공유 할 수 있습니까?

  • webservice 또는 Windows 서비스를 만들기 위해 C++을 사용하려고 생각했습니다.

누군가이 질문에 도움을 줄 수 있습니까?

감사

답변

1
  • 루아는 LuaJIT 또는 유사한 것을 사용 특히, 스크립트 언어에 대한 매우 높은 성능이다.

  • 고성능을 말합니다. 얼마를 말하고 있습니까? POST를 통해 수신하는 스크립트를 실행하는 매우 간단한 웹 서비스가 있다고 가정하면, 아마도 HTTP 오버 헤드는 Lua 컴파일, 환경 설정 & 실행 시간과 비교할 때 비교적 작을 것입니다.

  • 데이터베이스 정보 아무 것도 말할 수 없습니다. 풀링을 할 수있는 많은 가능성이 있으며 이것은 또한 루아 스크립트를 어떻게 실행하는지에 달려 있습니다. 공통된 환경에서 실행되고 있습니까? 세션 당 하나? 요청 당 하나?

  • 루아는 꽤 잘 어울리기 때문에 C++은 루아를 호스트하는 좋은 선택입니다. 다른 좋은 언어 바인딩이 있지만.

하지만 샌드 박스 스크립트로 작업을 끝내지 않았다는 것을 명심하십시오. 사용자 제출 스크립트는 많은 메모리를 할당하거나 CPU를 호깅하는 것과 같이 고의적으로 또는 실수로 많은 다른 Bad Things (TM)를 수행 할 수 있습니다. 루아에서 (그리고 이것이 모든 것이 아니라, 많은 샌드 박스 환경에 해당한다고 생각합니다.) 문제의 인스턴스를 죽이는 것을 제외하고는 샌드 박스에서 코 루틴을 사용을 허용하지 않으면 악의적 인 코 루틴에서 벗어나서 할 수 있습니다. 더 똑똑한.