Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.an asynchronous event-driven JavaScript runtime
——nodejs.org
NIO也需要多进程(线程),why?
使用多个进程,尽可能压榨机器性能(且很少有单核实例)
在多进程中,所有进程同时挂实例才挂,稳定性数量级提高
单核瓶颈 -> 多核
单机瓶颈 -> 集群
child_process,介于上述两者之间,不常用
这次主题是多进程服务,下面详细讲下cluster的工作流程
Node.js 的单个实例在单个线程中运行。 为了利用多核系统,用户有时会想要启动 Node.js 进程的集群来处理负载。
集群模块可以轻松创建共享服务器端口的子进程。
面向场景:server
面向协议:tcp(http) & udp
两种算法:rr & share
进程fork、server启动&worker注册
连接分发
RR算法(1)
RR算法(2)
算法选择(1)
算法选择(2)
Node.js官方通过cluster模块提供了多进程服务的底层能力。在多进程的场景下,容错能力提高的同时,出错概率也潜在的大大提高,这时候需要社区的其他优秀工具来帮助开发者在生产环境更好的部署多进程服务。下面详细讲
node源码中的方法定义:
在ProcessContainer中:
生成的自启动文件
mac平台自启动模板
保存的所有进程信息
“底层”问题冲击
https://www.cnblogs.com/JulianHuang/p/12568814.html
docker-compose:单机水平多实例扩展
https://www.cnblogs.com/JulianHuang/p/12568814.html
docker-compose:单机水平多实例扩展
k8s:分布式集群
https://kubernetes.io/docs/tutorials/kubernetes-basics/