Node.js在YunOS中的最佳实践Node.js在YunOS中的最佳实践 叶敬福 1 摘要 • YunOS: 万物互联 • YunOS选择Node.js • Node.js在YunOS中的最佳实践 – 对IO优先的Looper机制的改造和优化 – SAB + Worker机制的实践 – 性能优化的实践 2 3 万物互联 4 Cloud App应用场景化 5 CloudApp 与V8强绑定,解耦或升级很困难 (naZve调用强依赖V8接口) ? CPU密集的计算场景中存在性能问题 (单线程,事件驱动,GC效率低) ? Node.js在YunOS中的最佳实践 10 对IO优先的Looper机制的改造和优化 难点: 1. Node.js的消息循环机制完全由IO事件来驱动 2. 终端设备的场景在UI渲染及非IO任务的及时响应的需求 Node task Node.js Queue uv_async_t YunOS对Looper改造的实践 1. 系统任务与Node.js的IO任 务融合,两者地位基本平等, 系统任务优先级略高 2. 系统任务通过异步事件接 入Node.js的队列中 12 SAB + Worker机制的实践 YunOS对多任务的需求: 1. 安全沙箱对多进程的限制(不能使用多进程) 2. 实际应0 码力 | 20 页 | 1.37 MB | 1 年前3
Node 在有赞的实践Node 在有赞的实践 KK 1 • 一、Node 基础框架的迭代与演进 • 二、Node 接入有赞服务化体系的历程 • 三、未来需要做的一些事情 2 3 Koa 中间件 有⼈人(有赞的⼀一个内部管理理系统) 第⼀一个 Node 项⽬目 4 Koa 中间件 有⼈人(有赞的⼀一个内部管理理系统) 第⼆二个 Node 项⽬目 脚⼿手架模板 有赞官⽹网 50 码力 | 29 页 | 945.50 KB | 1 年前3
Egg.js 在阿里巴巴集团的的实践运用庄少/ngot 从⼑耕⽕种,铁犁⽜耕,迈向机械化⽣ 产 Egg.js 在阿⾥巴巴集团的的实践运⽤ 关于我 ▸ 庄少/ngot ▸ Egg.js 核⼼心开发者;fibjs 核⼼心开发者; ▸ Follow me at : ngot ngot Ngot_ftd ⼑耕⽕种 裸⽤社区框架 ✤ 裸⽤ koa, express 等 ✤ 各团队独⾃野蛮发展,开发规范混乱0 码力 | 29 页 | 2.39 MB | 1 年前3
Egg & Node.js 从⼩⼯坊⾛向企业级开发统⼀一的技术选型,包括基础措施,插件,模板,数据库 … ▸ 统⼀一的默认配置 / 统⼀一的部署⽅方案 / 统⼀一的约束 / … 作为团队的技术负责⼈人 框架定制能⼒力力 ▸ 『框架』是对适合 特定业务场景 的 最佳实践 的约束和封装 ▸ 便便于统⼀一团队的开发模式,⼀一致的开发体验,⼀一次性学习成本 ▸ 跟应⽤用,插件区别不不⼤大,⼀一样有 Service / Config / Extend / Middleware ⽣生态共建 完美平衡 差异化定制 渐进式 闭环 灵活 ⾃自由组装 让 P7 P8 尽情发挥实⼒力力 强约束 提供最佳实践 让 P5 P6 达到 P7 ⽔水平 应⽤用开发者 vs 团队架构师 应⽤用开发者 团队架构师 ▸ 帮业务做决定,提供最佳实践的同时,给业务⼀一定的⾃自由度。 ▸ 管⽣生还管养,整合开发,调试,测试和构建,⽀支撑研发的每⼀一个阶段。 ▸ 对开发者强约束提升研发效率。 渐进式,极具伸缩性,既适合个⼈人⼩小项⽬目快速开发,也适合企业级的团队开发协作。 ▸ Egg 的核⼼心开发者是⼀一群资深开源参与者,并拥有⼤大规模企业应⽤用的⼯工程实践经验。 ▸ 沉淀⾃自阿⾥里里各⾏行行各业不不同领域最佳实践的插件,涵盖了了常⻅见的业务开发场景,稳定⽀支撑了了 15 和 16 年年天猫双11⼤大促,顶级流量量压⼒力力。 为什什么⽤用 Egg ? ▸ ⽆无法直接对⽐比,不不是⼀一个层⾯面的概念。0 码力 | 70 页 | 7.57 MB | 1 年前3
ThinkJS 3.0 中文文档介绍 ThinkJS 是一款面向未来的 Node.js 开发框架,整合了很多最佳实践,让企业级开发变得更加简 单、高效。从 3.0 开始,ThinkJS 基于 koa 2.x,完全兼容 koa 里的 middleware 等插件。 同时,ThinkJS 支持 Extend 和 Adapter 等方式,方便扩展框架里的各种功能。 特性 支持 Middleware、Extend、Adapter0 码力 | 129 页 | 2.12 MB | 1 年前3
ThinkJS 1.2 中文文档} }) return deferred.promise } JavaScript 最佳实践 控制器基类 // App/Lib/Controller/Home/BaseController.js module.exports = Controller(function(){0 码力 | 104 页 | 1.29 MB | 1 年前3
全栈⼯程师之路 Node.jsi5ting:⼀一个开源爱好者 StuQ明星讲师 空弦科技CTO Node.js布道者 Cnodejs管理员 ⺫⽬目录 • Part 1:为什么选择 Node.js? • Part 2:Node.js快速开发实践 • Part 3:全栈展望 • Part 4: 如何全栈? Part 1:为什么选择 Node.js? 空弦科技做的是基于云仓储的 SaaS 服务,给中⼩小卖家提供服 务,核⼼心系统是进销存、订单池、WMS。 ⼩小步快⾛走,⼀一次只上⼀一样新技术; • 形成梯队,即可准备上新东⻄西; • 善⽤用 npm,实现 3 化: • 模块化、 • 最⼩小化、 • 服务化 Part 2:快速开发实践 业务边界优化 创业公司有很多可变性,要做的系统也⽆无数,如何保证业 务系统的边界是⾮非常难的,我们其实⾛走了很多弯路 静态api理论 需求 设计 后端 API App 开发 测试 交付0 码力 | 50 页 | 1.35 MB | 1 年前3
Node 的设计错误如果在导⼊入时只使⽤用相对⽂文件和 URL,则路路径将会定义版本。不不需要列列出依赖项。 遗憾:node_modules 它极⼤大地复杂化了了模块分辨算法。 默认情况下有良好的意图,但在实践中,只使⽤用 $Node_PATH 不不会排除这⼀一点。 很⼤大程度上偏离了了浏览器器语义。 这是我的错,我很抱歉。不不幸的是现在不不可能撤消。 遗憾:require("module") 没有扩展名0 码力 | 28 页 | 767.84 KB | 1 年前3
Node.js Manual & Documentationpaths list is often a troublesome source of confusion and headaches. 虽然在当时看起来这是个好注意,可以支持很多有用的实验手段。但在实践中 发现,修改 require.paths 列表往往是造成混乱和麻烦的源头。 Setting `require.paths` to some other value does nothing. 将`require people have used this as an ad hoc way to bundle dependencies, but this technique is brittle. 在实践中,有用户使用这种特别的方式来实现绑定依赖,但这种方式是很脆弱 的。 Zero Isolation 零隔离 There is (by regrettable design), only one0 码力 | 153 页 | 1.21 MB | 1 年前3
共 9 条
- 1













