nestjs 是怎么和 spring,go(gin)这些原生支持多线程框架竞争的?

2023-07-21 21:05:15 +08:00
 wjx0912

菜鸟好奇的问下,各位大佬乱入~~~

单线程是不是只能小打小闹?

3542 次点击
所在节点    Node.js
20 条回复
makelove
2023-07-21 21:41:12 +08:00
你关心这个干嘛,一般人一辈子大概率不会拥有 node 单进程解决不了的网站,web 应用不是 cpu 密集,js 这类异步语言单线程足够满足 99.9%程序。
且人家 node 的 web 应用天生就支持多进程部署,程序都不用改。
someday3
2023-07-21 22:05:31 +08:00
一楼正解。

别动不动就多少并发的,互联网上大部分的网站根本不需要多少并发,就是一个资源转发,单进程几十个人的用户完全没问题。
humbass
2023-07-21 22:42:13 +08:00
同楼上,一般人也用不到 nestjs ,这种模仿 spring 的项目就是个伪需求。绝大多数项目只需要 express ,高级点 eggjs 就可以搞定。
dream4ever
2023-07-21 23:09:05 +08:00
新人不要太多关注这些宏大概念,先把业务摸透,把基础打扎实才是王道。
foolishcrab
2023-07-21 23:13:54 +08:00
1. 是的,小打小鬧
2. 是的,一般你也閙不大
3. 閙大了再花點小錢請幾個 JAVA crud 仔重寫
githmb
2023-07-21 23:51:16 +08:00
node.js 原生有多进程支持. 那种一个连接起一个线程的框架也没什么技术含量
IvanLi127
2023-07-21 23:52:45 +08:00
因为。。不需要考虑这个。。。跑多线程的方式那么多,框架又是支持异步和流式的,所以在这点上是无所谓的。。。

另外,他的竞争对手是 node 平台的其他框架。。。你跨到 java 和 go 上,没啥可比的
Tyaqing
2023-07-22 00:24:00 +08:00
nestjs + k8s 或者上 serverless,同样能抗住,但是谁有这么多客户.
我们业务每天差不多 1E 次调用,k8s16 个 pod 游刃有余
bybyte
2023-07-22 00:24:27 +08:00
我的理解是 现在的 web 应用几乎都是 IO 密集型,IO 密集型的程序使用多线程没有太大的优势
dcsuibian
2023-07-22 00:48:01 +08:00
IO 密集型有异步
ochatokori
2023-07-22 01:03:19 +08:00
nodejs 只是应用层面的单线程,io 本来就会在底层多线程并行。
再说现在 node 早就不是 0.x 版本了,应用层多线程多进程都原生支持好多年了
diagnostics
2023-07-22 01:33:43 +08:00
nodejs 线程模型挺厉害的,主要是好几个大佬在上面搞了高效利用线程的东西,反而 Java 这边思维固化了,虚拟线程的理念最先的实践就是 nodejs (绿色线程)
dayeye2006199
2023-07-22 08:33:38 +08:00
哪有这么多需要高并发的东西。
大部分生意,只需要把东西做出来。

性能什么的,等你需要考虑,你已经基本上不差钱来招人干这个了
tairan2006
2023-07-22 09:07:48 +08:00
跨语言竞争多少有点离谱了,nodejs 的优势也不在这
musi
2023-07-22 11:20:15 +08:00
跨语言竞争就算了,你还拿解释性语言和编译性语言竞争,你搁这降维打击呢
AyaseEri
2023-07-22 15:07:06 +08:00
到计算密集任务的时候,node 直接就挂 C++ addon 了。IO 密集那 node 的优势可太大了。
mmdsun
2023-07-22 21:29:29 +08:00
Redis 单线程为什么这么快? 和这个问题差不多。
dode
2023-07-23 10:27:42 +08:00
云原生,无服务计算呀
libook
2023-07-24 15:55:04 +08:00
对 nestjs 不了解,但对 Node 比较了解。
Node 的非阻塞 IO 只有计算部分是单线程,IO 部分是多线程的。
虽然 Node 支持多线程、多进程,但实际上微服务集群出现之后,单实例是不是多线程也没啥关系,堆集群节点数量就好了,负载均衡一分。只有真正在一个业务流程过于冗长需要多线程、多进程来优化的时候,才需要专门去做多线程、多进程设计。
特别是云原生之后,同一个微服务的集群节点都可能同时在不同服务器上,而且被动态调整。

Spring 的优势在于人才量大管饱,可能直到目前任何其他语言框架依然都没法竞争过 Spring 。
Go 实际上是被专门设计成一种,专门用于解决企业多人合作生产痛点的“产品”,牺牲灵活性来提升开发产能。我也不认为 nestjs 能竞争过 Go 。
chuck1in
2023-07-28 08:16:29 +08:00
@someday3 几十个人?恐怕十几万人的用户也没问题哦。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/958703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX