高负载应用的最佳节点 ORM 模块

Posted

技术标签:

【中文标题】高负载应用的最佳节点 ORM 模块【英文标题】:Best node ORM module for high load application 【发布时间】:2016-03-29 04:46:20 【问题描述】:

我正在开发一个负载非常高的 node.js 应用程序(每秒有数千个请求),我希望有高负载 node.js 应用程序和 ORM 模块经验的人的建议。

我将node-orm2 用于较小的项目,但我不知道在这种情况下这是否是正确的选择。

该应用每秒需要数千次数据库读取/写入,我想使用一个 ORM 模块,该模块可在任何服务负载下提供最佳性能。

我将使用 PostgreSQL 作为数据库。

【问题讨论】:

我不知道性能,但sequelize 是 nodejs 环境中最常用的 ORM 之一。你可以做一个基准测试。 ORM-s 通常很慢。如果您想要最佳性能,请不要使用任何。您需要一个可以轻松优化以实现高性能且易于使用的框架,例如 pg-promise。 @vitaly-t 我可以看出你是 pg-promise 的创造者。优化是什么? @karuzo 对于初学者来说,这是:Performance Boost - 最重要的优化之一,你甚至无法使用 ORM-s, - 减少 IO 交互,因此必须处理非常高负载。 @vitaly-t 所以,如果我理解你的文章,我基本上需要尽可能加入查询,避免使用不必要的查询。对吗? 【参考方案1】:

我不确定在高负载下使用 orm 是否是个好主意。

最近,我在高负载节点项目上尝试了几种不同的 orms 和数据库,并得出结论,最好的方法是使用像 Redis 和像 ioredis 这样的 npm modul。

作为一种选择,您可以使用不同的数据库进行常规和高负载操作。例如,带有 sequelize 的 PostgreSQL 用于常规操作,以及一些 NoSQL(如 Redis)用于高负载。

并且,如果可能的话,尽量缓存结果或避免数据基础请求。

如果您找到其他解决方案,请告诉我,因为这对我来说是一个非常重要的问题。

【讨论】:

以上是关于高负载应用的最佳节点 ORM 模块的主要内容,如果未能解决你的问题,请参考以下文章

什么是高插入负载的最佳 mysql 表格式?

lvs+keepalived实现高可用负载均衡

haproxy+keepalived实现高可用负载均衡web集群

LVS负载均衡群集(LVS-NAT)

云原生应用负载均衡系列 : 入口流量分发容错与高可用调度

keepalived高可用负载均衡器