是否存在平台即服务(PaaS,例如Google App Engine或Windows Azure),以合理的成本运行服务器以在客户端之间转发点对点“实时”通信?
在我的情况下,该系统将用于向嵌入式C中编程的有限资源的小型家庭自动化小工具中继(少量)网络流量,以及Android和iOS应用程序。几年后,我预计会有数万个同时连接。
我正在寻找PaaS解决方案而不是IaaS的原因是我希望尽量减少虚拟计算机,操作系统和服务器应用程序维护所需的时间和专业知识。
由于家庭自动化小工具的资源限制,无法使用PubNub之类的解决方案。我的嵌入式C代码有几千字节的可用程序闪存,因此使用的协议必须非常基本(例如原始TCP或UDP,HTTP或WebSockets)。
对Google App Engine(GAE)使用“长轮询”会过于昂贵,因为即使几乎没有流量传输,它们也会在整个连接期间收费。 GAE支持套接字,但只支持传出套接字,而不支持服务器上的侦听套接字。是否有可能以某种方式解决这个限制,例如:首先向GAE发送一个UDP数据包(在用户的防火墙上打一个洞,然后让GAE启动一个传出套接字回到家庭自动化小工具或Android / iOS应用程序?
或者您是否看到使用Windows Azure或其他PaaS提供商的PaaS方面的任何其他可能的解决方案?
非常感谢任何提示或可能的解决方案!
答案 0 :(得分:1)
AMQP似乎它符合您的协议需求,而Apache Qpid/Proton项目有一些客户端库,它们的C代码可能满足您的需求。在服务方面,您可以使用Azure ServiceBus来测试,因为它说的是AMQP。如果这不符合您的需求,您可以托管一个辅助角色并在那里运行一个AMQP客户端。
另一个需要考虑的选择是ZeroMQ。他们有很多非常简单的客户端API,并且构建一个以Worker角色运行的中继服务将是一个微不足道的代码量。 Java Sample C# Sample这些示例正在使用“inproc”传输,我猜你想将其切换为TCP。