将闪存连接到发布/订阅或 amqp 服务器



我们有一个只与 php 后端通信的 flash 应用程序,它再次与 mysql 和 redis 通信。我们几乎没有异步任务,结果通过轮询传递到闪存客户端。对它的思考和研究使我看到了pub/sub和amqp。因此,我们的想法是将闪存直接连接到发布/订阅或消息队列服务器。我没有使用这个相关工具的实践经验。对我来说最重要的是知道是否有可能拥有这样的设置,这是安全的。

什么是安全的?

  • 服务器只会接收公共数据(如果泄露给其他用户也没有问题)
  • 服务器相当成熟,可以限制公共使用(无写入等)
  • 服务器将托管在专用计算机上(如有必要)

Redis 有 pub/sub,但我认为 Redis 不适合这样做。

RabbitMQ具有将交换限制为特定用户的功能。但是我不确定如何进行身份验证或如何将其绑定到现有会话?我也想知道 RabbitMQ 在很多短寿命通道上的扩展效果如何。

任何建议都非常感谢!

如果安全是指您可以在互联网上使用它,那么 AMQP 可能不是最佳选择,除非您将 MQ 代理作为 SSL 服务器运行。有关 RabbitMQ 和 SSL 的更多信息,请点击此处。我强烈推荐 RabbitMQ 网站,以获取有关 AMQP 各个方面的信息。

如果这对您来说太多了,那么也许像 0MQ 发布/订阅这样的更简单的协议会更好。它们没有安全层,但您可以在应用程序级别加密消息。0MQ网站上有一个关于安全性的常见问题解答。

与 Redis 不同,上述两种解决方案都是真正的消息队列解决方案。任何具有网络接口(包括 SQL Server)的数据库都可用于将粗略的消息队列系统组合在一起。我做的第一次是在 1997 年,但现在我不建议这样做了,因为 0MQ 和 RabbitMQ 可以免费使用。

如果使用 AMQP,则必须依靠 MQ 代理的安全性来防止中间人攻击,因为所有消息都通过代理。但是,如果您使用 0MQ,那么您将负责确保自己的应用程序安全。这至少要求在任何回复消息中使用包含令牌的加密消息,如果回复令牌不正确,您将忽略该消息。

如果你不介意采用java方式,你可以使用BlazeDS消息传递http://opensource.adobe.com/wiki/display/blazeds/BlazeDS

由于您已经有一个 php 后端,请查看此内容以了解一些 php 可能性。

这是另一篇关于此事的好文章:http://www.infoq.com/articles/blazedsjms1

干杯

最新更新