3

是否有一个平台即服务(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 方面的任何其他可能的解决方案?

非常感谢任何提示或可能的解决方案!

4

1 回答 1

1

AMQP似乎可以满足您的协议需求,并且 Apache Qpid/Proton项目有一些客户端库,它们的 C 代码可能满足您的需求。在服务方面,您可以使用Azure ServiceBus进行测试,因为它使用 AMQP。如果这不能满足您的需求,您可以托管一个辅助角色并在其中运行其中一个 AMQP 客户端。

另一个需要考虑的选项是 ZeroMQ。他们有很多非常简单的客户端 API,并且构建一个以 Worker 角色运行的中继服务将是微不足道的代码量。Java 示例 C# 示例这些示例使用“inproc”传输,我猜您想将其切换到 TCP。

于 2014-01-18T20:23:50.160 回答