Node.js中的微服务模块设计,希望权衡一些选择并获得更具体的示例



我们的平台:IBM Bluemix 平台、IBM Watson Conversation、SLACK 客户端。 代码部署在 Node.js 运行时中。

我们有一个简单的机器人来调解 SLACK 用户和 IBM Watson 服务之间的对话。 会话允许用户指定查询组件以从后端服务获取计费数据或成本数据。 对于小型数据集,效果很好。

我们希望机器人处理来自后端服务的较大数据集。 我们正在追求的用例: SLACK 用户与 Watson 对话交互,提供必要的查询输入,查询运行,查询结果转换为 CSV 文件(电子表格(并停放在我们提供的 BOX 内容管理器中。 作业完成后,用户会在 SLACK 中收到数据在 Box 文件中的通知,并提供链接。

作为一个新手 Node.js程序员,我对如何构建组件来处理这种类型的异步交换没有很好的掌握。 我的预感告诉我,我应该创建函数来处理离散任务:1(调用远程服务并带回数据,2(将数据包装为CSV格式,3(在BOX中创建文件,返回链接,4(通知Slack用户消息,包括指向Box中数据文件的链接。

我的研究告诉我,我应该使用Node的承诺,但不确定如何分解事物或如何"承诺"事物,以便它们按计划协同工作。 这是我应该追求的吗? 如果是这样,一个很好的简单例子将不胜感激。

如果你想按照这些步骤操作,你可以使用异步或承诺,看一个例子:

function csvFunc(params) {
return new Promise(function(resolve, reject) {
//do something CSV
});
}
function boxManager(params) {
return new Promise(function(resolve, reject) {
//do something box, create box
});
}
Promise.all([csvFunc(params), boxManager(params)]) //add the functions what you want,
.then(function(allData) { //after all functions are Ok, then....
// return the value for slack or what you want to do
console.log("All functions have perfomed")
});

最新更新