Arch-orchestrator是Node.js流式架构指挥家

14-05-26 banq

Arch-orchestrator是一个用于管理大型Node.js应用的类似SOA Orchestrator 开源的流程指挥器。

管理大型Node.js架构面临挑战,使用orchestrator指挥家架构模式,你能通过解耦系统中不同任务来提高你的node.js应用架构,下面是典型的使用orchestrator的架构图:

这个架构中有三个角色:

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>

使用指挥家定义一个职责链的流式处理如下:

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

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

在Route处理器调用:

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

                   

1