当前位置: 首页 > news >正文

HTML网站页面建设搜索引擎优化的完整过程

HTML网站页面建设,搜索引擎优化的完整过程,建设网站郑州,泗阳做网站设计什么是 Node 多进程? Node 是在单个线程中运行,我们虽然没办法开启额外的线程,但是可以开启进程集群。这样可以让下载任务和上传任务同时进行。 使用多进程进行初步代码优化 const dl require(./download.js) const ul require(./upload…

什么是 Node 多进程?

Node 是在单个线程中运行,我们虽然没办法开启额外的线程,但是可以开启进程集群。这样可以让下载任务和上传任务同时进行。

使用多进程进行初步代码优化

const dl = require('./download.js')
const ul = require('./upload.js')
const source = require('./source.js')async function runTask() {const { originUrl, targetUrl } = source.getNext()const { data } = await dl(originUrl)await ul(targetUrl, data)runTask()
}runTask()

这个代码逻辑上是没问题的,但是它只能在 1 个 CPU 核心中运行。

我们完全可以使用 Node.js 的多进程来利用 CPU 的多核心来增加这个程序的吞吐量。

怎么改造呢?

也非常简单。

const os = require('os')
const cluster = require('cluster')
const dl = require('./download.js')
const ul = require('./upload.js')
const source = require('./source.js')function run() {if(cluster.isMaster) {const numCPUs = os.cpus().length;for(let idx = 0; idx < numCPUs; idx++) {cluster.fork();}} else {runTask()}
}async function runTask() {const { originUrl, targetUrl } = source.getNext()const { data } = await dl(originUrl)await ul(targetUrl, data)runTask()}
}run()

在上面的代码中,我添加了 os 和 cluster 模块。os 模块可以告诉我们运行环境的 CPU 信息,我们可以通过它来做为创建进程数量的限制条件。然后通过 cluster.isMaster 来判断是否是主进程,因为只有主进程才拥有 fork 的能力。

worker 和 master 通信

其实上面的代码还可以继续做更深层次的优化,仔细分析一下,下载速度和上传速度其实是不一致的。通常来说,下载速度会很慢,但上传速度会很快。我们可以让其他进程去下载文件,当下载成功之后,让主进程去上传文件。
Node 中的多进程之间不会共享内存,所以我们可以通过消息传递的方式,让下载进程通知主进程去上传文件。

const os = require('os')
const cluster = require('cluster')
const dl = require('./download.js')
const ul = require('./upload.js')
const source = require('./source.js')function run() {if(cluster.isMaster) {const numCPUs = os.cpus().length;for(let idx = 0; idx < numCPUs; idx++) {const worker = cluster.fork();worker.on('message', ({ targetUrl, data }) => {ul(targetUrl, data)})}} else {runTask()}
}async function runTask() {const { originUrl, targetUrl } = source.getNext()const { data } = await dl(originUrl)process.send({ targetUrl, data })runTask()
}run()

可以在主进程中通过 worker.on(‘message’, (msg)=>{}) 的方式来监听子进程发送的消息。在子进程中通过 process.send 来向主进程发送消息。

总结

在 NodeJS 中使用多进程非常简单,合理使用多进程,可以解放硬件的能力,让软件的运行效率得到肉眼可见的提升。

http://www.yidumall.com/news/108187.html

相关文章:

  • wordpress本地打开网络优化工程师有前途吗
  • 十堰秦楚网论坛十堰城事网站seo入门基础教程
  • 建立百度网站百度搜索榜单
  • 做网站需要投资多少钱南昌关键词优化软件
  • 免费网站模板网站互联网平台推广怎么做
  • 外贸销售网站有哪些网络营销课程培训
  • 网站设置反爬虫的常用方法有哪些公司网络推广该怎么做
  • 做网站卖广告多少钱营销策划公司
  • 温州做网站建设公司seo积分优化
  • qq头像网站源码百度竞价排名规则
  • 广州网站建设鞍山近期国际新闻20条
  • 用dw做网站的菜单栏免费的seo网站下载
  • 网站开发建设价格西地那非片说明书
  • 青岛网站快速备案慈溪seo排名
  • 东莞做网站 南城石佳alexa排名
  • 单位门户网站建设的请示厦门seo排名优化公司
  • 做网站维护费是怎么算的企业策划方案怎么做
  • 网站栏目做跳转后不显示推广平台下载
  • 哪些网站属于b2b平台百度推广平台登录网址
  • 苏州市建设局招标网站it培训机构口碑排名
  • 个人网站欣赏西安seo搜推宝
  • 摄影师网站推荐百度开发者平台
  • 做企业网站怎么收费的google seo优化
  • 获取网站全站代码网络舆情分析研判报告
  • 企业网站建站系统良品铺子网络营销策划书
  • 多域名指向同一网站百度下载软件
  • 企业网站建设有几种形式电商数据统计网站
  • 中国百强城市榜单排名seo排名快速优化
  • 中国建设银行预约网站首页成都网站推广
  • 淄博张店外贸建站公司深圳网站营销seo费用