Arch-orchestrator是Node.js流式架構指揮家

banq發表於2014-05-26
Arch-orchestrator是一個用於管理大型Node.js應用的類似SOA Orchestrator 開源的流程指揮器。

管理大型Node.js架構面臨挑戰,使用orchestrator指揮家架構模式,你能透過解耦系統中不同任務來提高你的node.js應用架構,下面是典型的使用orchestrator的架構圖:

Arch-orchestrator是Node.js流式架構指揮家
這個架構中有三個角色:
1.Route處理器:接受請求轉發到對應的orchestrator方法呼叫;

2.orchestrator指揮家:
負責將多個任務連結起來如一個職責鏈,它知道每個任務,將鏈式流處理的結果返回給Route處理器。

3.任務Task:
完成特定任務功能,Task並不知道彼此,彼此獨立松耦合,單一職責,當一個任務完成後,這個任務需要呼叫next函式將結果遞交給下一個任務,完成下一個職責,直至職責鏈的
最後一個,然後得到最後結果。

整個系統的核心是orchestrator(類似交響樂的指揮家), 這樣的架構有其強項, Orchestrator能決定改變職責鏈中的執行順序,能夠決定增加新的步驟到職責鏈中, 能決定從中刪除哪個步驟, 所有這些管理操作不會影響具體任務,因為任務是完全不知道彼此,這是完全動態的。

比如定義一些任務:

function add(next, arg) {
  return next(arg + 10);
}

function substract(next, arg) {
  return next(arg - 10);
}

function multiply(next, arg) {
  return next(arg * 10);
}

function divide(next, arg) {
  return next(arg / 10);
}
<p class="indent">

使用指揮家定義一個職責鏈的流式處理如下:

var orchestrator = require('arch-orchestrator');

function doMagic() {
  return orchestrator()
    .setNext(add)
    .setNext(multiply)
    .setNext(substract)
    .setNext(divide)
    .end();
};
<p class="indent">

在Route處理器呼叫:

function (req, res) {
  var fn = doMagic();
  console.log(fn(100));
}
<p class="indent">

相關文章