当前位置: 首页 > 面试题库 >

实时应用新手-Node.JS + Redis或RabbitMQ->客户端/服务器如何?

袁奇文
2023-03-14
问题内容

我是实时应用程序开发的新手,正在尝试围绕那里的众多选择进行研究。我已经读了很多博客文章,笔记和文章,人们已经很好地分享了。然而,我的小脑子似乎还没有解决一个简单的问题。我以为其他许多人可能也有同样的问题,所以我不妨在此处签名并发布。开始:

我正在构建一个微型实时应用程序,它是异步聊天+另一个有趣的功能。我将选择归结为以下两个选项:

  1. 灯泡+ RabbitMQ
  2. Node.JS + Redis + Pub-Sub

我相信我已掌握了开始学习和推广的基础知识。但是,我的问题(严重是n00b)是:

  • 在这两个方面,我如何与最终用户->客户端与服务器进行通信?那将是简单的Javascript长/无限轮询吗?
  • 在这两个中,从单个Slice(假设有100-1,000个用户)进行构建和管理,哪个更有效?
  • 我是否应该在“老派”范例中使用jQuery构建所有内容,然后确定哪个堆栈更有意义?这样我就可以将产品充实为原型,然后对其进行“优化”。还是在编写中不仅仅是优化?(我是这样,但我个人并不是100%)

我希望这不是一个疯狂的问题,不会马上被解雇。希望有一些建设性的反馈意见,喜欢这个社区!

谢谢。


问题答案:

从结构上讲,这两种选择都与将数据存储在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同名的队列。

如果要在浏览器中构建客户端,并且要构建原型,则应该考虑立即使用XHR,然后再转到Kamaloka-
js之类的东西,它是AMQP(AMQ协议)的纯Javascript实现,是用于与RabbitMQ消息代理进行通信的标准协议。换句话说,用您今天所了解的知识来构建它,然后在以后加快它在工具箱中具有长期前景的东西(AMQP)。



 类似资料:
  • 问题内容: 我有一个socket.io服务器正在运行,并且有一个带有socket.io.js客户端的匹配网页。一切正常。 但是,我想知道是否有可能在另一台机器上运行一个单独的node.js应用程序,该应用程序充当客户端并连接到上述的socket.io服务器? 问题答案: 使用Socket.IO-client应该可以做到这一点:https : //github.com/LearnBoost/sock

  • 本文向大家介绍php socket客户端及服务器端应用实例,包括了php socket客户端及服务器端应用实例的使用技巧和注意事项,需要的朋友参考一下 经常有朋友会对php的socket应用充满疑惑,本文就以实例代码作一讲解,希望能对初学php的朋友起到一点帮助作用 具体代码如下: 1.服务器端代码: 2.客户端代码: 注意事项:服务器端请用CLI模式运行,cgi模式会超时,这是新手常喜欢犯的错误

  • 问题内容: 好的,我觉得我缺少一些关键的信息。 在本地,我有1个主Redis服务器和1个从Redis服务器运行在不同的端口上 http://redis.io/topics/sentinel 我也有3个哨兵,他们似乎彼此了解,并按预期工作。 现在,我有大量的Java代码指向我的主Redis服务器所在的127.0.0.1:6379。 如果我撤下主服务器,哨兵将按预期的方式将奴隶提升为主服务器,因此现在

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • 在调用writeAndFlush()之后,我不知道如何从服务器检索响应;我该怎么办? 我也使用Netty 4.0.18.final

  • 我正在尝试使用HTTP请求/响应用Java编写一个简单的客户机-服务器应用程序。我想客户端是一个桌面程序发送(张贴)请求到服务器。该服务器是一个网页,将被托管在Apache Tomcat服务器上。服务器必须能够读取信息并将其显示在浏览器上,并且必须能够用状态代码200响应客户端。我正在使用eclipse和Apache tomcat服务器。到目前为止,我已经尝试了各种资源,但我所能找到的是一个可以从