Node源码解析——http(上)
网络模块的最后一系列文章,就看看基于tcp之上的一些网络模块实现,因为已经有了阅读net模块的基础,看这个部分应该会好理解很多。
网络模块的最后一系列文章,就看看基于tcp之上的一些网络模块实现,因为已经有了阅读net模块的基础,看这个部分应该会好理解很多。
源码阅读最好遵循一个从架构到细节的流程。现在我们已经了解了node的整体架构以及模块间的职责划分。接下来可以再深入一步,看看node内部模块间又有怎样的区别和联系。这篇文章就从之前写过的代表tcp的net的平行模块入手——udp相关模块。
继续看Bootstrap第二步。如果第一步概括为内部模块初始化,这一步就是node环境初始化。包括process对象上的属性,一些全局对象或方法等,以及正式执行我们的JS代码并解析三方模块依赖。
之前谈到了node在启动时会调用run方法,在其中有一个env准备的过程,这个过程中做了大量的bootstrap工作。但从总的层面可以分为两步,其一就是这篇文章谈到的内容——BootstrapInternalLoaders,在这一步主要完成了built-in模块和native模块的准备工作。下面就进入源码看细节吧。
终于通关了《AI: 梦境档案》,听说卖得不好。情有可原,18X和高定价avg的标签注定了它的小众,但就我而言觉得很值,我应该属于这类游戏的受众,随便无剧透的聊聊关于这款游戏的一切。
音乐每个人都听,不过不知道你是否有过这样的疑惑:为什么大部分的流行歌都要重复两遍?这篇文章读完应该能搞懂这个问题。
因为接下来分析的stream模块和dns等网络模块等都涉及到很多libuv的知识,这部分不是node内部的JS代码,前端同学不一定熟悉。想了想有必要先谈谈Node的整体架构,毕竟Node内部的构成还是比较复杂且有序的,把这些理清才能更有层次的阅读源码。
上篇文章涉及到了net这个在node中构建异步网络的模块,也是node里很重要的基础模块,这篇文章就来把net搞清楚。
因为做音乐涉及很多方面,作曲编曲混音等等,不同的路线的工作台偏重的工具其实有区别。当初自己在这方面信息的查询上也费了不少功夫,索性自己写个介绍,也方便小伙伴们入坑。这篇文章也鸽了好久,今天能产出还是因为这个肺炎。虽然肺炎是坏事,但能让我强制宅在家里,反而还能趁这些天把之前欠下的几篇博客补上来,也算是苦中作乐。感谢阿b的人文关怀,把假期延长到2月10号够我宅到爽,最近我的博客应该会比较高产了。
Node自诞生起就以其非阻塞式IO和事件驱动的特性闻名,基于此的实现下,常规node应用的代码执行都是单线程的。虽然单线程的好处不少,但在目前普遍都是多核CPU的环境下,单线程无法充分利用其性能。同时,单线程模式下的容错率过低,一旦异常未捕获应用就会崩溃。以此为背景,就诞生了今天要谈到的node内置模块——cluster。