欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

node后端服務(wù)?;畹膶?shí)現(xiàn)

 更新時(shí)間:2019年11月10日 09:28:06   作者:求實(shí)亭下  
這篇文章主要介紹了node后端服務(wù)?;畹膶?shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

引言

目前的項(xiàng)目中使用了node,作為一個(gè)簡單的后端服務(wù),隨著承擔(dān)著越來越多的線上業(yè)務(wù)的服務(wù),就要求了服務(wù)端的穩(wěn)定性,而其中最重要的一點(diǎn)就是服務(wù)?;?。有進(jìn)程終止后自動(dòng)重啟的能力。

forever

forever是一個(gè)簡單的命令行工具,他能確保一個(gè)給定的腳本持續(xù)運(yùn)行。forever完全基于命令行操作,在forever進(jìn)程之下,創(chuàng)建node的子進(jìn)程,通過monitor監(jiān)控node子進(jìn)程的運(yùn)行情況,一旦文件更新,或者進(jìn)程掛掉,forever會(huì)自動(dòng)重啟node服務(wù)器,確保應(yīng)用正常運(yùn)行。

所以就看一下forever的項(xiàng)目吧。主要的進(jìn)程控制方面的代碼地址。

start方法

let child_process = require('child_process')
let spawn = child_process.spawn

Monitor.prototype.start = function (restart) {
 var self = this,
   child;

 child = this.trySpawn();

 ...
 return this;
};
Monitor.prototype.trySpawn = function () {
 var run = this.parser(this.command, this.args.slice()),
   stats;

 return spawn(run.command, run.args, this.spawnWith);
};

核心就是使用了node api 中的 spawn,創(chuàng)建子進(jìn)程,這個(gè)子進(jìn)程就是我們真正的需要運(yùn)行的node端服務(wù)。

自動(dòng)restart

父子進(jìn)程的通信核心就是為了?;?,主要就是監(jiān)聽了子進(jìn)程,也就是需要被守護(hù)進(jìn)程的exit事件

 child.on('exit', function (code, signal) {
  var spinning = Date.now() - self.ctime < self.minUptime;
  child.removeListener('message', onMessage);
  self.emit('exit:code', code, signal);

  function letChildDie() {
   self.running = false;
   self.forceStop = false;
   self.emit('exit', self, spinning);
  }

  function restartChild() {
   self.forceRestart = false;
   process.nextTick(function () {
    self.start(true);
   });
  }

  self.times++;

  if (self.forceStop || (self.times >= self.max && !self.forceRestart)
   || (spinning && typeof self.spinSleepTime !== 'number') && !self.forceRestart) {
   letChildDie();
  }
  else if (spinning) {
   setTimeout(restartChild, self.spinSleepTime);
  }
  else {
   restartChild();
  }
 });

邏輯很簡單,分別兩個(gè)場景,一個(gè)是希望子進(jìn)程不要再啟動(dòng),一般就是外部控制殺死的;一個(gè)是意外退出后的重啟,此處與一個(gè)spinning值的判斷,也就是在退出后存在一個(gè)重啟的時(shí)間間隔。

父子進(jìn)程通信

message事件來監(jiān)聽,用send方法來發(fā)送事件,父子進(jìn)程通信就可以用做外部的控制的實(shí)現(xiàn)了。這里我們還需要注意一個(gè)細(xì)節(jié),就是node后端服務(wù)運(yùn)行中會(huì)輸出很多的日志,此時(shí)放在子進(jìn)程中的控制臺(tái)輸出,如果希望暴露出來就可以使用options.stdio屬性。

總結(jié)

保活的場景很多,這里可以使用forever庫來處理,配合監(jiān)控和日志功能,更好的保證線上環(huán)境的穩(wěn)定。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Node.js的Web模板引擎ejs的入門使用教程

    Node.js的Web模板引擎ejs的入門使用教程

    ejs是Node世界的開源模板引擎中比較有人氣的一個(gè),而且并不只是在Express框架中才可以使用,今天為大家?guī)鞱ode.js的Web模板引擎ejs的入門學(xué)習(xí)教程,其中側(cè)重于ejs的layout頁面布局放面
    2016-06-06
  • 安裝Node.js并創(chuàng)建Web程序

    安裝Node.js并創(chuàng)建Web程序

    這篇文章介紹了安裝Node.js并創(chuàng)建Web程序的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 使用PM2實(shí)現(xiàn)高效的應(yīng)用監(jiān)控與管理功能

    使用PM2實(shí)現(xiàn)高效的應(yīng)用監(jiān)控與管理功能

    PM2?是一個(gè)流行的進(jìn)程管理器,用于?Node.js?應(yīng)用程序,它支持應(yīng)用程序的負(fù)載均衡、自動(dòng)重啟、日志管理、監(jiān)控以及多環(huán)境管理等功能,本文給大家介紹了如何使用PM2實(shí)現(xiàn)高效的應(yīng)用監(jiān)控與管理功能,需要的朋友可以參考下
    2024-02-02
  • node獲取客戶端ip功能簡單示例

    node獲取客戶端ip功能簡單示例

    這篇文章主要介紹了node獲取客戶端ip功能,結(jié)合實(shí)例形式分析了node.js獲取客戶端IP地址的原理與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2019-08-08
  • 通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法

    通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法

    今天小編就為大家分享一篇通過nodejs 服務(wù)器讀取HTML文件渲染到頁面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • node.js插件nodeclipse安裝圖文教程

    node.js插件nodeclipse安裝圖文教程

    這篇文章主要為大家分享了node.js插件nodeclipse安裝圖文教程,如何安裝node.js支持插件,下面小編為大家分享具體步驟
    2016-05-05
  • 用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox)

    用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox)

    這篇文章主要介紹了用純Node.JS彈出Windows系統(tǒng)消息提示框?qū)嵗?MessageBox),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-05-05
  • node簡單實(shí)現(xiàn)一個(gè)更改頭像功能的示例

    node簡單實(shí)現(xiàn)一個(gè)更改頭像功能的示例

    本篇文章主要介紹了node簡單實(shí)現(xiàn)一個(gè)更改頭像功能的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-12-12
  • Node.js實(shí)現(xiàn)Excel轉(zhuǎn)JSON

    Node.js實(shí)現(xiàn)Excel轉(zhuǎn)JSON

    本文給大家記錄的是個(gè)人項(xiàng)目中遇到的,使用node.js實(shí)現(xiàn)Excel轉(zhuǎn)換成Json的方法和過程,十分的簡單實(shí)用,也很詳細(xì),這里推薦給有需要的小伙伴參考下。
    2015-04-04
  • 淺談如何把Node項(xiàng)目部署到服務(wù)器上

    淺談如何把Node項(xiàng)目部署到服務(wù)器上

    本文主要介紹了淺談如何把Node項(xiàng)目部署到服務(wù)器上,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02

最新評(píng)論