2014-01-18 7 views
3

합리적인 비용으로 릴레이 서버를 실행하는 데 사용할 수있는 서비스 (PaaS, 예 : Google App Engine 또는 Windows Azure)가 있습니까? 클라이언트 간의 피어 투 피어 "실시간"통신?수만 개의 동시 장기 네트워크 연결을 처리하는 서비스로서의 플랫폼

이 시스템은 필자의 경우 C, Android 및 iOS 응용 프로그램에 프로그래밍 된 제한된 리소스로 작은 홈 오토메이션 가젯간에 네트워크 트래픽을 소규모로 (소량) 릴레이하는 데 사용됩니다. 몇 년 내에 수만 개의 동시 연결이 필요합니다.

IaaS가 아니라 PaaS 솔루션을 찾고있는 이유는 가상 컴퓨터, OS 및 서버 응용 프로그램 유지 관리에 필요한 시간과 전문 지식을 최소화하려는 것입니다.

홈 오토메이션 가젯의 리소스 제약으로 인해 PubNub 같은 솔루션을 사용할 수 없습니다. 내 임베디드 C 코드에 대해 수천 바이트의 프로그램 플래시를 사용할 수 있으므로 사용 된 프로토콜은 원시 TCP 또는 UDP, HTTP 또는 WebSockets과 같이 매우 기본 적이어야합니다.

GAAP (Google App Engine)에서 "롱 폴링"을 사용하면 트래픽이 거의 전송되지 않아도 연결의 전체 기간 동안 요금을 청구하기 때문에 너무 비쌉니다. GAE는 소켓을 지원하지만 송신 소켓 만 지원하고 서버의 수신 소켓은 지원하지 않습니다. 어떻게 든이 한계를 극복 할 수 있습니까? 먼저 GAE에 UDP 패킷 전송 (사용자의 방화벽에 구멍을 뚫어 GAE에서 홈 오토메이션 가젯 또는 Android/iOS 앱으로 나가는 소켓을 다시 시작하도록 하시겠습니까?)

아니면 다른 가능한 해결책이 있습니까? 윈도우 Azure 또는 다른 PaaS를 제공의 PaaS를 측면?

어떤 조언 가능한 솔루션은 크게 감사합니다! 그것은 당신의 프로토콜의 요구와 아파치 Qpid/Proton 프로젝트가 일부 클라이언트 라이브러리가 맞는 것처럼

답변

1

AMQP 보인다, 자신의 C 코드를 서비스 측면에서 AMQP를 사용하기 때문에 Azure ServiceBus을 사용하여 문제를 테스트 할 수 있습니다. 귀하의 요구 사항을 충족시키지 못했을 경우, 귀하는 작업자 역할을 수행하고 거기에 AMQP 클라이언트 중 하나를 실행할 수 있습니다.

고려할 또 다른 옵션은 ZeroMQ입니다. 그들은 매우 간단한 클라이언트 API를 많이 가지고 있으며 Worker 역할에서 실행되는 릴레이 서비스를 빌드하는 것은 사소한 코드 일 것입니다. Java SampleC# Sample 이러한 샘플은 "inproc"전송을 사용하고 있으며이를 TCP로 전환하려고합니다.