草庐IT

node.js - 带有 Websocket 的 Nodejs REST API

我必须应用程序:前端和后端。前端只是一张显示实时数据的map,例如map上的点和事件等。这将使用React和传单。后端只是一个接收带有地理数据的帖子的restapi。接收并保存数据后,websocket需要将此数据推送到前端map。对于后端部分,我将使用Node.js与Express和Socket.IO。我对数据库使用什么感到有点困惑。Redis可能最适合websocket连接,但mongo更适合保存geojson数据、照片等?或者我什至不应该为websockets使用数据库?在数据库中保存某些资源(如地理位置等)后,它不只是推送到websocket吗? 最

mongodb - 适用于 Google Reader 等应用的 NoSQL 架构

对于像GoogleReader(一对一副本)这样的应用程序,您会使用哪种NoSQL架构?我考虑了MongoDB、Cassandra、CouchDB、Redis、HBase和Riak。 最佳答案 简单的答案,使用您最熟悉的答案。更复杂的答案实际上在于Google阅读器可以做什么的细节。您可能需要的一项功能是多个索引。每个RSS条目都将有一个唯一的键、一个用户、一个ts、一个阅读标志和一些类别。在处理面向文档或键值数据库时,通常很容易获得键。但是您真正要运行的第一个查询是什么?按用户、ts、阅读列出。好吧,这将需要一个二级索引。AFAI

javascript - 如何避免 Node.js & MongoDB & Redis 堆栈中的狗桩效应?

当某些缓存值过期或由于某种原因将生成新的缓存并且我们在不存在缓存时有巨大的流量时,MongoDB和响应时间将承受沉重的负载显着增加。这通常称为“狗桩效应”。创建缓存后一切正常。我知道这是一个非常普遍的问题,适用于所有使用数据库和缓存系统的Web应用程序。在Node.js&MongoDB&Redis堆栈中,应该怎么做才能避免狗桩效应?最佳做法和常见错误是什么? 最佳答案 防止狗堆积的一种相当成熟的方法是保持“锁”(例如在Redis中)以防止缓存填充逻辑多次触发。第一次调用fetcher(对于给定的内容),(为它)获取锁并设置为过期(例

node.js - 用于 mongodb 查询的 redis 缓存层以提高性能

我有一个电子商务网站。我的产品目录在mongodb中,所有其他事务在mysql中。我计划使用express中间件,它将使用redis作为所有传出mongodb查询的缓存层。任何人都可以帮助我设计架构吗?我将非常感激。目前技术栈nodejs+mongodb+mysql 最佳答案 一般redis会很好的缓存数据。与其为每个请求访问主数据库,不如使用缓存技术,这同样取决于您更新缓存数据的频率。如果您错过了频繁更新缓存或每当主数据库发生更改时,就会出现严重的问题。您必须监听数据库更改并更新缓存,截至目前可能mongodb中没有监听器,因此您

C#。适用于大数据的可扩展高负载架构

我们在C#上构建了我们的“试点”,现在看来在6个月内我们将达到系统无法处理的用户和数据量。我们正试图弄清楚如何在C#/.net上构建可扩展的高负载架构,该架构也可以处理大数据。到目前为止我们得到的是thediagram我们需要什么获得有关我们解决方案的专家意见LoadBalancer通常用于.net的内容关于我们使用的数据库的任何建议(优点和缺点)。我们想在MongoDB和CassandraDB之间做出选择,但也许我们必须看看另一种解决方案我们需要添加什么工具。例如,我们正在考虑ZooKeeper更新:我们将为MongoDb使用多个服务器,为MSSQL使用2个集群oauth(承载)用于

node.js - 如何处理大量并发用户的插入/更新和计数器

我正在编写一个API,它在大多数时间会有中等流量,但在某些时候它会有很多并发用户。假设API应该能够在“突发模式”下每秒处理至少10000个请求。当API收到请求时需要做两件事(简化)。1)从数据库中获取一个计数器。2)如果计数器低于500->向数据库插入新行并增加计数器。如果计数器达到500,则不执行插入而返回响应。我的问题是:当我有这么多并发请求时,处理这种情况的最佳做法是什么?我在考虑如何确保永远不会插入超过500行。你会如何设计数据库?如何保证数据库并发?如何在不导致服务器/云爆炸的情况下处理如此多的并发用户?我真的不应该考虑哪些编程语言(主要与哪些网络服务器/语言可以处理如此

redis - Redis 与其他数据库(如 sql 或 mongodb)在内存或存储方面的区别?

Redis是一个持久保存在磁盘上的内存数据库。这意味着什么?据我所知,其他数据库也使用磁盘空间进行存储?如果没有,其他数据库存储在哪里? 最佳答案 Rediscon将他在内存中的内容保存在磁盘上。它的所有数据都在内存中,并定期将其刷新到磁盘上。这意味着您的所有数据都必须适合内存。视情况而定,这是一个限制(有限的空间)或一个机会(非常快)。 关于redis-Redis与其他数据库(如sql或mongodb)在内存或存储方面的区别?,我们在StackOverflow上找到一个类似的问题:

node.js - aws 内核正在杀死我的 Node 应用程序

问题:我正在执行我的mongoose查询测试,但内核因OutOfMemory原因终止了我的Node应用程序。流程场景:针对单个请求/GETREQUEST->READdocumentofuser(eg.schema)[Thisschemahasref:userschemawithitsfieldsone]->COMPILE/REARRANGE从mongodb读取的查询输出[这涉及过滤和循环data]根据客户端要求的响应格式。->更新此文档的一个字段并将其再次保存回mongoDB->更新REDIS->将响应[上面编译的响应]发送回请求的客户端**当100个并发客户执行相同操作时,上述操作失

node.js - 使用 Redis 和 MongoDB (HyperLogLog) 计算唯一值

我在MongoDB中有一个集合,其中包含一个示例文档,如下所示-{"_id":ObjectId("58114e5e43d6420b7db4e15c"),"browser":"Chrome","name":"hyades","country":"in","day":"16-10-21","ip":"0.0.0.0","class":"A123"}问题陈述我应该能够在获取不同数量的IP的同时对任何字段进行分组。聚合查询——[{$group:{_id:'$class',ip_arr:{$addToSet:'$ip'}}},{$project:{class:'$_id.class',ip:{$

node.js - 如何处理mqtt客户端收到的大量信息

我有mqtt客户端来接收如下主题和消息client.on('message',function(topic,message){//thisfunctionisexecutedevery2sletmsg=message.toString();processMessage(message);//thistakeslongtime})client.on将每1秒调用一次,这取决于另一个发布mqtt消息的mqtt客户端。processMessage()可能需要大约2秒来处理(I/O和数据库操作)如果我这样放任不管,就会出问题。你们能指导我正确处理这种情况的方法吗?例如使用MemeCache来快速