1

我正在创建一个要放入云中的应用程序。这个应用程序有一个主要功能。

它代表其他用户托管套接字 CLIENT 会话(想想 iPhone 的 Beejive IM,它为客户端托管 IM 会话以维护这些 IM 网络上的状态,允许客户端随意连接/断开连接,而不会中断 IM 网络连接)。

现在,我现在计划的方式是,一个“工作实例”可能只能处理有限数量的客户端会话(为了争论,假设为 50,000)。这些会话将是非常长期的工作任务。

我试图解决的问题是我有时需要对特定的客户端会话执行任务(例如:如果我需要断开客户端会话)。使用 Azure,我是否能够排队一个较小的任务,只有托管该特定客户端会话的实例才能出列?

现在我正在考虑将 GoGrid 作为我的提供商,我通过使用 Apache 的 Active Messaging Queue 软件解决了这个问题。我的 Web 应用程序将分配给特定实例 ID 的“断开连接”任务排入队列。因此,每个客户端会话都分配给特定的实例 ID。然后,该实例仅将分配给它的“断开连接”任务出列。

我想知道在 Azure 上做类似的事情是否可行,以及我通常会如何做。我喜欢不必设置许多不同的 VM 来扩展的想法,而只需部署一个包。此外,最好使用 Azure 的队列而不是集成第三方产品,例如 Apache ActiveMQ 甚至 MSMQ。

4

3 回答 3

1

在功能集、定价和许可条款最终确定之前,我会非常担心在 Azure 上构建生产应用程序。对于初学者,您甚至无法在它与例如 GoGrid 或 EC2 或 Mosso 之间进行成本比较。所以我不明白它怎么可能最终成为领跑者。此外,我们知道所有这些系统在成熟时都会出现故障。亚马逊的服务比其他任何服务都更广泛地使用,并且已经公开提供了很多年。恕我直言,选择 Azure 是他们稳定下来的痛苦的秘诀。

你考虑过亚马逊的简单排队服务吗?

于 2009-05-06T17:03:38.707 回答
0

我认为您绝对可以为此使用 Windows Azure。我的建议是为您正在跟踪的每个会话创建一个队列。然后将该会话的队列中的断开连接消息(例如)排入队列。处理该连接的工作实例应该是唯一一个轮询该队列的实例,因此它应该处理在该连接上执行任务。

于 2009-05-06T16:54:09.540 回答
0

关于客户端连接的应用程序托管套接字连接,我会仔细检查允许的内容,因为我认为 Azure 只允许建立 HTTP 和 HTTPS 连接。

于 2009-06-03T22:36:33.367 回答