Tag: 架构

使用AWS lambda实现推送通知

我指的是图 在这种情况下,NodeJS用作运行时间,AWS Lambda用作事件通知程序(更新来自其他lambda或DB)。 我的挑战是,“用户浏览器”也可以是移动客户端。 “API”应该起到一种服务的作用,允许客户(移动或networking)订阅,取消订阅或发布数据,没有别的。 lambda可以作为具有“推送事件通知”function的API直接客户端吗? 有没有解决scheme,样本工作/源代码可以用作POC? 接下来的问题是,自从它变成有状态(需要内存来记住客户端连接的状态),我怎么能扩展这样的架构呢? 或者,它有可能是坚持客户端连接数据库(使用框架如websocket或socket.io)?

运行两个MongoDB实例

我正在使用MERN堆栈开发一个高度I / O密集型应用程序(基于可用性的select)。 该应用程序预计将获得2000个并发用户。 我想知道使用MongoDB的两个实例是明智的,一个在RAM上(在内存中),另一个在硬盘上。 一个用来存储可用座位的RAM。 而硬盘驱动器则定期备份数据。 但同时我知道,如果服务器崩溃我的MongoDB数据在RAM上丢失。 任何人都可以引导我吗? 我使用的是Socket IO而不是AJAX …

有没有更好的方法来处理Node.js / Expressjs中的嵌套callback?

我使用Node.js和Expressjs作为服务器端编码,MongoDB作为后端。 我是所有这些技术的新手。 我需要根据请求做一个动作列表。 例如在用户pipe理中 检查用户已经注册 如果注册重新发送激活电子邮件 如果没有注册,则从另一个表中获取userId,这将维护用户,资产等的ID。[我知道MongoDB提供独特的_id; 但我需要有一个唯一的整数ID为userId] 创build用户 发送成功或失败的回应。 为了实现这个我写了下面的代码: exports.register = function(req,res,state,_this,callback) { switch(state) { case 1: //check user already registered or not _this.checkUser(req, res, ( state + 1 ), _this, _this.register, callback); break; case 2: //Already registered user so resend the activation email _this.resendEmail(req, res, 200, _this, _this.register, callback); break; case 3: […]

如何用微服务架构devise一个sails.js项目?

我从这里了解到微服务 现在,我想在我的下一个sails.js项目中使用微服务架构。 我能想到的一个方法是: 打破我的一个sails.js应用程序到多个小sails.js子项目/存储库。 在一个子项目中有一个控制器模型。 例如,如果我们考虑简单的电子商务应用程序与实体说用户,产品,订单等,那么将分别为每个他们与sails.js模型控制器分别sails.js存储库。 然后这个单一的子库会从我的一个微服务。 每个子存储库显然都有自己的configuration。 这些微服务将使用一些HTTP节点模块相互通信。 然后编写我自己的API网关在node.js中进行路由,这将负责根据来自客户端的请求从这些子库调用方法/ web服务。 这是最好的方法吗?还是有其他的方法来devise你的项目使用微服务架构? 用sail.js实现服务器间通讯,API网关的最佳方式是什么? 如果用上面提到的方法devise的一个微服务变得更大了,如果我必须把它拆分成2,sails.js模型应该如何改变?

在Node.js中,如何以编程方式从一个redis数据库中检索许多散列值,并使用一组作为索引

所以我在我的redis数据库中为每个用户都有一大堆字段,我希望能够检索所有logging并显示它们。 我这样做的方式是存储一组所有userids,当我想要所有的logging,我recursion地迭代设置抓住他们的logging使用集中的userids,并将它们添加到一个全局数组,然后最后返回这个全局数组。 无论如何,我不是特别喜欢这种方法,并希望听到一些替代scheme的build议,我觉得必须有更好的function在node.js或redis这个问题。 也许有一种方法可以完全避免使用这个设置,但是四处看看我什么都看不到。 这是我的psuedoish(相当完整的)node.js代码的一个例子,注意set的大小不是问题,因为它很less会大于15。 寄存器function: var register = function(username, passwordhash, email){ // Get new ID by incrementing idcounter redis.incr('db:users:idcounter', function(err, userid){ // Setup user hash with user information, using new userid as key redis.hmset('db:user:'+userid, { 'username':username, 'passwordhash':passwordhash, 'email':email },function(err, reply){ // Add userid to complete list of all users redis.sadd('db:users:all', userid); } }); }); […]

如何在服务器上build立推送通知

简要说明 : 好吧,因为很多天我一直在寻找这个问题的答案,但似乎有答案,“如何创build一个推送通知服务器”,像问题。 我正在使用node.js,使用sock.js“创build”一个推送通知服务器非常容易(我听说socket.io与sock.js相比并不好)。 没问题,直到这里。 但是我想要的是如何build模这样的服务器。 详情 : 好的,假设我有一个聊天服务的应用程序(只是一个例子,实际的东西很大,你可能已经猜到了)。 一个人在房间里发送消息,房间里的所有人都会收到通知。 但是我想要的是一个“有状态的”聊天 – 也就是说,我想将这些消息存储在数据存储中。 麻烦来了。 将信息存储在数据库中,稍后告诉所有人:“嗨,这是给你的信息”。 当我们只需要应用程序的一部分的实时活动时,这似乎很容易。 整个应用程序基于实时通信时该怎么办? 除此之外,我还想要一个RESTful API。 我的解决scheme(我不是很高兴) 我想做的是这样的:(当然在服务器端) Data Store || Data Layer (which talks to data store) || —————— | | Real-Time Server Restful server 在这里,实时服务器监听数据层发布的有趣事件。 每当有趣的事情发生,服务器通知客户端。 但是,哪个客户? – 这是我的方法的问题 希望你能帮上忙。 🙂 更新 : 我想我忘了强调我的问题的一个重要部分。 如何实施pub-sub系统? (注意:我不想要实际的代码,我会自己pipe理;只是如何去做这个工作就是我需要帮助的地方)。 问题是,在编写代码的时候我感到非常惊讶 – 怎么做(我的困惑从这个问题本身是非常明显的)。 请提供一些参考文献或有关如何开始这件事的一些build议?

网页游戏架构

我正在JS(打字稿)基于Web的游戏,与node.js服务器和AJAX。 我对基于游戏的架构知之甚less,随着游戏的发展,它变得越来越复杂,使我想到用适当的架构重build它。 我应该阅读关于架构的图书/书籍,知道在客户端和服务器端具有强大逻辑的基于networking的游戏需要一些具体的知识。 感谢您的帮助

重复性工作订单系统的体系结构

我希望得到关于devise一个必须支持反复工作的工作订单系统的build议。 例如,pipe理员需要设置一个工单,以每6个月为单位重复一次。 我使用的NodeJS作为服务器,一个noSQL数据库(couchDB)的存储和elasticsearch作为search引擎。 这是我第一次尝试在文档结构上支持这个function: Base Workorder { _id: 1 … Unrelated fields "recurInValue" : 6, "recurInUnit" : "months" "lastRecurredOn": 1368914552527, "numOcurrences": 1, "numTimesToRepeat": null, "stopOn" : 1384920941195, "createdAt" 1364936177618 } Occurrence Workorder { _id: 2 … Unrelated fields "recurFrom" : 1 } Occurrence Workorder { _id: 3 … Unrelated fields "recurFrom" : 1 } 我目前的CRUD计划是: […]

维护一个API Rest的多个版本

我有一个快速APIrest,这是由iOS客户端使用。 有时我必须对某些端点进行更改(重大更改),我将发布一个新的iOS应用程序,但如果客户端正在运行应用程序,并且我部署了新的后端版本,则可能不会发生所有用户都更新客户端事件。 如何维护后端的多个版本? 在代码中没有复杂的规则的情况下,做什么是一个好方法 如果我执行不同的多个实例的基础和响应每个客户端与正确的版本,现在处理数据库? 如何@MikeBrant先生我会减less范围 我在用着 节点 performance Postgres的 我没有使用像sailjs或loopback的框架

全球帮手function和导出function

我写了一个node.js模块,它有一个main函数和两个helper函数,我只导出了main函数,我的问题是:可以保持两个helpers像全局函数还是我可以find更好的方法? function myFirstHelper(args) { // … return result; } function mySecondHelper(args) { // … return result; } module.exports = function main(args) { // … return result; };