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

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);
}

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


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

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

在Route处理器调用:


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