这是我参与第四届青训营笔记创作活动的第五天
Node 公开宣称的目标是
旨在提供一种简单的构建可伸缩网络程序的方法
Node.js是什么?
Node.js不是一种独立的语言,也不是一个JavaScript的[框架](Node.js只是一个让JavaScript运行在浏览器之外的平台。
node.js 运行时的框架 V8和libuv V8:JavaScript的调试器 libuv:事件循环 Node.js运行时结构的特点 1.异步I/O:执行I/O操作的时候,会在响应返回后回复操作,不需要阻塞线程的执行,不会有额外的内存占用(可以干其他事,不用同步等待,系统资源利用率高) 2.单线程:指的是js主线程是单线程,js线程+uv线程池+V8任务线程池+V8Inspector线程;优点:不用考虑多线程状态同步问题,不用锁机制,能够比较高效的利用资源;缺点:阻塞会产生更多负面影响,可用多线程来解决 3.跨平台:node.js跨平台,JS无需编译环境,学习成本和开发成本就会比较低 编写HTTP Server 部署要解决的问题 1.守护进程:当进程退出时,重新拉起 2.多进程:cluster便捷利用多进程 3.记录进程状态,用于诊断 容器环境下,通常有健康检查手段,只需要考虑多核CPU利用率即可 了解node.js的代码,并且尝试着去为代码做出一些贡献,可以让自己对底层更加了解,可以起到自我证明,有助于职业发展,可以解决社区问题,促进社区发展。
优点:Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,异步编程,使其轻量又高效,因为单线程,所以不用锁机制。
缺点:单进程,单线程,只支持单核cpu,不能充分的利用多核cpu服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。