问答

apache – 实时应用程序newbie – Node.JS Redis或RabbitMQ – >客户端/服务器怎么样?

 来源    2018-10-19    1  

我是一个实时应用程序开发的新手,我正试图围绕着无数的选择.我已经阅读了许多博客文章,笔记和散文,人们已经很善于分享.然而,一个简单的问题在我的小脑里似乎没有得到回答.我认为其他一些人可能会有同样的问题,所以我也可以注册并在这里发布.开始:

我正在构建一个微小的实时应用程序,这是异步聊天另一个有趣的功能.我把我的选择弄到了以下两个选择:

> LAMP RabbitMQ
> Node.JS Redis Pub-Sub

我相信我得到了开始学习和构建的基础知识.但是,我的(严重的n00b)问题是:

>如何与最终用户通讯 – >客户端/服务器在这两个?会是简单的Javascript长/无限轮询吗?
>在两个中,哪一个可以更有效地从单个Slice(假设100-1000个用户)建立和管理?
>我应该使用jQuery在“老派”范例中构建一切,然后确定哪个堆栈可能更有意义?这样我就可以把产品作为一个原型,然后“优化”了.或者是在一个比另一个更多的只是优化? (我感觉如此,但我本人不是100%)

我希望这不是一个疯狂的问题,不会马上燃烧.会爱上一些建设性的反馈,爱这个社区!

谢谢.

在架构上,您的两个选择与将数据存储在Oracle数据库服务器中以供另一个应用程序检索相同.

RabbitMQ和Redis解决方案都需要您的应用程序连接到处理数据通信的中间服务器. Redis最像Oracle,因为它可以简单地用作具有网络API的持久数据库.但是RabbitMQ有一点不同,因为MQ代理不负责持续的数据.如果您正确配置并在发布消息时使用正确的选项,那么RabbitMQ实际上将为您保留数据,但除了作为正常消息队列过程的一部分外,您不能获取数据.换句话说,RabbitMQ用于传达消息,只提供持久性作为从网络问题或系统崩溃中恢复的一种方式.

我建议使用RabbitMQ以及您熟悉的任何编程语言.由于LAMP中的M通常被解释为MySQL,这意味着您根本不使用MySQL,或者仅将其用于数据的长期存储,而不是用于实时通信.

RabbitMQ网站有大量关于使用AMQP构建应用程序的文档.我建议您安装RabbitMQ后,您将阅读rabbitmqctl的文档,然后创建一个vhost来进行实验.这样,您可以轻松地清理实验,而无需重置所有内容.我还建议仅使用主题交换,因为您可以通过在routing_key中使用通配符来模拟直接和扇出交换的行为.
记住,您只发送消息到交换机,并且您只接收来自队列的消息.交换机负责将消息的routing_key与队列的binding_key进行模式匹配,以确定哪些队列应该接收到消息的副本.即使您只计划将消息发送到与route_key相同名称的一个队列,也是值得学习整个AMQP模型的.

如果您正在浏览器中构建客户端,并且想要构建一个原型,那么您应该考虑仅使用XHR,然后移动到像Kamaloka-js这样的一个纯粹的Javascript实现的AMQP(AMQ协议)是用于与RabbitMQ消息代理通信的标准协议.换句话说,使用你今天知道的内容来构建它,然后加快它在工具箱中长期存在的东西(AMQP).

node.js – redis会话无法在服务器上运行
问答我在我的node.js express app中使用redis进行会话.它在我的开发盒上工作正常,但在生产时,似乎redis会话没有被保存. 我没有看到任何类型的错误,除了我无法登录. Redis正在 ...
1
node.js – Redis缓存和Mongo的持久性体系结构
问答设置: 想象一下"twitter like"服务,用户提交一个帖子,然后由许多(数百,数千或更多)用户阅读. 我的问题是关于构建缓存和缓存的最佳方式.数据库以优化快速访问& ...
1
如何在Node.js中为您的服务器应用程序构建测试?
问答我开始向Node.js服务器应用程序添加测试,因为我们正在慢慢部署到生产环境中.我有一个可以请求测试的API. 我的问题是:你如何构建你的测试,这样它就不会成为一个快速迷失的大文件? 我为一个API路 ...
1
node.js – Redis和NodeJS – 连接异常
问答我正在使用Redis DB和NodeJS.偶尔我会遇到异常,我的服务器(NodeJS)崩溃只会重新启动. Error: Redis connection to localhost:6380 faile ...
1
javascript – 使用ExecJS从Rails应用程序调用Node.js脚本
问答我有一个需要运行节点脚本的rails应用程序.我想使用ExecJS gem是从rails应用程序运行js最干净的方法.但是,到目前为止,ExecJS使用起来非常令人沮丧. 这是我需要运行的脚本: // ...
1
node.js – Redis测试在传递后不会退出(使用jest)
问答我为项目实现了基本的缓存功能,并在测试期间遇到了问题. 我使用jest和redis-mock测试并且所有测试都通过了. 问题是当我导入导入redis文件的文件时. 测试文件不会退出. 例: index ...
1
在实时网站上使用Node.js或Ringojs是否安全?
问答正如标题中所述,我想知道使用实际版本的Node.js和Ringo.js之类的实际"omg"平台开发网站是否安全. 此外,我想知道他们是否支持cookie /会话以及他们如何处理多字 ...
1
apache – 将子域发送到node.js
问答我的工作在运行apache的ubuntu服务器(10.10)上运行了几个不同的内部Web应用程序.我正在开发另一个Web应用程序,并且正在认真考虑在定制的node.js Web服务器之上进行开发.我想 ...
1
node.js – Redis键空间事件未触发
问答我有两个redis客户端,在一个文件中我有一个简单的脚本设置并删除了Redis键: var redis = require("redis"); var client = redis ...
1
node.js – 如何在同一台服务器上运行多个StrongLoop LoopBack应用程序?
问答我目前在具有不同端口的单个服务器上运行两个StrongLoop LoopBack应用程序(Nodejs应用程序).这两个应用程序都是使用命令行中的slc lb项目和slc lb模型创建的. 是否可以在 ...
1
node.js – Redis命令获取Redis Cluster上的所有可用密钥?
问答我在用这个 redisManager.redisClient.keys('*example*', function (err, keys) { }) 但是它只从只有一个redis群集提供密钥.如何从所 ...
1
node.js – redis performance,将json对象存储为字符串
问答我需要保存一个用户模型,如: { "nickname": "alan", "email": ..., "password" ...
1
node.js – Redis – ECONNREFUSED.即使服务器正在运行
问答我已经阅读了有关ECONNREFUSED错误的stackoverflow上的所有其他线程但仍然无效. 目前我正在研究Ubuntu 12.04.1 LTS 对于测试,我有这个非常简单的代码: var r ...
1
聊天应用程序:node.js还是APE?
问答我想创建一个聊天应用程序,它将使用php / codeigniter来执行视图和用户界面.我一直在阅读很多关于stackoverflow的帖子,推荐使用node.js或socket.io.然而,我也遇 ...
1
node.js – Redis连接从close事件中消失
问答在我们的redis配置中,我们设置了超时:7秒 在node_redis我们处理redis连接就绪和结束事件 client.on("ready", function() { logg ...
1
node.js – redis.lpush一些项目
问答在我的node.js脚本中,我有一个字符串数组,我想将这些字符串LPUSH到Redis队列中.我试过了: var redis = require('redis').createClient(); re ...
Native IOS应用程序和node.js
问答是否可以使用node.js创建一个本地ios应用程序,任何人都有任何例子吗?::人们是downvoting你,因为这听起来像科幻小说,但事实上,他们应该检查出这个节点/目标c桥:https://git ...
2
node.js – redis slave的HAproxy
问答我们目前正在使用node_redis客户端访问redis.我需要在redis奴隶面前使用HAProxy,在我的情况下是3个.我安装了HAProxy并将其配置为负载均衡redis从站.但是当我尝试创建从 ...
1
javascript – Node.js – Redis教程
问答你如何使用node.js redis库,redis的核心概念是什么,以及所有redis函数做什么,例如. hset,hget等?我可以有一些例子.::How do you use the nodejs ...
1