
1 noe132 2020-08-29 12:29:29 +08:00 via Android node 天生异步,大部分公司的业务都是 io 操作,基本很少有需要长时间占用 cpu 的业务。大家的业务基本上就是写写数据库 反倒是很多 python 写出来的后端不用协程多进程,在接口里做同步 io 数据库操作,一个请求阻塞全局 gil,并发测试响应时间上天 |
2 dushixiang node js 搭配 python 用,也是鬼才^_^ |
3 simple2025 2020-08-29 12:46:56 +08:00 加密, |
4 simple2025 2020-08-29 12:47:54 +08:00 但是这种情况下 python 更慢,蛇日的 python 好慢呀 |
5 dcalsky 2020-08-29 12:51:50 +08:00 via Android 用 node canvas 画图返回,python 的 pillow 太慢了。 |
6 ragnaroks 2020-08-29 12:52:42 +08:00 minecraft 服务端? 另外不要为了 node 而 node |
7 black11black 2020-08-29 13:08:24 +08:00 @noe132 有原生 IO 复用不用,非得写同步逻辑,实属倔强的公司 |
8 foam 2020-08-29 13:12:53 +08:00 via Android 图片处理,sharp 库了解一下,用的 libvips |
9 TypeError 2020-08-29 13:17:13 +08:00 via Android Python 跑 CPU 密集型的可以用进程池,node 应该也有类似的吧 |
10 whitehack 2020-08-29 13:22:21 +08:00 node 有 work_thread 库.cpu 密集已经不是短板了 |
11 hallDrawnel 2020-08-29 13:29:27 +08:00 很多是 node 做不好或者就直接不做不了的 CPU 密集的任务,比如: 直播视频流动态编码类型多马率、多编码的转码,要求实时,且 IO 不是瓶颈。 实时模型推理,实时排序等,主要是计算,尤其是涉及 CV 和 NLP,还有图计算的。 游戏服务器,比如帧同步模块,无锁队列(游戏的队列,比如组队、进服务器等)模块,必须在给定时间内算完,且数据一般都在同一个进程里,只有少部分数据会异步落盘。 以及数据的复杂处理等,这个看业务了,比如对大量的 data point 用特定的算法做 sampling 。 |
12 bashbot 2020-08-29 15:08:21 +08:00 一般遇到 CPU 密集型场景优先考虑用 C 实现,而且不会要求实时。要求实时要么堆硬件要么并发稳定,不然来个高并发波动 CPU 资源超限直接就任务超时了。 之前做过三个计算任务场景,一个是 CAD 文件解析绘图,一个是视频转码,还有个自然语言处理,前两个是用消息队列提交到任务中心排队的,最后一个控制并发量多买机器。 架构上设计好了,用不用 node.js 其实不重要,任务处理用 nodejs,java,python,C++随便什么写都可以,经常混合的。刚开始规模不大的话性能差个一两倍直接堆硬件就完了,后期有规模了才会优化。 |
13 wwqgtxx 2020-08-29 15:43:08 +08:00 via iPhone @noe132 请问一下贵公司使用的是哪个垃圾 python 的数据库驱动,做数据库操作居然不会释放 gil 锁 |
14 otakustay 2020-08-29 16:49:28 +08:00 比如 webpack build,就是一个典型的计算密集型 |
15 dustinth 2020-08-29 17:12:44 +08:00 node.js 的强项是前后端可以用同一技术栈. 弱项是后端生态不完善, 第三方库质量参差不齐. CPU 密集型不合适我理解主要是指一些极端场景效率不高(但是我极度怀疑这些极端场景会用 node.js 来实现). 实时返回不代表要同步处理或者要在 node.js 层面处理, node.js 很多逻辑天生都是异步的, 放到 worker 中处理即可. |
16 foxkiller 2020-08-30 01:58:43 +08:00 MCTS |