【发布时间】:2017-09-15 20:22:11
【问题描述】:
我目前正在 NodeJs 中开发微服务架构。我的第一种方法是每个服务一个package.json。虽然,对于所有微服务,访问公共区域(使用日志记录或数据库实用程序)时可能非常棘手。例如:
common-area >
logger.js
package.json - install module typeorm
service1 >
app.js - use logger.js
package.json - also install module typeorm
在运行node app.js(服务 1)时,我们最终会加载 2 个 typeorm 模块,一旦我们进行了两种不同的安装,一个在公共区域(由记录器使用),另一个在 service1。
我是否应该为所有微服务只使用一个package.json,导致只有一个node_modules 文件夹?
【问题讨论】:
-
如果你在这里使用微服务,我不会。每个服务都应该是隔离的,通常通过队列(RabbitMQ、Kafka)或删除请求(HTTP、RPC)进行通信。这看起来像您在
service1中加载logger“服务” - 这违背了这种做法。我认为您的logger.js是在其他服务中重用的模块,而不是服务。也许将其发布为私有节点包? - 我可能完全误解了,所以如果我错了,请纠正我。 -
你是对的。
Logger.js不是服务,只是一个通用模块,所有服务都使用。发布为私有节点包似乎是个好主意 :) 谢谢
标签: node.js microservices