yangguang0813

Results 2 issues of yangguang0813

## 1. fork模式 fork模式使用最基本的进程运行方式,只是单实例运行server,无法实现TCP连接共享;好处是可以修改exec_interpreter,使用pm2运行js之外的语言,例如``php``或者``python`` ```javascript pm2 --interpreter [bash|python|...] ``` ## 2. cluster模式 利用[Node.js Cluster模块](https://nodejs.org/api/cluster.html)实现,只能用于启动``node``进程,无法应用于其他语言。可以启动多个server实例,并在各个实例之间实现负载均衡而且共享TCP连接,可以提升服务器的响应性能。 ### 2.1 node.js cluster模块简介 cluster用于运行一些可以共享TCP连接的worker进程,首先创建一个master进程,随后根据设置的次数fork出相应的workers,master和workers通过进程间通信([IPC](https://zh.wikipedia.org/wiki/%E8%A1%8C%E7%A8%8B%E9%96%93%E9%80%9A%E8%A8%8A))实现TCP句柄等数据交换,cluster模块自带负载均衡,默认使用Round-Robin算法实现,master监听TCP端口,并根据RR算法将请求交给钦定的worker进行处理。 cluster代码实现: ```javascript const cluster = require('cluster'); const http = require('http'); const...

Node.js
Cluster
Fork

## 背景 由于React 16之前版本仍然存在法务风险,需要将略懂使用的React升级至16.0.0来规避此问题。这篇文章主要介绍如何从React 15或之前的版本升级至16.0.0。 ## React 16的新特性 * render方法可以返回数组或者字符串,而非像之前只能返回单一DOM节点; * [Error boundaries](https://reactjs.org/blog/2017/07/26/error-handling-in-react-16.html),错误边界,可以捕获到发生在子组件树中的异常,打印输出错误信息,并且返回一个用于提示发生错误的UI页面,而非像之前那样整个组件树崩溃; * `React.createPortal()`向一个DOM节点中render子树; * 流式服务端渲染`ReactDOMServer.renderToNodeStream()` and `ReactDOMServer.renderToStaticNodeStream()` * 其他特性以及API变动可见[React v16.0.0](https://github.com/facebook/react/releases/tag/v16.0.0) ## React 16的环境依赖 React 16依赖ES6中Collection类型[Map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map)和[Set](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set),低版本浏览器(比如IE9)中没有支持对应的类型,需要在全局下引入core-js或者babel-polyfill。全量引入polyfill体积较大,在确认了代码中使用到的ES6新特性后,使用了自定义的[arr_obj_map_set_prms.min.js](http://cache.soso.com/wenwen/deploy/js/babel_ployfill/customized/arr_obj_map_set_prms.min.js),包含目前略懂使用到的`Array`,`Object`,`Map`,`Set`以及`Promise` js体积对比见表格: js体积对比| babel-polyfill...