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

请教关于项目结构的问题(技术选型角度)

  •  
  •   andy0620 · 2016-12-06 12:37:01 +08:00 · 2429 次点击
    这是一个创建于 2669 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位大神早~ 小的有件事没想通,还望神们指点一二

    node 因为单线程,因此也就有了非阻塞事件驱动的优势

    然而又因为单线程,复杂的计算不能放到 node 里,也就有了下一级的环境专门来做计算,比如用 java 啊, python 啊什么的

    拿 java 举例子吧,到了 java 这里不又是多线程了么, node 单线程省下来的内存占用在这边又回来了,那这时候 node 的存在价值体现在哪里?

    (虚心请教贴 :P

    9 条回复    2016-12-10 21:05:15 +08:00
    tianzx
        1
    tianzx  
       2016-12-06 12:46:00 +08:00 via Android
    前后端分离啊,节省人力成本
    andy0620
        2
    andy0620  
    OP
       2016-12-06 13:07:28 +08:00
    @tianzx 那为什么不去掉 node ,直接用 java ?
    区别在哪里?
    xxxyyy
        3
    xxxyyy  
       2016-12-06 13:08:55 +08:00 via Android
    你选 node 是为了省内存吗?
    misaka19000
        4
    misaka19000  
       2016-12-06 13:11:05 +08:00 via Android
    @andy0620 都选 node 了,还要啥自行车啊
    winglight2016
        5
    winglight2016  
       2016-12-06 13:57:46 +08:00
    项目规模和行业不同,会导致架构选型不同,所以中小项目选择单一技术架构保证开发人员和技术的稳定性,大型项目就需要考虑多团队合作和长期维护成本的问题,这样就会采用前后端分离、微服务、多种技术架构等方案利用各自的优点。没有一种技术方案能解决所有问题——简单说,没有银弹。
    kanezeng
        6
    kanezeng  
       2016-12-06 14:07:44 +08:00
    在这里的话, Node 就更像一个统一的 api 的网关,这样前端只需要和 node 打交道,然后具体的业务由 node 去找后端的实现,后端可以根据业务特点选择最适合的实现方式。
    tianzx
        7
    tianzx  
       2016-12-06 16:02:33 +08:00 via Android
    @andy0620 可以啊,问题在于人力成本,不在于机器成本,前后端分离后可以并行开发
    Xinghx
        8
    Xinghx  
       2016-12-07 11:04:09 +08:00
    node 是解决高 IO 并发的~ 计算肯定是不行的,借用楼上的话 还要啥自行车
    yunshansimon
        9
    yunshansimon  
       2016-12-10 21:05:15 +08:00
    粗略的说, node 相当于 nginx+phpfpm+php+swoole 扩展的功能。效率要比 nginx 们高,因为少了一环进程间通信。还因为能更好的配合 nosql ,例如 mongodb ,不用转换,因为本身 mongodb 输出的就是 json 对象。 node 本身可以支持多进程, php+swoole 也可以支持多进程,但两种编程难度, swoole>>node ,因为 php 本身根本没有进程或 context 概念,一个对象的方法可能在不同进程中调用,经常把人搞晕(主要是我水平低)。 java 本身有多进程和多线程概念,但 java 需要 10 倍以上的代码来解决相同的问题。最后, node 本身的 stream 概念非常适合处理大流量数据,或对网络功能进行扩展和修改(只要修改流向,或者在下游增加流处理器就可以,根本不用改原来的代码)。这样的能力, php 完全没有, java 有,但需要从底层代码写起。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3433 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 11:13 · PVG 19:13 · LAX 04:13 · JFK 07:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.