gpt4 book ai didi

node.js - Play Framework 和 Node.js 关系数据库的非阻塞行为

转载 作者:IT老高 更新时间:2023-10-28 23:11:29 27 4
gpt4 key购买 nike

Play Framework 建议将阻塞 IO 中继到适当大小的线程池,如下所示:

https://www.playframework.com/documentation/2.5.x/ThreadPools

关系数据库访问就是这种情况,因为没有可用的非阻塞 JDBC 驱动程序(少数异常(exception))

我目前正在学习 Node.JS,但我无法弄清楚它是如何在 node.js 中处理的。我没有看到任何需要考虑 Node 中的线程池的代码。

那么,node.js 中使用的关系数据库驱动程序是否能够进行非阻塞 IO?还是这些计算被转发到幕后的某种工作线程?

从更广泛的意义上说:编写非常 DB(关系)密集型 node.js 应用程序的正确方法是什么?

最佳答案

Node 是单线程的,因此没有用户线程池[1]。相反,您需要使用更多 Node 服务器进行水平扩展。您可以在 Node 应用程序中执行此操作:https://devcenter.heroku.com/articles/node-concurrency

另一方面,我在 async-JDBC-ish postgresql-async 上取得了很好的成功。司机。我用它和 jdub-asyncscalikejdbc .这是我写的关于将它与 scalikejdbc 一起使用的博客:https://www.jamesward.com/2015/04/07/reactive-postgres-with-play-framework-scalikejdbc


[1] 用户代码运行单线程(但您可以使用网络 worker 拥有线程)但是 libuv 是多线程的。阅读更多:How the single threaded non blocking IO model works in Node.js

关于node.js - Play Framework 和 Node.js 关系数据库的非阻塞行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36830318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com