在两个NodeJS微服务之间共享自定义代码

我正在为该应用程序创buildWeb应用程序和micorservice,并且都需要使用Sequelize创build相同的数据库模型。 用NodeJS来处理这个任务的方法是什么?

我正在考虑创build我的数据库模型的单独模块,并将其保存在私有混帐中,并将此私有混帐添加到我的Web应用程序和微服务中,作为npm依赖项。

但我想知道是正确的方法或什么是正确的方式来分离less数微服务之间的共享私人模块,在我的情况下,它是数据库模型? 我应该干还是不干?

提前致谢!

没有关于微服务的规定,代码不应该被重用。 事实上,说明DRY在微服务方面是错误的,这是很危险的。 相反,您应该提出以下问题: Will the shared code be a separate module with a dedicated purpose that rectifies a separately managed lifecycle and releases? 如果是的话,你一定要重新使用它作为一个单独发布的模块 – 类似于你将如何重用任何第三方库。 这可以确保在共享代码和微服务之间没有很强的耦合,因为每个微服务团队都可以自行决定是否想要保留模块的特定发行版或升级到新版本。 你想避免的是一个依赖,迫使你改变你的微服务时,重用库改变(避免连锁反应)。

还有一件事 – 因为你提到它是与数据库相关的模式,所以你必须提出另一个问题: Will the schemas being reused in separate DBs or will they refer to the same physical DB in the end? 。 如果他们最终将使用共享数据库,则实际上将两个微服务紧密耦合,因此他们应该被认为是同一服务的一部分,而不是单独的。

我觉得这是多达我可以说,不知道更多关于你的服务和目标。

您不应该在微服务中使用DRY 。 想一想使用它们的好处之一:你可以随时用其他堆栈replace一个微服务( PHP + Apache ),系统不会在乎,只要它遵守合同。

您可以在这里阅读更多,第59页, DRY and the Perils of Code Reuse in Microservices World