V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wjx0912
V2EX  ›  Node.js

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

  •  
  •   wjx0912 · 2023-07-21 21:05:15 +08:00 · 3329 次点击
    这是一个创建于 425 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    Spring 的优势在于人才量大管饱,可能直到目前任何其他语言框架依然都没法竞争过 Spring 。
    Go 实际上是被专门设计成一种,专门用于解决企业多人合作生产痛点的“产品”,牺牲灵活性来提升开发产能。我也不认为 nestjs 能竞争过 Go 。
    chuck1in
        20
    chuck1in  
       2023-07-28 08:16:29 +08:00
    @someday3 几十个人?恐怕十几万人的用户也没问题哦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 02:09 · PVG 10:09 · LAX 19:09 · JFK 22:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.