我是实时应用程序开发的新手,正在尝试围绕那里的众多选择进行研究。我已经读了很多博客文章,笔记和文章,人们已经很好地分享了。然而,我的小脑子似乎还没有解决一个简单的问题。我以为其他许多人可能也有同样的问题,所以我不妨在此处签名并发布。开始:
我正在构建一个微型实时应用程序,它是异步聊天+另一个有趣的功能。我将选择归结为以下两个选项:
我相信我已掌握了开始学习和推广的基础知识。但是,我的问题(严重是n00b)是:
我希望这不是一个疯狂的问题,不会马上被解雇。希望有一些建设性的反馈意见,喜欢这个社区!
谢谢。
从结构上讲,这两种选择都与将数据存储在Oracle数据库服务器中以供另一个应用程序检索相同。
RabbitMQ和Redis解决方案都要求您的应用程序连接到处理数据通信的中间服务器。Redis最像Oracle,因为它可以简单地用作具有网络API的持久数据库。但是RabbitMQ有所不同,因为MQ Broker并不真正负责持久化数据。如果您配置正确并在发布消息时使用正确的选项,那么RabbitMQ实际上将为您保留数据,但您不能取出数据,除非作为正常消息排队过程的一部分。换句话说,RabbitMQ用于传递消息,并且仅提供持久性作为从网络问题或系统崩溃中恢复的一种方式。
我建议您使用RabbitMQ以及您已经熟悉的任何编程语言。由于LAMP中的M通常被解释为MySQL,这意味着您要么根本不使用MySQL,要么仅将其用于数据的长期存储,而不用于实时通信。
RabbitMQ网站上有大量有关使用AMQP构建应用程序的文档。我建议您在安装RabbitMQ之后,仔细阅读的文档rabbitmqctl,然后创建一个vhost要进行实验的方法。这样一来,无需重置所有内容即可轻松清理实验。我还建议仅使用主题交换,因为您可以通过在routing_key中使用通配符来模拟直接交换和扇出交换的行为。请记住,您只发布要交换的消息,并且只从队列接收消息。交换负责将消息的routing_key与队列的binding_key进行模式匹配,以确定哪些队列应接收消息的副本。值得学习整个AMQP模型,即使您仅打算将消息发送到一个与routing_key同名的队列。
rabbitmqctl
vhost
如果要在浏览器中构建客户端,并且要构建原型,则应该考虑立即使用XHR,然后再转到Kamaloka- js之类的东西,它是AMQP(AMQ协议)的纯Javascript实现,是用于与RabbitMQ消息代理进行通信的标准协议。换句话说,用您今天所了解的知识来构建它,然后在以后加快它在工具箱中具有长期前景的东西(AMQP)。