2014-12-26 2 views
1

나는 효과적으로 클라이언트가 TCP 소켓을 통해 연결하고 데이터를 보내고받을 수있는 Windows 서비스를 가지고있다. 이것을 상당히 빨리 할 수 ​​있어야합니다..net 서비스?

서비스는 현재 Windows 서버에서 실행되며, 알고있는 각 "방"에 대한 스레드를 생성합니다. TCP 소켓을 통해 들어오는 각 요청은 해당 방이 들어있는 방을 파싱하고 모든 요청은 해당 방을 실행하는 스레드로 전달됩니다.

서버 측 조각이 요청을 처리 한 다음 동일한 TCP 소켓을 통해 응답을 다시 보냅니다.

확장 성 및 관리 용이성을 위해 Azure로 이동하는 것에 대해 궁금합니다. 그러나 나는 이것을하기 위해 어떤 서비스를보아야하는지 잘 모르겠습니다. 아무도 권고 사항이 있습니까?

현재 Amazon EC2 인스턴스에서 실행 중이며 RDS 데이터베이스 백엔드와 일부 비트 조각은 S3을 사용합니다.

푸른 하늘에 거의 무제한으로 액세스 할 수있는 사람들과 거의 새로운 관계가 없기 때문에 하늘빛으로 이사를 찾고 있습니다.

+0

스테이트 풀 서비스와 비슷하게 들립니다. 이는 실행되는 위치에 상관없이 확장, 배치 및 운영된다는 것을 의미합니다. – usr

답변

1

일반적으로 Azure에 선택할 수있는 서비스가 두 가지 있습니다 (가상 컴퓨터를 세는 경우 세 개이지만 다른 두 개에 비해 확장하기가 어렵습니다). 첫 번째는 Azure Worker Roles이며 클라우드 서비스의 일부입니다. Azure의 초기 초기부터 존재하며 Windows Services와 유사한 빌드입니다. 웹 사이트 서비스에는 PowerShell 또는 Windows CMD와 같은 여러 유형의 스크립트를 실행할 수있는 Azure WebJobs이 약간 있습니다. 이 서비스를 사용하면 요청시, 지속적으로 (시나리오에서 선호하는 선택 사항이어야 함) 또는 일정에 따라 프로그램을 실행할 수 있습니다.

시나리오에서는 작업자 역할을 맡을 것입니다. 이는 Windows 서비스와 매우 유사합니다 (즉, 코드 기반을 재 작성하지 않아도 됨) 많은 인스턴스로 쉽게 확장됩니다. 그럼에도 불구하고, 특히 서비스를 확장하는 데있어 좋은 클라우드 패턴을 염두에 두어야합니다. 클라우드 서비스와 근로자 역할이 생각하는 것보다 다른 방식으로 행동하는 데는 몇 가지 장애물이 있습니다.

+0

내 응용 프로그램은 어느 정도 수준의 상태를 유지해야하므로 작업자 역할은 분명히 내가 뭘보고 있는지 알 수 있습니다. 내가 생각하고있는 것은 세 명의 작업자가 있다는 것입니다 ... Head Worker - 모든 클라이언트의 TCP 연결을 허용하거나, 로그인 요청을 처리하거나, 기본 작업을 수행합니다. 지도 작업자 - 각지도에 대한 게임 논리를 실행합니다. DB 작업자 - 내장 된 작업자 역할 통신을 사용하여 헤드/맵 작업자로부터 TCP 통신을 수신합니다. JSON을 보내고받는 모든 DB의 읽기/쓰기를 허용합니다. 직원 역할에 적합한 디자인이라고 생각하십니까? – willthiswork89