Tag: 体系结构

postgres中的大量数据库 – 架构最佳实践

我们在多租户nodejs中使用postgres进行设置。 每个客户端都有一个单独的数据库(和一个单独的节点进程)。 使用node-postgres模块为每个租户实施连接池。 由于数据库数量越来越多,我们很快就达到了postgres的max_connections限制。 无限增加max_connections不是一个选项(由于连接开销)。 大量数据库的体系结构是否应该改变? 任何指针将不胜感激。

如何处理富域模型的持久性

我正在重新devise我的NodeJS应用程序,因为我想使用Rich Domain Model概念。 目前我正在使用贫血域模型,这不是扩展好..我只是看到'如果'无处不在大声笑。 我已经阅读了一堆博客post和DDD相关的博客,但有一些我根本无法理解…我们如何正确处理持久性。 首先,我想描述我已经定义的图层和目的: 持久性模型 定义表模型。 定义表名,列,键和关系 我使用Sequelize作为ORM,所以用Sequelize定义的模型被认为是我的持久性模型 领域模型 实体和行为。 与作为业务域一部分创build的抽象相对应的对象 我已经创build了几个类,这里​​最好的事情是,我可以从层次结构中获益,解决所有问题(没有ifs的负载)。 数据访问对象(DAO) 负责数据pipe理,并将持久性模型条目转换为域模型的实体。 所有与持久相关的活动都属于这一层 就我而言,DAO在持久性模型上创build的Sequelize模型上工作,但是,我正在序列化基于数据库交互的不同对象的数据库交互的属性。 例如:如果我有一个名为'UserType'的列包含两个值[ADMIN,USER]的表,当我select这个表上的条目时,我会根据用户types序列化返回,所以一个用户types: ADMIN将是AdminUser类的一个实例,其中types为USER的用户将只是一个DefaultUser … 服务层 负责所有通用业务逻辑,例如不属于任何域对象行为的实用程序和其他服务 客户端层 任何使用对象的消费者类,负责触发持久性 现在,当我实现客户端层时,混乱开始了… 比方说,我正在实施一个新的REST API: POST: …/api/CreateOrderForUser/ { items: [{ productId: 1, quantity: 4 },{ productId: 3, quantity: 2 }] } 在我的处理函数,我会有这样的事情: function(oReq){ var oRequestBody = oReq.body; var oCurrentUser = oReq.user; //This […]

节点JS环回模型用例

我来自模型和控制器范例,其中模型处理数据库和控制器有业务逻辑服务于REST API。 现在,我正在寻找一个Loopback(基于Node JS的框架)来做它的新项目。 但是,它只是做所有types的东西的模型。 我无法理解如何将服务层和控制器层合并到模型中。 这听起来有点令人困惑。 如果任何一个人可以为使用Loopbackdevise系统提供正确的方向。 这将是非常有益的。

NodeJS的应用服务模型

是否有任何类似于(或接近)的NodeJS的类似扭曲的框架: 由服务组成的Application对象,并存储一些全局可访问的数据 一个Service对象,可插入到Application并可以select包装其他服务 某种依赖控制? 一些类似cron的任务跑步者? 通过使用Application.start()一种forms,可以初始化所有的服务:比如webserver服务,API端点,数据库连接等。

跟踪基于Node.js的应用程序体系结构的咨询

我试图解决基于node.js的应用程序体系结构问题。 我有一些想法,但我想知道你的想法。 好吧,我的应用程序将存储来自客户网站的活动,这些活动将由客户定义,例如。 login网站,点击产品,点击类别菜单等。这些事件将传递到我的应用程序,然后,我将活动展示给客户仪表板进行分析或用于其他目的。 首先,我想通过ajax从网站发送请求到我的服务器,并parsing我的node.js服务器上的数据后,通过socket.io发送数据到仪表板的帐户。 用户将在“飞行中”的仪表板上看到他网站上的每个事件。 你觉得这个概念好吗? 每个Ajax请求都不会太昂贵吗? 也许我应该考虑另一种方式发送数据到我的服务器?

Node JS与Symfony 2 for SPA

我对Symfony 2和Node JS都没有什么经验,我必须决定哪个工具对单页面应用程序更好。 据我所知,SPA在客户端(UI) – 服务器(API)架构上工作,所以NodeJS似乎是一个更好的select(更快,处理事件驱动的编程)。 但另一方面,为了充分支持pipe理员等一些CMSfunction,Symfony 2似乎更加成熟。 我想问问经验丰富的开发人员,当我要开发一个具有许多“pipe理”function的强大网站时,我应该select哪种技术用于SPA架构。 另外UI将被写入angularJS。 感谢build设性的意见。 编辑 我们也可以用另一种方式来理解我的问题:“Symfony2可以作为一个API,而不是整个后端? 由于路由已经写在angularJS中,Symfony 2的路由似乎是无用的。

队列与非阻塞I / O

所以,我们正在devise一个新的微服务架构。 内部沟通是最大的挑战之一。 对于需要响应的通信,我们使用REST API。 但对于只想传递信息的服务,这个API处理是不必要的开销。 一种方法是使用队列。 service1将信息推入队列,service2可以从那里消耗。 因此,service1不必等待(不像API调用)。 (如果在处理信息时有任何错误,service2可以通过callbackURL通知service1,或者以其他方式通知;这点不是问题[1]) 现在有了Queue,有两个选项,一个是RabbitMQ 。 另一个是AWS SQS 。 有了RabbitMQ,我不得不担心服务器设置和一切(可以完成,但是要避免它)。 所以在SQS的POC之后,这似乎是一个不错的select,但SQS在内部使用Rest API与AWS服务器进行通信,在这两个时间点(service1在推送时,service2在消费时)都会有开销。 所以现在我想为什么不在NodeJS中做,service1将打到service2的信息。 Service2将立即作出回应,确认它已收到信息,如果有任何错误[1]。 现在我可以总结的优点/缺点是 – 的RabbitMQ 易于实施 如果接收方不可用,发送方不必担心重试。 服务器设置成本+维护(+调整) SQS 最容易实施 价钱 对消息进行持续轮询 在推/收上的开销 非阻塞API 没有第三个媒体需要沟通 Service1必须pipe理重试机制 相对于SQS,更less的开销 信息将在内存中处理 所以到了某种程度,我的问题是,使用非阻塞API是否是个好主意? 或者在制度可扩展性方面哪一个更好。 编辑 – 像PubNub或Pusher的PubSub提供程序可以用来代替队列吗?

NodeJS如何扩展企业应用程序?

假设我有一个企业Java应用程序,基本上做到以下几点: 收集用户input,查询后端数据库(可能是多个),运行一些algorithm(比如说在内存中计算查询的数据集以产生一些统计数据等),然后返回一些html页面中的数据。 我的问题是:如果应用程序的瓶颈在数据库查询上,NodeJS如何在这种情况下帮助我,因为在呈现页面之前,我仍然需要执行所有这些post-dbalgorithm。 应用程序架构如何看起来像?

backbone.js + node.js – express.js

我正在学习构build单页应用程序(SPA)所需的所有技术。 作为一个总结,我想实现我的应用程序作为单独的图层,前端只使用API​​ Web服务(json通过socket.io)与后端进行通信。 前端将基本上是Backbone.js(+ html5,css3,jquery),后端使用node.js(+ mongodb,express等)。 使用节点的决定是因为socket.io。 我的问题可能听起来很基本,但我仍然不明白。 在这个configuration上,是否有必要使用Express.js? 据我所知,Express.js的主要function是提供Web API和通过路由服务网页。 但是因为我想用Backbone.js作为一个SPA来构build整个前端,并且通过Socket.io来提供CRUD,所以在我的项目中需要Express.js吗? 在这个configuration上,节点服务器只会监听socket.io crud命令,对吧? 在这里,没有必要使用Express.js作为rest api服务器,对吧? 如果我只想使用Web API和实时CRUD多播操作(就像使用Socket.io一样),是否必须使用Node.js作为后端,或者我可以使用其他技术? 我希望有人能给我一些答案,并且非常感谢你的时间和支持。 编辑:自从几个月以来,我接受了一些接受答案的大问题。 我总是接受他们,但stackoverflow总是表明,我不。 我真的很感激,如果一些stackoverflow编辑可以帮助我解决这个问题。

在node.js中过度使用require(),mongoose

我是Node.js的新手,但非常喜欢模块系统和require() 。 这就是说,来自C背景,这让我不安地看到相同的模块被require()在任何地方。 总而言之,这会导致我在某些deviseselect上偏离了在C中完成的事情。例如: 我应该在每个定义mongoose模型的文件中require()mongoose吗? 或者将mongoose实例注入到定义模型的每个文件中。 我应该在每个需要它们的模块中需要require()我的mongoose模型吗? 或者有一个模型提供者被传递并用于提供这些模型。 等。 对于使用dependency injection的人来说 – 我的直觉C感觉告诉我只require()一个模块一次,并根据需要传递它。 但是,在看了一些开源的东西之后,这似乎并不是Node的事情。 require()确实让事情变得非常简单 过度使用这个机制会伤害吗?